28#include <unordered_set>
31#include <geometry/shape_index.h>
48 typedef std::list<ITEM*> NET_ITEMS_LIST;
50 typedef std::unordered_set<ITEM*> ITEM_SET;
80 template<
class Visitor>
81 int Query(
const ITEM* aItem,
int aMinDistance, Visitor& aVisitor )
const;
94 template<
class Visitor>
95 int Query(
const SHAPE* aShape,
int aMinDistance, Visitor& aVisitor )
const;
109 return m_allItems.find( aItem ) != m_allItems.end();
115 int Size()
const {
return m_allItems.size(); }
117 ITEM_SET::iterator begin() {
return m_allItems.begin(); }
118 ITEM_SET::iterator end() {
return m_allItems.end(); }
121 template <
class Visitor>
122 int querySingle( std::size_t aIndex,
const SHAPE* aShape,
int aMinDistance, Visitor& aVisitor )
const;
125 std::deque<ITEM_SHAPE_INDEX> m_subIndices;
126 std::map<int, NET_ITEMS_LIST> m_netMap;
131template<
class Visitor>
132int INDEX::querySingle( std::size_t aIndex,
const SHAPE* aShape,
int aMinDistance, Visitor& aVisitor )
const
134 if( aIndex >= m_subIndices.size() )
137 return m_subIndices[aIndex].Query( aShape, aMinDistance, aVisitor);
140template<
class Visitor>
147 for(
int i = layers.Start(); i <= layers.End(); ++i )
148 total += querySingle( i, aItem->
Shape(), aMinDistance, aVisitor );
153template<
class Visitor>
158 for( std::size_t i = 0; i < m_subIndices.size(); ++i )
159 total += querySingle( i, aShape, aMinDistance, aVisitor );
Represent a contiguous set of PCB layers.
Definition pns_layerset.h:32
INDEX.
Definition pns_index.h:46
void Replace(ITEM *aOldItem, ITEM *aNewItem)
Replaces one item with another.
Definition pns_index.cpp:64
void Remove(ITEM *aItem)
Removes an item from the spatial index.
Definition pns_index.cpp:46
bool Contains(ITEM *aItem) const
Function Contains()
Definition pns_index.h:107
int Size() const
Returns number of items stored in the index.
Definition pns_index.h:115
void Add(ITEM *aItem)
Adds item to the spatial index.
Definition pns_index.cpp:28
int Query(const ITEM *aItem, int aMinDistance, Visitor &aVisitor) const
Searches items in the index that are in proximity of aItem.
Definition pns_index.h:141
NET_ITEMS_LIST * GetItemsForNet(int aNet)
Returns list of all items in a given net.
Definition pns_index.cpp:71
Base class for PNS router board items.
Definition pns_item.h:57
virtual const SHAPE * Shape() const
Return the geometrical shape of the item.
Definition pns_item.h:201
Definition shape_index.h:131
An abstract shape on 2D plane.
Definition shape.h:117