KiCad PCB EDA Suite
NETINFO_LIST Class Reference

Container for NETINFO_ITEM elements, which are the nets. More...

#include <netinfo.h>

Classes

class  iterator
 

Public Member Functions

 NETINFO_LIST (BOARD *aParent)
 
 ~NETINFO_LIST ()
 
NETINFO_ITEMGetNetItem (int aNetCode) const
 
NETINFO_ITEMGetNetItem (const wxString &aNetName) const
 
unsigned GetNetCount () const
 
void AppendNet (NETINFO_ITEM *aNewElement)
 Add aNewElement to the end of the net list. More...
 
void RemoveNet (NETINFO_ITEM *aNet)
 Remove a net from the net list. More...
 
void RemoveUnusedNets ()
 
const NETNAMES_MAP & NetsByName () const
 Return the name map, at least for python. More...
 
const NETCODES_MAP & NetsByNetcode () const
 Return the netcode map, at least for python. More...
 
iterator begin () const
 
iterator end () const
 
BOARDGetParent () const
 

Static Public Member Functions

static NETINFO_ITEMOrphanedItem ()
 Wrapper class, so you can iterate through NETINFO_ITEM*s, not std::pair<int/wxString, NETINFO_ITEM*> More...
 

Static Public Attributes

static const int UNCONNECTED = 0
 Constant that forces initialization of a netinfo item to the NETINFO_ITEM ORPHANED (typically -1) when calling SetNetCode on board connected items. More...
 
static const int ORPHANED = -1
 NETINFO_ITEM meaning that there was no net assigned for an item, as there was no board storing net list available. More...
 

Private Member Functions

void clear ()
 Delete the list of nets (and free memory). More...
 
void buildListOfNets ()
 Rebuild the list of NETINFO_ITEMs. More...
 
int getFreeNetCode ()
 Return the first available net code that is not used by any other net. More...
 

Private Attributes

BOARDm_parent
 
NETNAMES_MAP m_netNames
 map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner More...
 
NETCODES_MAP m_netCodes
 map of <int, NETINFO_ITEM*> is NOT owner More...
 
int m_newNetCode
 possible value for new net code assignment More...
 

Friends

class BOARD
 

Detailed Description

Container for NETINFO_ITEM elements, which are the nets.

Definition at line 315 of file netinfo.h.

Constructor & Destructor Documentation

◆ NETINFO_LIST()

NETINFO_LIST::NETINFO_LIST ( BOARD aParent)

Definition at line 33 of file netinfo_list.cpp.

33  :
34  m_parent( aParent )
35 {
36  // Make sure that the unconnected net has number 0
37  AppendNet( new NETINFO_ITEM( aParent, wxEmptyString, 0 ) );
38 
39  m_newNetCode = 0;
40 }
BOARD * m_parent
Definition: netinfo.h:470
void AppendNet(NETINFO_ITEM *aNewElement)
Add aNewElement to the end of the net list.
int m_newNetCode
possible value for new net code assignment
Definition: netinfo.h:475
Handle the data for a net.
Definition: netinfo.h:64

References AppendNet(), and m_newNetCode.

◆ ~NETINFO_LIST()

NETINFO_LIST::~NETINFO_LIST ( )

Definition at line 43 of file netinfo_list.cpp.

44 {
45  clear();
46 }
void clear()
Delete the list of nets (and free memory).

References clear().

Member Function Documentation

◆ AppendNet()

void NETINFO_LIST::AppendNet ( NETINFO_ITEM aNewElement)

Add aNewElement to the end of the net list.

Negative net code means it is going to be auto-assigned.

Definition at line 125 of file netinfo_list.cpp.

126 {
127  // if there is a net with such name then just assign the correct number
128  NETINFO_ITEM* sameName = GetNetItem( aNewElement->GetNetname() );
129 
130  if( sameName != NULL )
131  {
132  aNewElement->m_netCode = sameName->GetNetCode();
133 
134  return;
135  }
136  // be sure that net codes are consecutive
137  // negative net code means that it has to be auto assigned
138  else if( aNewElement->m_netCode != (int) m_netCodes.size() || aNewElement->m_netCode < 0 )
139  {
140  aNewElement->m_netCode = getFreeNetCode();
141  }
142 
143  // net names & codes are supposed to be unique
144  assert( GetNetItem( aNewElement->GetNetname() ) == NULL );
145  assert( GetNetItem( aNewElement->GetNetCode() ) == NULL );
146 
147  // add an entry for fast look up by a net name using a map
148  m_netNames.insert( std::make_pair( aNewElement->GetNetname(), aNewElement ) );
149  m_netCodes.insert( std::make_pair( aNewElement->GetNetCode(), aNewElement ) );
150 }
NETNAMES_MAP m_netNames
map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner
Definition: netinfo.h:472
int getFreeNetCode()
Return the first available net code that is not used by any other net.
#define NULL
int m_netCode
A number equivalent to the net name.
Definition: netinfo.h:167
const wxString & GetNetname() const
Definition: netinfo.h:119
Handle the data for a net.
Definition: netinfo.h:64
NETINFO_ITEM * GetNetItem(int aNetCode) const
NETCODES_MAP m_netCodes
map of <int, NETINFO_ITEM*> is NOT owner
Definition: netinfo.h:473
int GetNetCode() const
Definition: netinfo.h:113

References getFreeNetCode(), NETINFO_ITEM::GetNetCode(), GetNetItem(), NETINFO_ITEM::GetNetname(), NETINFO_ITEM::m_netCode, m_netCodes, m_netNames, and NULL.

Referenced by NET_SELECTOR_COMBOPOPUP::Accept(), BOARD::Add(), and NETINFO_LIST().

◆ begin()

iterator NETINFO_LIST::begin ( ) const
inline

Definition at line 436 of file netinfo.h.

437  {
438  return iterator( m_netNames.begin() );
439  }
NETNAMES_MAP m_netNames
map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner
Definition: netinfo.h:472

References m_netNames.

Referenced by BOARD::BeginNets(), DSN::SPECCTRA_DB::FromBOARD(), and TestForExistingItem().

◆ buildListOfNets()

void NETINFO_LIST::buildListOfNets ( )
private

Rebuild the list of NETINFO_ITEMs.

The list is sorted by names.

Definition at line 153 of file netinfo_list.cpp.

154 {
155  // Restore the initial state of NETINFO_ITEMs
156  for( NETINFO_ITEM* net : *this )
157  net->Clear();
158 
161 }
BOARD * m_parent
Definition: netinfo.h:470
void SynchronizeNetsAndNetClasses()
Copy NETCLASS info to each NET, based on NET membership in a NETCLASS.
Definition: board.cpp:1413
int SetAreasNetCodesFromNetNames()
Set the .m_NetCode member of all copper areas, according to the area Net Name The SetNetCodesFromNetN...
Definition: board.cpp:1446
Handle the data for a net.
Definition: netinfo.h:64
void Clear()
Set all fields to their default values.
Definition: netinfo.h:154

References NETINFO_ITEM::Clear(), m_parent, BOARD::SetAreasNetCodesFromNetNames(), and BOARD::SynchronizeNetsAndNetClasses().

Referenced by BOARD::BuildListOfNets().

◆ clear()

void NETINFO_LIST::clear ( )
private

Delete the list of nets (and free memory).

Definition at line 49 of file netinfo_list.cpp.

50 {
51  NETNAMES_MAP::iterator it, itEnd;
52  for( it = m_netNames.begin(), itEnd = m_netNames.end(); it != itEnd; ++it )
53  delete it->second;
54 
55  m_netNames.clear();
56  m_netCodes.clear();
57  m_newNetCode = 0;
58 }
NETNAMES_MAP m_netNames
map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner
Definition: netinfo.h:472
int m_newNetCode
possible value for new net code assignment
Definition: netinfo.h:475
NETCODES_MAP m_netCodes
map of <int, NETINFO_ITEM*> is NOT owner
Definition: netinfo.h:473

References m_netCodes, m_netNames, and m_newNetCode.

Referenced by ~NETINFO_LIST().

◆ end()

iterator NETINFO_LIST::end ( ) const
inline

Definition at line 441 of file netinfo.h.

442  {
443  return iterator( m_netNames.end() );
444  }
NETNAMES_MAP m_netNames
map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner
Definition: netinfo.h:472

References m_netNames.

Referenced by BOARD::EndNets(), DSN::SPECCTRA_DB::FromBOARD(), and TestForExistingItem().

◆ getFreeNetCode()

int NETINFO_LIST::getFreeNetCode ( )
private

Return the first available net code that is not used by any other net.

Definition at line 181 of file netinfo_list.cpp.

182 {
183  do
184  {
185  if( m_newNetCode < 0 )
186  m_newNetCode = 0;
187  } while( m_netCodes.count( ++m_newNetCode ) != 0 );
188 
189  return m_newNetCode;
190 }
int m_newNetCode
possible value for new net code assignment
Definition: netinfo.h:475
NETCODES_MAP m_netCodes
map of <int, NETINFO_ITEM*> is NOT owner
Definition: netinfo.h:473

References m_netCodes, and m_newNetCode.

Referenced by AppendNet().

◆ GetNetCount()

unsigned NETINFO_LIST::GetNetCount ( ) const
inline
Returns
the number of nets ( always >= 1 ) because the first net is the "not connected" net and always exists

Definition at line 339 of file netinfo.h.

339 { return m_netNames.size(); }
NETNAMES_MAP m_netNames
map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner
Definition: netinfo.h:472

References m_netNames.

Referenced by extractAllDiffPairs(), BOARD::FindNet(), BOARD::GetMsgPanelInfo(), BOARD::GetNetCount(), FABMASTER::loadZones(), and BOARD::SortedNetnamesList().

◆ GetNetItem() [1/2]

NETINFO_ITEM * NETINFO_LIST::GetNetItem ( int  aNetCode) const
Parameters
aNetCodenetcode to identify a given NETINFO_ITEM.
Returns
net item by aNetCode, or NULL if not found.

Definition at line 61 of file netinfo_list.cpp.

62 {
63  NETCODES_MAP::const_iterator result = m_netCodes.find( aNetCode );
64 
65  if( result != m_netCodes.end() )
66  return (*result).second;
67 
68  return NULL;
69 }
#define NULL
NETCODES_MAP m_netCodes
map of <int, NETINFO_ITEM*> is NOT owner
Definition: netinfo.h:473

References m_netCodes, and NULL.

Referenced by NET_SELECTOR_COMBOPOPUP::Accept(), AppendNet(), BOARD::FindNet(), NET_SELECTOR_COMBOPOPUP::GetSelectedNetname(), NET_SELECTOR_COMBOPOPUP::GetStringValue(), PCB_EDIT_FRAME::LoadProjectSettings(), APPEARANCE_CONTROLS::onNetclassContextMenu(), test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run(), DRC_TEST_PROVIDER_MATCHED_LENGTH::runInternal(), PCB_EDIT_FRAME::SaveProjectSettings(), NET_SELECTOR_COMBOPOPUP::SetSelectedNet(), and APPEARANCE_CONTROLS::showNetclass().

◆ GetNetItem() [2/2]

NETINFO_ITEM * NETINFO_LIST::GetNetItem ( const wxString &  aNetName) const
Parameters
aNetNamenet name to identify a given NETINFO_ITEM.
Returns
net item by aNetName, or NULL if not found.

Definition at line 72 of file netinfo_list.cpp.

73 {
74  NETNAMES_MAP::const_iterator result = m_netNames.find( aNetName );
75 
76  if( result != m_netNames.end() )
77  return (*result).second;
78 
79  return NULL;
80 }
NETNAMES_MAP m_netNames
map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner
Definition: netinfo.h:472
#define NULL

References m_netNames, and NULL.

◆ GetParent()

BOARD* NETINFO_LIST::GetParent ( void  ) const
inline

Definition at line 447 of file netinfo.h.

448  {
449  return m_parent;
450  }
BOARD * m_parent
Definition: netinfo.h:470

References m_parent.

Referenced by NET_SELECTOR_COMBOPOPUP::Accept().

◆ NetsByName()

const NETNAMES_MAP& NETINFO_LIST::NetsByName ( ) const
inline

Return the name map, at least for python.

Returns
the number of pads in board.

Definition at line 358 of file netinfo.h.

358 { return m_netNames; }
NETNAMES_MAP m_netNames
map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner
Definition: netinfo.h:472

Referenced by FABMASTER::loadEtch(), FABMASTER::loadFootprints(), FABMASTER::loadVias(), FABMASTER::loadZone(), and NET_GRID_TABLE::Rebuild().

◆ NetsByNetcode()

const NETCODES_MAP& NETINFO_LIST::NetsByNetcode ( ) const
inline

Return the netcode map, at least for python.

Constant that holds the "unconnected net" number (typically 0) all items "connected" to this net are actually not connected items

Definition at line 361 of file netinfo.h.

References m_netCodes.

Referenced by DIALOG_NET_INSPECTOR::buildNetsList().

◆ OrphanedItem()

static NETINFO_ITEM* NETINFO_LIST::OrphanedItem ( )
inlinestatic

Wrapper class, so you can iterate through NETINFO_ITEM*s, not std::pair<int/wxString, NETINFO_ITEM*>

Definition at line 373 of file netinfo.h.

References UNCONNECTED.

Referenced by BOARD::FindNet(), PCB_CONTROL::Paste(), and BOARD_CONNECTED_ITEM::SetNetCode().

◆ RemoveNet()

void NETINFO_LIST::RemoveNet ( NETINFO_ITEM aNet)

Remove a net from the net list.

Definition at line 83 of file netinfo_list.cpp.

84 {
85  for( NETCODES_MAP::iterator i = m_netCodes.begin(); i != m_netCodes.end(); ++i )
86  {
87  if ( i->second == aNet )
88  {
89  m_netCodes.erase(i);
90  break;
91  }
92  }
93 
94  for( NETNAMES_MAP::iterator i = m_netNames.begin(); i != m_netNames.end(); ++i )
95  {
96  if ( i->second == aNet )
97  {
98  m_netNames.erase(i);
99  break;
100  }
101  }
102 
103  m_newNetCode = std::min( m_newNetCode, aNet->m_netCode - 1 );
104 }
NETNAMES_MAP m_netNames
map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner
Definition: netinfo.h:472
int m_netCode
A number equivalent to the net name.
Definition: netinfo.h:167
int m_newNetCode
possible value for new net code assignment
Definition: netinfo.h:475
NETCODES_MAP m_netCodes
map of <int, NETINFO_ITEM*> is NOT owner
Definition: netinfo.h:473

References NETINFO_ITEM::m_netCode, m_netCodes, m_netNames, and m_newNetCode.

Referenced by NET_SELECTOR_COMBOPOPUP::Accept(), and BOARD::Remove().

◆ RemoveUnusedNets()

void NETINFO_LIST::RemoveUnusedNets ( )

Definition at line 107 of file netinfo_list.cpp.

108 {
109  NETCODES_MAP existingNets = m_netCodes;
110 
111  m_netCodes.clear();
112  m_netNames.clear();
113 
114  for( std::pair<const int, NETINFO_ITEM*> item : existingNets )
115  {
116  if( item.second->IsCurrent() )
117  {
118  m_netNames.insert( std::make_pair( item.second->GetNetname(), item.second ) );
119  m_netCodes.insert( std::make_pair( item.first, item.second ) );
120  }
121  }
122 }
NETNAMES_MAP m_netNames
map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner
Definition: netinfo.h:472
NETCODES_MAP m_netCodes
map of <int, NETINFO_ITEM*> is NOT owner
Definition: netinfo.h:473

References m_netCodes, and m_netNames.

Referenced by BOARD_NETLIST_UPDATER::UpdateNetlist().

Friends And Related Function Documentation

◆ BOARD

friend class BOARD
friend

Definition at line 317 of file netinfo.h.

Member Data Documentation

◆ m_netCodes

NETCODES_MAP NETINFO_LIST::m_netCodes
private

map of <int, NETINFO_ITEM*> is NOT owner

Definition at line 473 of file netinfo.h.

Referenced by AppendNet(), clear(), getFreeNetCode(), GetNetItem(), NetsByNetcode(), RemoveNet(), and RemoveUnusedNets().

◆ m_netNames

NETNAMES_MAP NETINFO_LIST::m_netNames
private

map of <wxString, NETINFO_ITEM*>, is NETINFO_ITEM owner

Definition at line 472 of file netinfo.h.

Referenced by AppendNet(), begin(), clear(), end(), GetNetCount(), GetNetItem(), RemoveNet(), and RemoveUnusedNets().

◆ m_newNetCode

int NETINFO_LIST::m_newNetCode
private

possible value for new net code assignment

Definition at line 475 of file netinfo.h.

Referenced by clear(), getFreeNetCode(), NETINFO_LIST(), and RemoveNet().

◆ m_parent

BOARD* NETINFO_LIST::m_parent
private

Definition at line 470 of file netinfo.h.

Referenced by buildListOfNets(), and GetParent().

◆ ORPHANED

const int NETINFO_LIST::ORPHANED = -1
static

NETINFO_ITEM meaning that there was no net assigned for an item, as there was no board storing net list available.

Definition at line 369 of file netinfo.h.

Referenced by FOOTPRINT::ClearAllNets(), PCB_PARSER::parsePAD(), and BOARD::SanitizeNetcodes().

◆ UNCONNECTED


The documentation for this class was generated from the following files: