39#include <boost/functional/hash.hpp>
40#include <wx/filename.h>
57 return _(
"(Deleted Item)" );
62 return wxT(
"DELETED_SHEET_ITEM" );
84 void Show(
int , std::ostream& )
const override {}
92 wxCHECK( !aLhs.
m_Path.empty() && !aRhs.
m_Path.empty(),
false );
102 return path.GetCurrentHash();
133 for(
size_t i = 0; i <
size; i++ )
169 if(
size() > aSheetPathToTest.
size() )
172 if(
size() < aSheetPathToTest.
size() )
176 for(
unsigned i = 0; i <
size(); i++ )
196 if( pageNumComp == 0 )
201 if( virtualPageA > virtualPageB )
203 else if( virtualPageA < virtualPageB )
213 if( aSheetPathToTest.
size() >
size() )
216 for(
size_t i = 0; i < aSheetPathToTest.
size(); ++i )
218 if(
at( i )->m_Uuid != aSheetPathToTest.
at( i )->
m_Uuid )
273 for(
unsigned i = 1; i <
size(); i++ )
285 path.push_back( sheet->m_Uuid );
292 bool aStripTrailingSeparator )
const
296 if( aUseShortRootName )
304 if( !
empty() &&
at( 0 )->GetScreen() )
307 wxFileName fn = fileName;
309 s = fn.GetName() + wxS(
"/" );
313 for(
unsigned i = 1; i <
size(); i++ )
316 if( aStripTrailingSeparator && s.EndsWith(
"/" ) )
317 s = s.Left( s.length() - 1 );
325 std::vector<SCH_ITEM*> items;
328 std::back_inserter( items ),
372 bool aForceIncludeOrphanSymbols )
const
377 AppendSymbol( aReferences, symbol, aIncludePowerSymbols, aForceIncludeOrphanSymbols );
383 bool aIncludePowerSymbols,
384 bool aForceIncludeOrphanSymbols )
const
388 if( aIncludePowerSymbols || aSymbol->
GetRef(
this )[0] != wxT(
'#' ) )
392 if( symbol || aForceIncludeOrphanSymbols )
397 aReferences.
AddItem( schReference );
404 bool aIncludePowerSymbols )
const
416 bool aIncludePowerSymbols )
const
420 if( !aIncludePowerSymbols && aSymbol->
GetRef(
this )[0] == wxT(
'#' ) )
429 wxString reference_str = schReference.
GetRef();
432 if( reference_str[reference_str.Len() - 1] ==
'?' )
435 aRefList[reference_str].AddItem( schReference );
448 auto pair = std::make_pair( aSrcFileName, aDestFileName );
455 wxCHECK_MSG( sch,
false,
"No SCHEMATIC found in SCH_SHEET_PATH::TestForRecursion!" );
458 wxFileName srcFn = aSrcFileName;
459 wxFileName destFn = aDestFileName;
461 if( srcFn.IsRelative() )
462 srcFn.MakeAbsolute( rootFn.GetPath() );
464 if( destFn.IsRelative() )
465 destFn.MakeAbsolute( rootFn.GetPath() );
469 if( srcFn == destFn )
484 if( cmpFn.IsRelative() )
485 cmpFn.MakeAbsolute( rootFn.GetPath() );
488 if( cmpFn == destFn )
496 if( i >=
size() || i == 0 )
510 if( cmpFn.IsRelative() )
511 cmpFn.MakeAbsolute( rootFn.GetPath() );
531 wxCHECK( sheet, wxEmptyString );
562 newSheetPath = newSheetPath + currentSheetPath;
568 wxCHECK2( symbol,
continue );
575 newSymbolInstance.
m_Path = newSheetPath.
Path();
582 newSymbolInstance.
m_Path = newSheetPath.
Path();
589 newSymbolInstance.
m_Path = newSheetPath.
Path();
604 wxCHECK2( symbol,
continue );
610 fullSheetPath = fullSheetPath + currentSheetPath;
623 if( sheetFileName.IsAbsolute() )
629 wxCHECK( screen && parentScreen, );
632 wxFileName parentFileName = parentScreen->
GetFileName();
636 wxCHECK( fileName.IsAbsolute() && parentFileName.IsAbsolute(), );
638 if( fileName.GetPath() == parentFileName.GetPath() )
642 else if( fileName.MakeRelativeTo( parentFileName.GetPath() ) )
652 wxT(
"\n File name: '%s'"
653 "\n parent file name '%s',"
654 "\n sheet '%s' file name '%s'." ),
656 Last()->GetFileName() );
662 if( aSheet !=
nullptr )
674 wxCHECK_RET( aSheet !=
nullptr, wxT(
"Cannot build sheet list from undefined sheet." ) );
676 std::vector<SCH_SHEET*> badSheets;
685 std::vector<SCH_ITEM*> childSheets;
692 if( aCheckIntegrity )
697 badSheets.push_back( sheet );
706 if( aCheckIntegrity )
721 std::sort( begin(), end(),
728 else if( retval > 0 )
734 if( aUpdateVirtualPageNums )
736 int virtualPageNum = 1;
772 auto it = std::remove_if( begin(), end(),
775 return std::find( aPageInclusions.begin(), aPageInclusions.end(),
777 == aPageInclusions.end();
830 if( aItem->m_Uuid == aID )
838 if( aChild->
m_Uuid == aID )
858 aMap[ aItem->m_Uuid ] = aItem;
860 aItem->RunOnChildren(
863 aMap[ aChild->
m_Uuid ] = aChild;
887 if( libSymbol && libSymbol->
IsPower() )
890 references.
AddItem( schReference );
896 std::map<wxString, int> ref_list;
898 for(
unsigned ii = 0; ii< references.
GetCount(); ++ii )
900 wxString curr_ref = references[ii].GetRef();
902 if( ref_list.find( curr_ref ) == ref_list.end() )
904 ref_list[curr_ref] = ii;
909 if( curr_ref.Last() <
'0' && curr_ref.Last() >
'9' )
913 while( curr_ref.Last() >=
'0' && curr_ref.Last() <=
'9' )
914 curr_ref.RemoveLast();
916 references[ii].SetRef( curr_ref );
925 for(
unsigned ii = 0; ii< references.
GetCount(); ++ii )
927 if( references[ii].GetRef()[0] !=
'#' )
929 wxString new_ref =
"#" + references[ii].GetRef();
930 references[ii].SetRef( new_ref );
935 references.
Annotate(
false, 0, 100, lockedSymbols, additionalreferences );
941 bool aForceIncludeOrphanSymbols )
const
944 sheet.
GetSymbols( aReferences, aIncludePowerSymbols, aForceIncludeOrphanSymbols );
950 bool aIncludePowerSymbols,
951 bool aForceIncludeOrphanSymbols )
const
956 sheet.
GetSymbols( aReferences, aIncludePowerSymbols, aForceIncludeOrphanSymbols );
967 aSheets.push_back( sheet );
973 bool aIncludeLastSheet )
const
979 if( !aIncludeLastSheet )
982 if( testPath == aPath )
991 bool aIncludePowerSymbols )
const
993 for( SCH_SHEET_PATHS::const_iterator it = begin(); it != end(); ++it )
996 ( *it ).GetMultiUnitSymbols( tempMap, aIncludePowerSymbols );
998 for( SCH_MULTI_UNIT_REFERENCE_MAP::value_type& pair : tempMap )
1001 unsigned n_refs = pair.second.GetCount();
1003 for(
unsigned thisRef = 0; thisRef < n_refs; ++thisRef )
1004 aRefList[pair.first].AddItem( pair.second[thisRef] );
1011 const wxString& aDestFileName )
1016 SCHEMATIC* sch = at( 0 ).LastScreen()->Schematic();
1018 wxCHECK_MSG( sch,
false,
"No SCHEMATIC found in SCH_SHEET_LIST::TestForRecursion!" );
1021 wxFileName destFn = aDestFileName;
1023 if( destFn.IsRelative() )
1024 destFn.MakeAbsolute( rootFn.GetPath() );
1027 for(
unsigned i = 0; i < size(); i++ )
1030 for(
unsigned j = 0; j < aSrcSheetHierarchy.size(); j++ )
1034 for(
unsigned k = 0; k < sheetPath->
size(); k++ )
1081 retval.push_back( sheetpath );
1089 const std::vector<SCH_SYMBOL_INSTANCE>& aSymbolInstances )
1097 wxCHECK2( symbol,
continue );
1100 sheetPathWithSymbolUuid.push_back( symbol->
m_Uuid );
1102 auto it = std::find_if( aSymbolInstances.begin(), aSymbolInstances.end(),
1105 return sheetPathWithSymbolUuid == r.m_Path;
1108 if( it == aSymbolInstances.end() )
1111 sheetPathWithSymbolUuid.
AsString() );
1120 if( !it->m_Value.IsEmpty() )
1123 if( !it->m_Footprint.IsEmpty() )
1139 wxCHECK2( sheet &&
path.Last(),
continue );
1141 auto it = std::find_if( aSheetInstances.begin(), aSheetInstances.end(),
1144 return path.Path() == r.m_Path;
1147 if( it == aSheetInstances.end() )
1150 path.Path().AsString() );
1155 ( sheet->
GetName().IsEmpty() ) ? wxString( wxT(
"root" ) ) : sheet->
GetName(),
1156 path.Path().AsString(), it->m_PageNumber );
1157 path.SetPageNumber( it->m_PageNumber );
1164 std::vector<KIID_PATH> paths;
1167 paths.emplace_back( sheetPath.
Path() );
1175 std::vector<SCH_SHEET_INSTANCE> retval;
1181 wxCHECK2( sheet,
continue );
1190 retval.push_back( instance );
1219 tmp.Printf(
"%d", pageNumber );
1241 int aLastVirtualPageNumber )
1243 wxString pageNumber;
1244 int lastUsedPageNumber = 1;
1245 int nextVirtualPageNumber = aLastVirtualPageNumber;
1248 std::vector< wxString > usedPageNumbers;
1250 if( aPrefixSheetPath.
size() )
1256 pageNumber =
path.GetPageNumber();
1258 if( !pageNumber.IsEmpty() )
1259 usedPageNumbers.emplace_back( pageNumber );
1269 newSheetPath = newSheetPath + sheetPath;
1276 wxCHECK2( sheet,
continue );
1278 nextVirtualPageNumber += 1;
1295 pageNumber.Printf( wxT(
"%d" ), lastUsedPageNumber );
1296 lastUsedPageNumber += 1;
1297 }
while( std::find( usedPageNumbers.begin(), usedPageNumbers.end(), pageNumber ) !=
1298 usedPageNumbers.end() );
1312 int lastVirtualPageNumber = 1;
1320 return lastVirtualPageNumber;
1328 if(
path.Path() == aPath )
bool IsContentModified() const
void SetContentModified(bool aModified=true)
A singleton item of this class is returned for a weak reference that no longer exists.
void Print(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset) override
Print a schematic item.
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider) const override
Return a user-visible description string of this item.
wxString GetClass() const override
Return the class name.
void SetPosition(const VECTOR2I &) override
static DELETED_SHEET_ITEM * GetInstance()
void Move(const VECTOR2I &aMoveVector) override
Move the item by aMoveVector to a new position.
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
void MirrorHorizontally(int aCenter) override
Mirror item horizontally about aCenter.
void Rotate(const VECTOR2I &aCenter) override
Rotate the item around aCenter 90 degrees in the clockwise direction.
KICAD_T Type() const
Returns the type of object.
virtual const wxString & GetText() const
Return the string associated with the text object.
virtual bool IsVisible() const
virtual void SetVisible(bool aVisible)
EE_TYPE OfType(KICAD_T aType) const
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
wxString AsString() const
wxString AsString() const
Define a library symbol object.
int GetUnitCount() const override
For items with units, return the number of units.
bool m_IntersheetRefsShow
Holds all the data relating to one schematic.
wxString GetFileName() const override
Helper to retrieve the filename from the root sheet screen.
SCHEMATIC_SETTINGS & Settings() const
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
VECTOR2I GetPosition() const override
void SetText(const wxString &aText) override
const wxString & GetInternalName()
Get the initial name of the field set at creation (or set by SetName()).
Base class for any item which can be embedded within the SCHEMATIC container class,...
SCHEMATIC * Schematic() const
Searches the item hierarchy to find a SCHEMATIC.
virtual void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction)
void AutoplaceFields(SCH_SCREEN *aScreen, bool aManual) override
std::vector< SCH_FIELD > & GetFields()
Container to create a flattened list of symbols because in a complex hierarchy, a symbol can be used ...
void Annotate(bool aUseSheetNum, int aSheetIntervalId, int aStartNumber, SCH_MULTI_UNIT_REFERENCE_MAP aLockedUnitMap, const SCH_REFERENCE_LIST &aAdditionalRefs, bool aStartAtCurrent=false)
Set the reference designators in the list that have not been annotated.
void SplitReferences()
Attempt to split all reference designators into a name (U) and number (1).
void AddItem(const SCH_REFERENCE &aItem)
void UpdateAnnotation()
Update the symbol references for the schematic project (or the current sheet).
A helper to define a symbol's reference designator in a schematic.
void SetSheetNumber(int aSheetNumber)
EE_RTREE & Items()
Gets the full RTree, usually for iterating.
const wxString & GetFileName() const
bool Remove(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
Remove aItem from the schematic associated with this screen.
SCHEMATIC * Schematic() const
void Update(SCH_ITEM *aItem, bool aUpdateLibSymbol=true)
Update aItem's bounding box in the tree.
void GetSheets(std::vector< SCH_ITEM * > *aItems) const
Similar to Items().OfType( SCH_SHEET_T ), but return the sheets in a deterministic order (L-R,...
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
std::optional< SCH_SHEET_PATH > GetSheetPathByKIIDPath(const KIID_PATH &aPath, bool aIncludeLastSheet=true) const
Finds a SCH_SHEET_PATH that matches the provided KIID_PATH.
SCH_ITEM * GetItem(const KIID &aID, SCH_SHEET_PATH *aPathOut=nullptr) const
Fetch a SCH_ITEM by ID.
void GetMultiUnitSymbols(SCH_MULTI_UNIT_REFERENCE_MAP &aRefList, bool aIncludePowerSymbols=true) const
Add a SCH_REFERENCE_LIST object to aRefList for each same-reference set of multi-unit parts in the li...
void FillItemMap(std::map< KIID, EDA_ITEM * > &aMap)
Fill an item cache for temporary use when many items need to be fetched.
SCH_SHEET_PATH m_currentSheetPath
void TrimToPageNumbers(const std::vector< wxString > &aPageInclusions)
Truncates the list by removing sheet's with page numbers not in the given list.
void SortByPageNumbers(bool aUpdateVirtualPageNums=true)
Sort the list of sheets by page number.
bool NameExists(const wxString &aSheetName) const
std::vector< SCH_SHEET_INSTANCE > GetSheetInstances() const
Fetch the instance information for all of the sheets in the hiearchy.
void UpdateSheetInstanceData(const std::vector< SCH_SHEET_INSTANCE > &aSheetInstances)
Update all of the sheet instance information using aSheetInstances.
void SetInitialPageNumbers()
Set initial sheet page numbers.
void RemoveSymbolInstances(const SCH_SHEET_PATH &aPrefixSheetPath)
SCH_SHEET_LIST FindAllSheetsForScreen(const SCH_SCREEN *aScreen) const
Return a SCH_SHEET_LIST with a copy of all the SCH_SHEET_PATH using a particular screen.
bool AllSheetPageNumbersEmpty() const
Check all of the sheet instance for empty page numbers.
void GetSymbols(SCH_REFERENCE_LIST &aReferences, bool aIncludePowerSymbols=true, bool aForceIncludeOrphanSymbols=false) const
Add a SCH_REFERENCE object to aReferences for each symbol in the list of sheets.
bool IsModified() const
Check the entire hierarchy for any modifications.
void AnnotatePowerSymbols()
Silently annotate the not yet annotated power symbols of the entire hierarchy of the sheet path list.
SCH_SHEET_LIST(SCH_SHEET *aSheet=nullptr, bool aCheckIntegrity=false)
Construct a flattened list of SCH_SHEET_PATH objects from aSheet.
int GetLastVirtualPageNumber() const
void UpdateSymbolInstanceData(const std::vector< SCH_SYMBOL_INSTANCE > &aSymbolInstances)
Update all of the symbol instance information using aSymbolInstances.
bool PageNumberExists(const wxString &aPageNumber) const
void AddNewSheetInstances(const SCH_SHEET_PATH &aPrefixSheetPath, int aLastVirtualPageNumber)
std::vector< KIID_PATH > GetPaths() const
void AddNewSymbolInstances(const SCH_SHEET_PATH &aPrefixSheetPath)
Attempt to add new symbol instances for all symbols in this list of sheet paths prefixed with aPrefix...
void GetSymbolsWithinPath(SCH_REFERENCE_LIST &aReferences, const SCH_SHEET_PATH &aSheetPath, bool aIncludePowerSymbols=true, bool aForceIncludeOrphanSymbols=false) const
Add a SCH_REFERENCE object to aReferences for each symbol in the list of sheets that are contained wi...
void BuildSheetList(SCH_SHEET *aSheet, bool aCheckIntegrity)
Build the list of sheets and their sheet path from aSheet.
SCH_SHEET_PATH FindSheetForScreen(const SCH_SCREEN *aScreen)
Return the first SCH_SHEET_PATH object (not necessarily the only one) using a particular screen.
bool HasPath(const KIID_PATH &aPath) const
void GetSheetsWithinPath(SCH_SHEET_PATHS &aSheets, const SCH_SHEET_PATH &aSheetPath) const
Add a SCH_SHEET_PATH object to aSheets for each sheet in the list that are contained within aSheetPat...
SCH_SHEET_PATH * FindSheetForPath(const SCH_SHEET_PATH *aPath)
Return a pointer to the first SCH_SHEET_PATH object (not necessarily the only one) matching the provi...
bool TestForRecursion(const SCH_SHEET_LIST &aSrcSheetHierarchy, const wxString &aDestFileName)
Test every SCH_SHEET_PATH in this SCH_SHEET_LIST to verify if adding the sheets stored in aSrcSheetHi...
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
SCH_ITEM * GetItem(const KIID &aID) const
Fetch a SCH_ITEM by ID.
void AppendMultiUnitSymbol(SCH_MULTI_UNIT_REFERENCE_MAP &aRefList, SCH_SYMBOL *aSymbol, bool aIncludePowerSymbols=true) const
Append a SCH_REFERENCE_LIST object to aRefList based on aSymbol, storing same-reference set of multi-...
const SCH_SHEET * GetSheet(unsigned aIndex) const
bool empty() const
Forwarded method from std::vector.
void GetSymbols(SCH_REFERENCE_LIST &aReferences, bool aIncludePowerSymbols=true, bool aForceIncludeOrphanSymbols=false) const
Adds SCH_REFERENCE object to aReferences for each symbol in the sheet.
int ComparePageNum(const SCH_SHEET_PATH &aSheetPathToTest) const
Compare sheets by their page number.
size_t GetCurrentHash() const
wxString PathHumanReadable(bool aUseShortRootName=true, bool aStripTrailingSeparator=false) const
Return the sheet path in a human readable form made from the sheet names.
bool operator==(const SCH_SHEET_PATH &d1) const
KIID_PATH Path() const
Get the sheet path as an KIID_PATH.
bool TestForRecursion(const wxString &aSrcFileName, const wxString &aDestFileName)
Test the SCH_SHEET_PATH file names to check adding the sheet stored in the file aSrcFileName to the s...
void UpdateAllScreenReferences() const
Update all the symbol references for this sheet path.
void AddNewSymbolInstances(const SCH_SHEET_PATH &aPrefixSheetPath)
Attempt to add new symbol instances for all symbols in this sheet path prefixed with aPrefixSheetPath...
void MakeFilePathRelativeToParentSheet()
Make the sheet file name relative to its parent sheet.
SCH_SCREEN * LastScreen()
int Cmp(const SCH_SHEET_PATH &aSheetPathToTest) const
Compare if this is the same sheet path as aSheetPathToTest.
void GetMultiUnitSymbols(SCH_MULTI_UNIT_REFERENCE_MAP &aRefList, bool aIncludePowerSymbols=true) const
Add a SCH_REFERENCE_LIST object to aRefList for each same-reference set of multi-unit parts in the sh...
void initFromOther(const SCH_SHEET_PATH &aOther)
wxString GetPageNumber() const
void RemoveSymbolInstances(const SCH_SHEET_PATH &aPrefixSheetPath)
bool IsContainedWithin(const SCH_SHEET_PATH &aSheetPathToTest) const
Check if this path is contained inside aSheetPathToTest.
std::vector< SCH_SHEET * > m_sheets
SCH_SHEET * at(size_t aIndex) const
Forwarded method from std::vector.
void SetVirtualPageNumber(int aPageNumber)
Set the sheet instance virtual page number.
void AppendSymbol(SCH_REFERENCE_LIST &aReferences, SCH_SYMBOL *aSymbol, bool aIncludePowerSymbols=true, bool aForceIncludeOrphanSymbols=false) const
Append a SCH_REFERENCE object to aReferences based on aSymbol.
std::map< std::pair< wxString, wxString >, bool > m_recursion_test_cache
Page numbers are maintained by the sheet load order.
wxString PathAsString() const
Return the path of time stamps which do not changes even when editing sheet parameters.
void SetPageNumber(const wxString &aPageNumber)
Set the sheet instance user definable page number.
SCH_SHEET_PATH & operator=(const SCH_SHEET_PATH &aOther)
SCH_SHEET * Last() const
Return a pointer to the last SCH_SHEET of the list.
SCH_SHEET_PATH operator+(const SCH_SHEET_PATH &aOther)
void push_back(SCH_SHEET *aSheet)
Forwarded method from std::vector.
size_t size() const
Forwarded method from std::vector.
int GetVirtualPageNumber() const
void pop_back()
Forwarded method from std::vector.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
void SetFileName(const wxString &aFilename)
wxString GetFileName() const
Return the filename corresponding to this sheet.
bool getInstance(SCH_SHEET_INSTANCE &aInstance, const KIID_PATH &aSheetPath, bool aTestFromEnd=false) const
void setPageNumber(const SCH_SHEET_PATH &aInstance, const wxString &aPageNumber)
Set the page number for the sheet instance aInstance.
std::vector< SCH_FIELD > & GetFields()
SCH_SCREEN * GetScreen() const
static int ComparePageNum(const wxString &aPageNumberA, const wxString &aPageNumberB)
Compares page numbers of schematic sheets.
wxString getPageNumber(const SCH_SHEET_PATH &aInstance) const
Return the sheet page number for aInstance.
bool addInstance(const SCH_SHEET_PATH &aInstance)
Add a new instance aSheetPath to the instance list.
void UpdatePrefix()
Set the prefix based on the current reference designator.
void UpdateUnit(int aUnit)
Change the unit number to aUnit without setting any internal flags.
void RemoveInstance(const SCH_SHEET_PATH &aInstancePath)
const std::vector< SCH_SYMBOL_INSTANCE > & GetInstanceReferences() const
void SetValueFieldText(const wxString &aValue)
const wxString GetRef(const SCH_SHEET_PATH *aSheet, bool aIncludeUnit=false) const
Return the reference for the given sheet path.
SCH_FIELD * GetField(MANDATORY_FIELD_T aFieldType)
Return a mandatory field in this symbol.
void SetFootprintFieldText(const wxString &aFootprint)
void AddHierarchicalReference(const KIID_PATH &aPath, const wxString &aRef, int aUnit)
Add a full hierarchical reference to this symbol.
bool GetInstance(SCH_SYMBOL_INSTANCE &aInstance, const KIID_PATH &aSheetPath, bool aTestFromEnd=false) const
int GetUnitSelection(const SCH_SHEET_PATH *aSheet) const
Return the instance-specific unit selection for the given sheet path.
std::unique_ptr< LIB_SYMBOL > & GetLibSymbolRef()
static bool empty(const wxTextEntryBase *aCtrl)
const wxChar *const traceSchSheetPaths
Flag to enable debug output of schematic symbol sheet path manipulation code.
const wxChar *const tracePathsAndFiles
Flag to enable path and file name debug output.
bool SortSymbolInstancesByProjectUuid(const SCH_SYMBOL_INSTANCE &aLhs, const SCH_SYMBOL_INSTANCE &aRhs)
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
std::vector< SCH_SHEET_PATH > SCH_SHEET_PATHS
std::map< wxString, SCH_REFERENCE_LIST > SCH_MULTI_UNIT_REFERENCE_MAP
Container to map reference designators for multi-unit parts.
A simple container for sheet instance information.
A simple container for schematic symbol instance information.
Definition for symbol library class.
@ REFERENCE_FIELD
Field Reference of part, i.e. "IC21".
wxLogTrace helper definitions.
@ NOT_USED
the 3d code uses this value