29#include <wx/tokenzr.h> 
   35    return aOut->
Print( aNestLevel, 
"(pin_net %s %s)",
 
 
   46    wxLogTrace( wxT( 
"NETLIST_STACKED_PINS" ),
 
   47                wxT( 
"Looking for pin '%s' in component '%s'" ),
 
   52        wxLogTrace( wxT( 
"NETLIST_STACKED_PINS" ),
 
   53                    wxT( 
"  Checking net pin name '%s'" ),
 
   56        if( net.GetPinName() == aPinName )
 
   58            wxLogTrace( wxT( 
"NETLIST_STACKED_PINS" ),
 
   59                        wxT( 
"  Found exact match for pin '%s'" ),
 
   66        if( !expandedPins.empty() )
 
   68            wxLogTrace( wxT( 
"NETLIST_STACKED_PINS" ),
 
   69                        wxT( 
"  Pin name '%s' expanded to %zu pins" ),
 
   70                        net.GetPinName(), expandedPins.size() );
 
   72            for( 
const wxString& expandedPin : expandedPins )
 
   74                wxLogTrace( wxT( 
"NETLIST_STACKED_PINS" ),
 
   75                            wxT( 
"    Checking expanded pin '%s'" ),
 
   77                if( expandedPin == aPinName )
 
   79                    wxLogTrace( wxT( 
"NETLIST_STACKED_PINS" ),
 
   80                                wxT( 
"  Found match for pin '%s' in stacked notation '%s'" ),
 
   81                                aPinName, net.GetPinName() );
 
   88    wxLogTrace( wxT( 
"NETLIST_STACKED_PINS" ),
 
   89                wxT( 
"  No net found for pin '%s'" ),
 
 
  111            path += 
'/' + pathStep.AsString();
 
  119        aOut->
Print( nl + 1, 
"(fields" );
 
  121        for( std::pair<wxString, wxString> field : 
m_fields )
 
  122            aOut->
Print( nl + 2, 
"\n(field (name %s) %s)", aOut->
Quotew( field.first ).c_str(),
 
  123                         aOut->
Quotew( field.second ).c_str() );
 
  125        aOut->
Print( 0, 
")\n" );
 
  129            aOut->
Print( nl + 1, 
"(property (name \"dnp\"))\n" );
 
  132            aOut->
Print( nl + 1, 
"(property (name \"exclude_from_bom\"))\n" );
 
  137        aOut->
Print( nl+1, 
"(fp_filters" );
 
  142        aOut->
Print( 0, 
")\n" );
 
  147        int llen = aOut->
Print( nl+1, 
"(nets " );
 
  149        for( 
unsigned i = 0;  i < 
m_nets.size();  ++i )
 
  153                aOut->
Print( 0, 
"\n" );
 
  154                llen = aOut->
Print( nl+1, 
"  " );
 
  157            llen += 
m_nets[i].Format( aOut, 0, aCtl );
 
  160        aOut->
Print( 0, 
")\n" );
 
  163    aOut->
Print( nl, 
")\n" );    
 
 
  171    aOut->
Print( nl, 
"(%s\n", aDocName );
 
  178    aOut->
Print( nl, 
")\n" );
 
 
  197        if( 
group.uuid == aUuid )
 
 
  224    if( aUuidPath.empty() )
 
  227    KIID comp_uuid = aUuidPath.back();
 
  235        const std::vector<KIID>& kiids = component.GetKIIDs();
 
  237        if( base != component.GetPath() )
 
  240        if( std::find( kiids.begin(), kiids.end(), comp_uuid ) != kiids.end() )
 
 
  255        for( 
const KIID& compUuid : component.GetKIIDs() )
 
  257            if( aUuid == compUuid )
 
 
Used to store the component pin name to net name (and pin function) associations stored in a netlist.
 
int Format(OUTPUTFORMATTER *aOut, int aNestLevel, int aCtl)
 
Store all of the related component information found in a netlist.
 
const COMPONENT_NET & GetNet(unsigned aIndex) const
 
std::vector< COMPONENT_NET > m_nets
list of nets shared by the component pins
 
std::map< wxString, wxString > m_properties
Component-specific properties found in the netlist.
 
wxArrayString m_footprintFilters
 
const wxString & GetReference() const
 
void Format(OUTPUTFORMATTER *aOut, int aNestLevel, int aCtl)
 
KIID_PATH m_path
A fully specified path to the component (but not the component: [ sheetUUID, sheetUUID,...
 
nlohmann::ordered_map< wxString, wxString > m_fields
Component-specific user fields found in the netlist.
 
wxString m_name
The name of the component in m_library used when it was placed on the schematic.
 
std::vector< KIID > m_kiids
A vector of possible KIIDs corresponding to all units in a symbol.
 
wxString m_library
The name of the component library where m_name was found.
 
LIB_ID m_fpid
The LIB_ID of the footprint assigned to the component.
 
static COMPONENT_NET m_emptyNet
 
const LIB_ID & GetFPID() const
 
void SetGroup(NETLIST_GROUP *aGroup)
 
void Format(const char *aDocName, OUTPUTFORMATTER *aOut, int aNestLevel, int aCtl=0)
 
void AddGroup(NETLIST_GROUP *aGroup)
 
void AddComponent(COMPONENT *aComponent)
Add aComponent to the NETLIST.
 
COMPONENT * GetComponentByPath(const KIID_PATH &aPath)
Return a COMPONENT by aPath.
 
COMPONENT * GetComponentByReference(const wxString &aReference)
Return a COMPONENT by aReference.
 
COMPONENT * GetComponentByUuid(const KIID &aUuid)
Return a COMPONENT by aUuid.
 
NETLIST_GROUP * GetGroupByUuid(const KIID &aUuid)
Return a NETLIST_GROUP by aUuid.
 
void ApplyGroupMembership()
After groups and components are parsed, apply the group memberships to the internal components based ...
 
bool AnyFootprintsLinked() const
 
bool operator<(const COMPONENT &item1, const COMPONENT &item2)
Compare two COMPONENT objects by reference designator.
 
static bool ByFPID(const COMPONENT &ref, const COMPONENT &cmp)
A helper function used to sort the component list used by loadNewModules.
 
#define CTL_OMIT_FP_UUID
Don't prefix the footprint UUID to the sheet path.
 
#define CTL_OMIT_FILTERS
Omit the ki_fp_filters attribute in .kicad_xxx files.
 
static bool empty(const wxTextEntryBase *aCtrl)
 
int StrNumCmp(const wxString &aString1, const wxString &aString2, bool aIgnoreCase)
Compare two strings with alphanumerical content.
 
std::vector< wxString > ExpandStackedPinNotation(const wxString &aPinName, bool *aValid)
Expand stacked pin notation like [1,2,3], [1-4], [A1-A4], or [AA1-AA3,AB4,CD12-CD14] into individual ...