22#ifndef __PNS_ITEMSET_H
23#define __PNS_ITEMSET_H
39 ITEM_SET(
ITEM* aInitialItem =
nullptr,
bool aBecomeOwner =
false )
42 m_items.emplace_back( aInitialItem );
44 if( aBecomeOwner && aInitialItem )
45 aInitialItem->SetOwner(
this );
57 m_items = std::move( aOther.m_items );
74 int Count(
int aKindMask = -1 )
const
79 return static_cast<int>(
m_items.size() );
83 if( item->Kind() & aKindMask )
122 return static_cast<int>(
m_items.size() );
132 std::vector<ITEM*>::const_iterator
cbegin()
const {
return m_items.cbegin(); }
133 std::vector<ITEM*>::const_iterator
cend()
const {
return m_items.cend(); }
136 std::vector<ITEM*>::reverse_iterator
rend() {
return m_items.rend(); }
137 std::vector<ITEM*>::const_reverse_iterator
crbegin()
const {
return m_items.crbegin(); }
138 std::vector<ITEM*>::const_reverse_iterator
crend()
const {
return m_items.crend(); }
140 void Add(
ITEM* aItem,
bool aBecomeOwner =
false )
168 std::vector<ITEM*>::iterator f = std::find(
m_items.begin(),
m_items.end(), aItem );
181 if( item->OfKind( kind ) )
184 return static_cast<T*
>( item );
ITEM_SET & operator=(ITEM_SET &&aOther) noexcept
void Prepend(ITEM *aItem, bool aBecomeOwner=false)
std::vector< ITEM * >::reverse_iterator rbegin()
ITEM_SET & operator=(const ITEM_SET &aOther)
ITEM * operator[](const size_t aIndex) const
int Count(int aKindMask=-1) const
ITEM_SET & FilterNet(NET_HANDLE aNet, bool aInvert=false)
std::vector< ITEM * > m_items
void Add(const LINE &aLine)
std::vector< ITEM * >::const_reverse_iterator crend() const
ITEM_SET & ExcludeItem(const ITEM *aItem)
std::vector< ITEM * >::const_iterator cbegin() const
ITEM_SET & FilterMarker(int aMarker, bool aInvert=false)
bool Contains(ITEM *aItem) const
ITEM_SET(const ITEM_SET &aOther)
ITEM_SET & FilterKinds(int aKindMask, bool aInvert=false)
ITEM_SET & ExcludeNet(NET_HANDLE aNet)
ITEM_SET & FilterLayers(int aStart, int aEnd=-1, bool aInvert=false)
std::vector< ITEM * >::const_reverse_iterator crbegin() const
ITEM_SET(ITEM_SET &&aOther) noexcept
std::vector< ITEM * > & Items()
ITEM_SET & ExcludeLayers(int aStart, int aEnd=-1)
ITEM_SET(ITEM *aInitialItem=nullptr, bool aBecomeOwner=false)
std::vector< ITEM * >::const_iterator cend() const
std::vector< ITEM * >::reverse_iterator rend()
ITEM_SET & ExcludeKinds(int aKindMask)
std::vector< ITEM * >::iterator end()
ITEM * FindVertex(const VECTOR2I &aV) const
void Prepend(const LINE &aLine)
std::vector< ITEM * >::iterator begin()
T * FindByKind(ITEM::PnsKind kind, int index=0)
void Add(ITEM *aItem, bool aBecomeOwner=false)
const std::vector< ITEM * > & CItems() const
Base class for PNS router board items.
PnsKind
< Supported item types
Represents a track on a PCB, connecting two non-trivial joints (that is, vias, pads,...
void SetOwner(const ITEM_OWNER *aOwner)
Set the node that owns this item.
Push and Shove diff pair dimensions (gap) settings dialog.
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
VECTOR2< int32_t > VECTOR2I