13 LayerRange(
const json &j);
15 json serialize()
const;
17 LayerRange() : m_start(10000), m_end(10000){};
19 LayerRange(
int aStart,
int aEnd)
22 std::swap(aStart, aEnd);
28 LayerRange(
int aLayer)
30 m_start = m_end = aLayer;
33 LayerRange(
const LayerRange &aB) : m_start(aB.m_start), m_end(aB.m_end)
37 LayerRange &operator=(
const LayerRange &aB)
44 bool overlaps(
const LayerRange &aOther)
const
46 return m_end >= aOther.m_start && m_start <= aOther.m_end;
49 bool overlaps(
const int aLayer)
const
51 return aLayer >= m_start && aLayer <= m_end;
54 bool is_multilayer()
const
56 return m_start != m_end;
69 void merge(
const LayerRange &aOther)
71 if (m_start == 10000 || m_end == 10000) {
72 m_start = aOther.m_start;
77 if (aOther.m_start < m_start)
78 m_start = aOther.m_start;
80 if (aOther.m_end > m_end)
84 std::optional<LayerRange> intersection(
const LayerRange &other)
const
87 return LayerRange{std::max(m_start, other.m_start), std::min(m_end, other.m_end)};
92 bool operator==(
const LayerRange &aOther)
const
94 return (m_start == aOther.m_start) && (m_end == aOther.m_end);
97 bool operator!=(
const LayerRange &aOther)
const
99 return (m_start != aOther.m_start) || (m_end != aOther.m_end);
102 bool operator<(
const LayerRange &aOther)
const
104 return std::make_pair(m_start, m_end) < std::make_pair(aOther.m_start, aOther.m_end);
107 bool operator>(
const LayerRange &aOther)
const
109 return std::make_pair(m_start, m_end) > std::make_pair(aOther.m_start, aOther.m_end);