61 return ( (hash<int>()( aP.
pos.
x )
62 ^ (hash<int>()( aP.
pos.
y ) << 1) ) >> 1 )
63 ^ (hash<void*>()( aP.
net ) << 1);
117 if( !aAllowLockedSegs )
127 if( item->IsVirtual() )
158 if( item->IsVirtual() )
161 if( item->Kind() ==
VIA_T )
169 return ( realItems == 3 && vias == 1 && segs == 2 );
193 if( item->IsVirtual() )
196 if( item->Kind() ==
VIA_T )
209 wxCHECK( seg1 && seg2,
false );
243 const size_t size = citems.size();
247 for(
size_t i = 0; i < size; i++ )
251 if( item != aCurrent )
260 if( !item->
IsLocked() || aAllowLockedSegs )
284 if( item->OfKind(
VIA_T ) )
285 return static_cast<VIA*
>( item );
const PNS_LAYER_RANGE & Layers() const
virtual NET_HANDLE Net() const
PnsKind Kind() const
Return the type (kind) of the item.
bool OfKind(int aKindMask) const
const std::vector< ITEM * > & LinkList() const
NET_HANDLE Net() const override
ITEM_SET m_linkedItems
list of items linked to this joint
bool operator==(const JOINT &rhs) const
int LinkCount(int aMask=-1) const
bool IsTrivialEndpoint() const
bool IsLineCorner(bool aAllowLockedSegs=false) const
Check if a joint connects two segments of the same net, layer, and width.
void Lock(bool aLock=true)
const HASH_TAG & Tag() const
trivial accessors
void Link(ITEM *aItem)
Link the joint to a given board item (when it's added to the NODE).
bool IsNonFanoutVia() const
ITEM * Clone() const override
Return a deep copy of the item.
bool IsTraceWidthChange() const
LINKED_ITEM * NextSegment(LINKED_ITEM *aCurrent, bool aAllowLockedSegs=false) const
For trivial joints, return the segment adjacent to (aCurrent).
const ITEM_SET & CLinks() const
HASH_TAG m_tag
hash tag for unordered_multimap
bool Overlaps(const JOINT &rhs) const
bool IsStitchingVia() const
void Merge(const JOINT &aJoint)
bool Unlink(ITEM *aItem)
Unlink a given board item from the joint (upon its removal from a NODE)
bool m_locked
locked (non-movable) flag
const VECTOR2I & Pos() const
JOINT(const VECTOR2I &aPos, const PNS_LAYER_RANGE &aLayers, NET_HANDLE aNet=nullptr)
virtual int Width() const
Represent a contiguous set of PCB layers.
bool Overlaps(const PNS_LAYER_RANGE &aOther) const
Push and Shove diff pair dimensions (gap) settings dialog.
bool operator==(JOINT::HASH_TAG const &aP1, JOINT::HASH_TAG const &aP2)
Joints are hashed by their position, layers and net.
std::size_t operator()(const JOINT::HASH_TAG &aP) const
VECTOR2< int32_t > VECTOR2I