41 ENTRY(
ITEM* aItem,
bool aOwned =
false ) :
51 item = aOther.item->
Clone();
62 bool operator==(
const ENTRY& b )
const
64 return item == b.item;
67 bool operator<(
const ENTRY& b )
const
77 item = aOther.item->
Clone();
84 operator ITEM* ()
const
93 typedef std::vector<ENTRY> ENTRIES;
95 ITEM_SET(
ITEM* aInitialItem =
nullptr,
bool aBecomeOwner =
false )
98 m_items.emplace_back(
ENTRY( aInitialItem, aBecomeOwner ) );
103 m_items = aOther.m_items;
108 ITEM_SET& operator=(
const ITEM_SET& aOther )
110 m_items = aOther.m_items;
114 int Count(
int aKindMask = -1 )
const
118 if( aKindMask == -1 || aKindMask == ITEM::ANY_T )
119 return static_cast<int>( m_items.size() );
121 for( ITEM* item : m_items )
123 if( item->Kind() & aKindMask )
132 return m_items.empty();
135 ENTRIES& Items() {
return m_items; }
136 const ENTRIES& CItems()
const {
return m_items; }
138 ITEM_SET& FilterLayers(
int aStart,
int aEnd = -1,
bool aInvert =
false );
139 ITEM_SET& FilterKinds(
int aKindMask,
bool aInvert =
false );
140 ITEM_SET& FilterNet(
int aNet,
bool aInvert =
false );
141 ITEM_SET& FilterMarker(
int aMarker,
bool aInvert =
false );
143 ITEM_SET& ExcludeLayers(
int aStart,
int aEnd = -1 )
145 return FilterLayers( aStart, aEnd,
true );
148 ITEM_SET& ExcludeKinds(
int aKindMask )
150 return FilterKinds( aKindMask,
true );
153 ITEM_SET& ExcludeNet(
int aNet )
155 return FilterNet( aNet,
true );
158 ITEM_SET& ExcludeItem(
const ITEM* aItem );
162 return static_cast<int>( m_items.size() );
165 void Add(
const LINE& aLine );
166 void Prepend(
const LINE& aLine );
168 ITEM* operator[](
size_t aIndex )
const
170 return m_items[aIndex].item;
173 ENTRIES::iterator begin() {
return m_items.begin(); }
174 ENTRIES::iterator end() {
return m_items.end(); }
175 ENTRIES::const_iterator cbegin()
const {
return m_items.cbegin(); }
176 ENTRIES::const_iterator cend()
const {
return m_items.cend(); }
178 void Add( ITEM* aItem,
bool aBecomeOwner =
false )
180 m_items.emplace_back( ENTRY( aItem, aBecomeOwner ) );
183 void Prepend( ITEM* aItem,
bool aBecomeOwner =
false )
185 m_items.emplace( m_items.begin(), ENTRY( aItem, aBecomeOwner ) );
193 bool Contains( ITEM* aItem )
const
195 const ENTRY ent( aItem );
196 return alg::contains( m_items, ent );
199 void Erase( ITEM* aItem )
202 ENTRIES::iterator f = std::find( m_items.begin(), m_items.end(), ent );
204 if( f != m_items.end() )
209 T* FindByKind( ITEM::PnsKind kind,
int index = 0 )
213 for(
const ITEM* item : m_items )
215 if( item->OfKind( kind ) )
218 return static_cast<T*
>( item );
Definition pns_itemset.h:40