53 else if( aLayer ==
In1_Cu )
56 aLayer =
static_cast<int>( aLayer ) - 2;
66 else if( aLayer ==
F_Cu )
69 aLayer =
static_cast<int>( aLayer ) + 2;
85 if( start & 1 || stop & 1 )
86 throw std::invalid_argument(
"Only works for copper layers" );
126 if( start & 1 || stop & 1 )
127 throw std::invalid_argument(
"Only works for copper layers" );
139 static bool Contains(
int aStart_layer,
int aEnd_layer,
int aTest_layer )
144 if( aTest_layer ==
B_Cu )
145 aTest_layer = INT_MAX;
147 if( aStart_layer ==
B_Cu )
148 aStart_layer = INT_MAX;
150 if( aEnd_layer ==
B_Cu )
151 aEnd_layer = INT_MAX;
153 if( aStart_layer > aEnd_layer )
154 std::swap( aStart_layer, aEnd_layer );
156 return aTest_layer >= aStart_layer && aTest_layer <= aEnd_layer;
178 return static_cast<int>( aLayer ) / 2 - 1;
181 int start = ordinal(
m_start );
182 int stop = ordinal(
m_stop );
184 return static_cast<size_t>(
std::abs( start - stop ) + 1 );
PCB_LAYER_ID operator*() const
bool operator==(const LAYER_RANGE_ITERATOR &other) const
LAYER_RANGE_ITERATOR operator++(int)
bool operator!=(const LAYER_RANGE_ITERATOR &other) const
LAYER_RANGE_ITERATOR & operator++()
int next_layer(int aLayer)
std::bidirectional_iterator_tag iterator_category
std::ptrdiff_t difference_type
LAYER_RANGE_ITERATOR(PCB_LAYER_ID start, PCB_LAYER_ID stop, int layer_count)
static bool Contains(int aStart_layer, int aEnd_layer, int aTest_layer)
LAYER_RANGE_ITERATOR end() const
LAYER_RANGE_ITERATOR begin() const
LAYER_RANGE(PCB_LAYER_ID start, PCB_LAYER_ID stop, int layer_count)
bool Contains(int aTest_layer)
PCB_LAYER_ID
A quick note on layer IDs:
EDA_ANGLE abs(const EDA_ANGLE &aAngle)