KiCad PCB EDA Suite
SCH_SHEET_LIST Class Reference

Class SCH_SHEET_LIST. More...

#include <sch_sheet_path.h>

Inheritance diagram for SCH_SHEET_LIST:

Public Member Functions

 SCH_SHEET_LIST (SCH_SHEET *aSheet=NULL)
 Constructor build a flattened list of SCH_SHEET_PATH objects from aSheet. More...
 
 ~SCH_SHEET_LIST ()
 
SCH_SHEET_PATHGetSheetByPath (const wxString aPath, bool aHumanReadable=true)
 Function GetSheetByPath returns a sheet matching the path name in aPath. More...
 
bool IsModified ()
 Function IsModified checks the entire hierarchy for any modifications. More...
 
void ClearModifyStatus ()
 
void AnnotatePowerSymbols ()
 Function AnnotatePowerSymbols Silently annotates the not yet annotated power symbols of the entire hierarchy of the sheet path list. More...
 
void GetComponents (SCH_REFERENCE_LIST &aReferences, bool aIncludePowerSymbols=true, bool aForceIncludeOrphanComponents=false)
 Function GetComponents adds a SCH_REFERENCE() object to aReferences for each component in the list of sheets. More...
 
void GetMultiUnitComponents (SCH_MULTI_UNIT_REFERENCE_MAP &aRefList, bool aIncludePowerSymbols=true)
 Function GetMultiUnitComponents adds a SCH_REFERENCE_LIST object to aRefList for each same-reference set of multi-unit parts in the list of sheets. More...
 
SCH_ITEMFindNextItem (KICAD_T aType, SCH_SHEET_PATH **aSheetFound=NULL, SCH_ITEM *aLastItem=NULL, bool aWrap=true)
 Function FindNextItem searches the entire schematic for the next schematic object. More...
 
SCH_ITEMFindPreviousItem (KICAD_T aType, SCH_SHEET_PATH **aSheetFound=NULL, SCH_ITEM *aLastItem=NULL, bool aWrap=true)
 Function FindPreviousItem searches the entire schematic for the previous schematic item. More...
 
bool SetComponentFootprint (const wxString &aReference, const wxString &aFootPrint, bool aSetVisible)
 Function SetFootprintField searches all the sheets for a component with aReference and set the footprint field to aFootPrint if found. More...
 
bool IsComplexHierarchy () const
 Function IsComplexHierarchy searches all of the sheets for duplicate files names which indicates a complex hierarchy. More...
 
bool TestForRecursion (const SCH_SHEET_LIST &aSrcSheetHierarchy, const wxString &aDestFileName) const
 Function TestForRecursion. More...
 
SCH_SHEETFindSheetByName (const wxString &aSheetName)
 Function FindSheetByName. More...
 
void BuildSheetList (SCH_SHEET *aSheet)
 Function BuildSheetList builds the list of sheets and their sheet path from aSheet. More...
 

Private Attributes

bool m_isRootSheet
 
SCH_SHEET_PATH m_currentSheetPath
 

Detailed Description

Class SCH_SHEET_LIST.

handles a list of SCH_SHEET_PATH objects in a flattened hierarchy.

SCH_SHEET objects are not unique, there can be many sheets with the same filename and that share the same SCH_SCREEN reference. Each The schematic file (SCH_SCREEN) may be shared between these sheets and component references are specific to a sheet path. When a sheet is entered, component references and sheet page number are updated.

Definition at line 324 of file sch_sheet_path.h.

Constructor & Destructor Documentation

SCH_SHEET_LIST::SCH_SHEET_LIST ( SCH_SHEET aSheet = NULL)

Constructor build a flattened list of SCH_SHEET_PATH objects from aSheet.

If aSheet == NULL, then this is an empty hierarchy which the user can populate.

Definition at line 430 of file sch_sheet_path.cpp.

References BuildSheetList(), and m_isRootSheet.

431 {
432  m_isRootSheet = false;
433 
434  if( aSheet != NULL )
435  BuildSheetList( aSheet );
436 }
void BuildSheetList(SCH_SHEET *aSheet)
Function BuildSheetList builds the list of sheets and their sheet path from aSheet.
SCH_SHEET_LIST::~SCH_SHEET_LIST ( )
inline

Definition at line 340 of file sch_sheet_path.h.

340 {}

Member Function Documentation

void SCH_SHEET_LIST::AnnotatePowerSymbols ( )

Function AnnotatePowerSymbols Silently annotates the not yet annotated power symbols of the entire hierarchy of the sheet path list.

It is called before creating a netlist, to annotate power symbols, without prompting the user about not annotated or duplicate for these symbols, if only these symbols need annotation ( a very frequent case ).

Definition at line 514 of file sch_sheet_path.cpp.

References SCH_REFERENCE_LIST::AddItem(), SCH_REFERENCE_LIST::Annotate(), SCH_REFERENCE_LIST::GetCount(), SCH_COMPONENT::GetPartRef(), LIB_PART::IsPower(), SCH_SHEET_PATH::LastDrawList(), SCH_ITEM::Next(), SCH_COMPONENT_T, SCH_REFERENCE_LIST::SplitReferences(), and SCH_REFERENCE_LIST::UpdateAnnotation().

Referenced by SCH_EDIT_FRAME::CreateNetlist(), SCH_EDIT_FRAME::prepareForNetlist(), and DIALOG_ERC::TestErc().

515 {
516  // List of reference for power symbols
517  SCH_REFERENCE_LIST references;
518 
519  // Map of locked components (not used, but needed by Annotate()
520  SCH_MULTI_UNIT_REFERENCE_MAP lockedComponents;
521 
522  // Build the list of power components:
523  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
524  {
525  SCH_SHEET_PATH& spath = *it;
526 
527  for( EDA_ITEM* item = spath.LastDrawList(); item; item = item->Next() )
528  {
529  if( item->Type() != SCH_COMPONENT_T )
530  continue;
531 
532  SCH_COMPONENT* component = (SCH_COMPONENT*) item;
533  LIB_PART* part = component->GetPartRef().lock().get();
534 
535  if( !part || !part->IsPower() )
536  continue;
537 
538  if( part )
539  {
540  SCH_REFERENCE reference( component, part, spath );
541  references.AddItem( reference );
542  }
543  }
544  }
545 
546  // Find duplicate, and silently clear annotation of duplicate
547  std::map<wxString, int> ref_list; // stores the existing references
548 
549  for( unsigned ii = 0; ii< references.GetCount(); ++ii )
550  {
551  wxString curr_ref = references[ii].GetRef();
552 
553  if( ref_list.find( curr_ref ) == ref_list.end() )
554  {
555  ref_list[curr_ref] = ii;
556  continue;
557  }
558 
559  // Possible duplicate, if the ref ends by a number:
560  if( curr_ref.Last() < '0' && curr_ref.Last() > '9' )
561  continue; // not annotated
562 
563  // Duplicate: clear annotation by removing the number ending the ref
564  while( curr_ref.Last() >= '0' && curr_ref.Last() <= '9' )
565  curr_ref.RemoveLast();
566 
567  references[ii].SetRef( curr_ref );
568  }
569 
570 
571  // Break full components reference in name (prefix) and number:
572  // example: IC1 become IC, and 1
573  references.SplitReferences();
574 
575  // Ensure all power symbols have the reference starting by '#'
576  // (No sure this is really useful)
577  for( unsigned ii = 0; ii< references.GetCount(); ++ii )
578  {
579  if( references[ii].GetRef()[0] != '#' )
580  {
581  wxString new_ref = "#" + references[ii].GetRef();
582  references[ii].SetRef( new_ref );
583  }
584  }
585 
586  // Recalculate and update reference numbers in schematic
587  references.Annotate( false, 100, lockedComponents );
588  references.UpdateAnnotation();
589 }
SCH_ITEM * LastDrawList() const
Function LastDrawList.
PART_REF & GetPartRef()
SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER
bool IsPower() const
void AddItem(SCH_REFERENCE &aItem)
Function AddItem adds a SCH_REFERENCE object to the list of references.
SCH_ITEM * Next() const
Class SCH_REFERENCE_LIST is used to create a flattened list of components because in a complex hierar...
void UpdateAnnotation()
function UpdateAnnotation Updates the reference components for the schematic project (or the current ...
void Annotate(bool aUseSheetNum, int aSheetIntervalId, SCH_MULTI_UNIT_REFERENCE_MAP aLockedUnitMap)
Function Annotate set the reference designators in the list that have not been annotated.
Class LIB_PART defines a library part object.
Class SCH_SHEET_PATH.
std::map< wxString, SCH_REFERENCE_LIST > SCH_MULTI_UNIT_REFERENCE_MAP
Type SCH_MULTI_UNIT_REFERENCE_MAP is used to create a map of reference designators for multi-unit par...
void SplitReferences()
Function SplitReferences attempts to split all reference designators into a name (U) and number (1)...
Class SCH_COMPONENT describes a real schematic component.
Definition: sch_component.h:69
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:165
unsigned GetCount()
Function GetCount.
Class SCH_REFERENCE is used as a helper to define a component's reference designator in a schematic...
void SCH_SHEET_LIST::BuildSheetList ( SCH_SHEET aSheet)

Function BuildSheetList builds the list of sheets and their sheet path from aSheet.

If aSheet is the root sheet, the full sheet path and sheet list are built.

Parameters
aSheetis the starting sheet from which the list is built, or NULL indicating that g_RootSheet should be used.
Exceptions
std::bad_allocif the memory for the sheet path list could not be allocated.
Todo:
: Schematic page number is currently a left over relic and is generated as SCH_SHEET_PATH object is pushed to the list. This only has meaning when entire hierarchy is created from the root sheet down.

Definition at line 455 of file sch_sheet_path.cpp.

References BuildSheetList(), g_RootSheet, SCH_SHEET::GetScreen(), SCH_SHEET_PATH::LastDrawList(), m_currentSheetPath, m_isRootSheet, EDA_ITEM::Next(), SCH_SHEET_T, SCH_SHEET_PATH::SetPageNumber(), and EDA_ITEM::Type().

Referenced by BuildSheetList(), DIALOG_PLOT_SCHEMATIC::CreateDXFFile(), DIALOG_PLOT_SCHEMATIC::createHPGLFile(), DIALOG_PLOT_SCHEMATIC::createPDFFile(), DIALOG_PLOT_SCHEMATIC::createPSFile(), DIALOG_PLOT_SCHEMATIC::createSVGFile(), SCH_EDIT_FRAME::FindComponentAndItem(), and SCH_SHEET_LIST().

456 {
457  wxCHECK_RET( aSheet != NULL, wxT( "Cannot build sheet list from undefined sheet." ) );
458 
459  if( aSheet == g_RootSheet )
460  m_isRootSheet = true;
461 
462  m_currentSheetPath.push_back( aSheet );
463 
469  m_currentSheetPath.SetPageNumber( size() + 1 );
470  push_back( m_currentSheetPath );
471 
472  if( aSheet->GetScreen() )
473  {
475 
476  while( item )
477  {
478  if( item->Type() == SCH_SHEET_T )
479  {
480  SCH_SHEET* sheet = (SCH_SHEET*) item;
481  BuildSheetList( sheet );
482  }
483 
484  item = item->Next();
485  }
486  }
487 
488  m_currentSheetPath.pop_back();
489 }
SCH_ITEM * LastDrawList() const
Function LastDrawList.
KICAD_T Type() const
Function Type()
Definition: base_struct.h:212
void SetPageNumber(int aPageNumber)
EDA_ITEM * Next() const
Definition: base_struct.h:220
SCH_SCREEN * GetScreen()
Definition: sch_sheet.h:279
SCH_SHEET * g_RootSheet
Definition: eeschema.cpp:55
SCH_SHEET_PATH m_currentSheetPath
void BuildSheetList(SCH_SHEET *aSheet)
Function BuildSheetList builds the list of sheets and their sheet path from aSheet.
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:209
Class EDA_ITEM is a base class for most all the KiCad significant classes, used in schematics and boa...
Definition: base_struct.h:165
void SCH_SHEET_LIST::ClearModifyStatus ( )

Definition at line 504 of file sch_sheet_path.cpp.

Referenced by SCH_EDIT_FRAME::OnCloseWindow().

505 {
506  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
507  {
508  if( (*it).LastScreen() )
509  (*it).LastScreen()->ClrModify();
510  }
511 }
SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER
SCH_ITEM * SCH_SHEET_LIST::FindNextItem ( KICAD_T  aType,
SCH_SHEET_PATH **  aSheetFound = NULL,
SCH_ITEM aLastItem = NULL,
bool  aWrap = true 
)

Function FindNextItem searches the entire schematic for the next schematic object.

Parameters
aType- The type of schematic item to find.
aSheetFound- The sheet the item was found in. NULL if the next item is not found.
aLastItem- Find next item after aLastItem if not NULL.
aWrap- Wrap past around the end of the list of sheets.
Returns
If found, Returns the next schematic item. Otherwise, returns NULL.

Definition at line 621 of file sch_sheet_path.cpp.

References SCH_ITEM::Next(), and EDA_ITEM::Type().

Referenced by SCH_EDIT_FRAME::OnFindDrcMarker().

623 {
624  bool hasWrapped = false;
625  bool firstItemFound = false;
626 
627  SCH_ITEM* drawItem = NULL;
628  SCH_SHEET_PATHS_ITER it = begin();
629 
630  while( it != end() )
631  {
632  drawItem = (*it).LastDrawList();
633 
634  while( drawItem )
635  {
636  if( drawItem->Type() == aType )
637  {
638  if( aLastItem == NULL || firstItemFound )
639  {
640  if( aSheetFoundIn )
641  *aSheetFoundIn = &(*it);
642 
643  return drawItem;
644  }
645  else if( !firstItemFound && drawItem == aLastItem )
646  {
647  firstItemFound = true;
648  }
649  }
650 
651  drawItem = drawItem->Next();
652  }
653 
654  ++it;
655 
656  if( it == end() && aLastItem && aWrap && !hasWrapped )
657  {
658  hasWrapped = true;
659  it = begin();
660  }
661  }
662 
663  return NULL;
664 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:212
SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER
SCH_ITEM * Next() const
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
SCH_ITEM * SCH_SHEET_LIST::FindPreviousItem ( KICAD_T  aType,
SCH_SHEET_PATH **  aSheetFound = NULL,
SCH_ITEM aLastItem = NULL,
bool  aWrap = true 
)

Function FindPreviousItem searches the entire schematic for the previous schematic item.

Parameters
aType- The type of schematic item to find.
aSheetFound- The sheet the item was found in. NULL if the previous item is not found.
aLastItem- Find the previous item before aLastItem if not NULL.
aWrap- Wrap past around the beginning of the list of sheets.
Returns
If found, the previous schematic item. Otherwise, NULL.

Definition at line 667 of file sch_sheet_path.cpp.

References SCH_ITEM::Back(), and EDA_ITEM::Type().

669 {
670  bool hasWrapped = false;
671  bool firstItemFound = false;
672  SCH_ITEM* drawItem = NULL;
673  SCH_SHEET_PATHS_RITER it = rbegin();
674 
675  while( it != rend() )
676  {
677  drawItem = (*it).FirstDrawList();
678 
679  while( drawItem )
680  {
681  if( drawItem->Type() == aType )
682  {
683  if( aLastItem == NULL || firstItemFound )
684  {
685  if( aSheetFoundIn )
686  *aSheetFoundIn = &(*it);
687 
688  return drawItem;
689  }
690  else if( !firstItemFound && drawItem == aLastItem )
691  {
692  firstItemFound = true;
693  }
694  }
695 
696  drawItem = drawItem->Back();
697  }
698 
699  ++it;
700 
701  if( it == rend() && aLastItem && aWrap && !hasWrapped )
702  {
703  hasWrapped = true;
704  it = rbegin();
705  }
706  }
707 
708  return NULL;
709 }
KICAD_T Type() const
Function Type()
Definition: base_struct.h:212
SCH_ITEM * Back() const
SCH_SHEET_PATHS::reverse_iterator SCH_SHEET_PATHS_RITER
Class SCH_ITEM is a base class for any item which can be embedded within the SCHEMATIC container clas...
SCH_SHEET * SCH_SHEET_LIST::FindSheetByName ( const wxString &  aSheetName)

Function FindSheetByName.

searches the entire SCH_SHEET_LIST for a sheet named aSheetName.

Parameters
aSheetNameis the name of the sheet to find.
Returns
a pointer to the sheet named aSheetName if found or NULL if not found.

Definition at line 777 of file sch_sheet_path.cpp.

Referenced by SCH_EDIT_FRAME::EditSheet().

778 {
779  for( unsigned i = 0; i < size(); i++ )
780  {
781  SCH_SHEET* sheet = at( i ).FindSheetByName( aSheetName );
782 
783  if( sheet )
784  return sheet;
785  }
786 
787  return NULL;
788 }
Sheet symbol placed in a schematic, and is the entry point for a sub schematic.
Definition: sch_sheet.h:209
void SCH_SHEET_LIST::GetComponents ( SCH_REFERENCE_LIST aReferences,
bool  aIncludePowerSymbols = true,
bool  aForceIncludeOrphanComponents = false 
)

Function GetComponents adds a SCH_REFERENCE() object to aReferences for each component in the list of sheets.

Parameters
aReferencesList of references to populate.
aIncludePowerSymbolsSet to false to only get normal components.
aForceIncludeOrphanComponents: true to include components having no symbol found in lib. ( orphan components) The normal option is false, and set to true only to build the full list of components.

Definition at line 592 of file sch_sheet_path.cpp.

Referenced by SCH_EDIT_FRAME::AnnotateComponents(), SCH_EDIT_FRAME::backAnnotateFootprints(), SCH_EDIT_FRAME::CheckAnnotate(), DIALOG_EDIT_COMPONENTS_LIBID::initDlg(), DIALOG_BOM_EDITOR::LoadComponents(), and SCH_EDIT_FRAME::ProcessCmpToFootprintLinkFile().

594 {
595  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
596  (*it).GetComponents( aReferences, aIncludePowerSymbols, aForceIncludeOrphanComponents );
597 }
SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER
void SCH_SHEET_LIST::GetMultiUnitComponents ( SCH_MULTI_UNIT_REFERENCE_MAP aRefList,
bool  aIncludePowerSymbols = true 
)

Function GetMultiUnitComponents adds a SCH_REFERENCE_LIST object to aRefList for each same-reference set of multi-unit parts in the list of sheets.

The map key for each element will be the reference designator.

Parameters
aRefListMap of reference designators to reference lists
aIncludePowerSymbolsSet to false to only get normal components.

Definition at line 599 of file sch_sheet_path.cpp.

Referenced by SCH_EDIT_FRAME::AnnotateComponents().

601 {
602  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
603  {
605  (*it).GetMultiUnitComponents( tempMap );
606 
607  for( SCH_MULTI_UNIT_REFERENCE_MAP::value_type& pair : tempMap )
608  {
609  // Merge this list into the main one
610  unsigned n_refs = pair.second.GetCount();
611 
612  for( unsigned thisRef = 0; thisRef < n_refs; ++thisRef )
613  {
614  aRefList[pair.first].AddItem( pair.second[thisRef] );
615  }
616  }
617  }
618 }
SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER
std::map< wxString, SCH_REFERENCE_LIST > SCH_MULTI_UNIT_REFERENCE_MAP
Type SCH_MULTI_UNIT_REFERENCE_MAP is used to create a map of reference designators for multi-unit par...
SCH_SHEET_PATH * SCH_SHEET_LIST::GetSheetByPath ( const wxString  aPath,
bool  aHumanReadable = true 
)

Function GetSheetByPath returns a sheet matching the path name in aPath.

Parameters
aPathA wxString object containing path of the sheet to get.
aHumanReadableTrue uses the human readable path for comparison. False uses the timestamp generated path.
Returns
The sheet that matches aPath or NULL if no sheet matching aPath is found.

Definition at line 439 of file sch_sheet_path.cpp.

References SCH_SHEET_PATH::PathHumanReadable().

Referenced by SCH_EDIT_FRAME::OnFindReplace(), and SCH_EDIT_FRAME::updateFindReplaceView().

440 {
441  wxString sheetPath;
442 
443  for( unsigned i = 0; i < size(); i++ )
444  {
445  sheetPath = ( aHumanReadable ) ? at( i ).PathHumanReadable() : at( i ).Path();
446 
447  if( sheetPath == aPath )
448  return &at( i );
449  }
450 
451  return NULL;
452 }
bool SCH_SHEET_LIST::IsComplexHierarchy ( ) const

Function IsComplexHierarchy searches all of the sheets for duplicate files names which indicates a complex hierarchy.

Returns
true if the SCH_SHEET_LIST is a complex hierarchy.

Definition at line 724 of file sch_sheet_path.cpp.

725 {
726  wxString fileName;
727 
728  for( unsigned i = 0; i < size(); i++ )
729  {
730  fileName = at( i ).Last()->GetFileName();
731 
732  for( unsigned j = 0; j < size(); j++ )
733  {
734  if( i == j )
735  continue;
736 
737  if( fileName == at( j ).Last()->GetFileName() )
738  return true;
739  }
740  }
741 
742  return false;
743 }
bool SCH_SHEET_LIST::IsModified ( )

Function IsModified checks the entire hierarchy for any modifications.

Returns
True if the hierarchy is modified otherwise false.

Definition at line 492 of file sch_sheet_path.cpp.

Referenced by SCH_EDIT_FRAME::OnCloseWindow(), and SCH_EDIT_FRAME::OnUpdateSave().

493 {
494  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
495  {
496  if( (*it).LastScreen() && (*it).LastScreen()->IsModify() )
497  return true;
498  }
499 
500  return false;
501 }
SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER
bool SCH_SHEET_LIST::SetComponentFootprint ( const wxString &  aReference,
const wxString &  aFootPrint,
bool  aSetVisible 
)

Function SetFootprintField searches all the sheets for a component with aReference and set the footprint field to aFootPrint if found.

Parameters
aReferenceThe reference designator of the component.
aFootPrintThe value to set the footprint field.
aSetVisibleThe value to set the field visibility flag.
Returns
True if aReference was found otherwise false.

Definition at line 712 of file sch_sheet_path.cpp.

714 {
715  bool found = false;
716 
717  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
718  found = (*it).SetComponentFootprint( aReference, aFootPrint, aSetVisible );
719 
720  return found;
721 }
SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER
bool SCH_SHEET_LIST::TestForRecursion ( const SCH_SHEET_LIST aSrcSheetHierarchy,
const wxString &  aDestFileName 
) const

Function TestForRecursion.

test every SCH_SHEET_PATH in the SCH_SHEET_LIST to verify if adding the sheets stored in aSrcSheetHierarchy to the sheet stored in aDestFileName will cause recursion.

Parameters
aSrcSheetHierarchyis the SCH_SHEET_LIST of the source sheet add to aDestFileName.
aDestFileNameis the file name of the destination sheet for aSrcFileName.
Returns
true if aFileName will cause recursion in the sheet path. Otherwise false.

Definition at line 746 of file sch_sheet_path.cpp.

References g_RootSheet, SCH_SHEET::GetFileName(), and SCH_SHEET_PATH::GetSheet().

Referenced by SCH_EDIT_FRAME::AppendSchematic(), SCH_EDIT_FRAME::EditSheet(), and SCH_EDIT_FRAME::PasteListOfItems().

748 {
749  wxFileName rootFn = g_RootSheet->GetFileName();
750  wxFileName destFn = aDestFileName;
751 
752  if( destFn.IsRelative() )
753  destFn.MakeAbsolute( rootFn.GetPath() );
754 
755  // Test each SCH_SHEET_PATH in this SCH_SHEET_LIST for potential recursion.
756  for( unsigned i = 0; i < size(); i++ )
757  {
758  // Test each SCH_SHEET_PATH in the source sheet.
759  for( unsigned j = 0; j < aSrcSheetHierarchy.size(); j++ )
760  {
761  const SCH_SHEET_PATH* sheetPath = &aSrcSheetHierarchy[j];
762 
763  for( unsigned k = 0; k < sheetPath->size(); k++ )
764  {
765  if( at( i ).TestForRecursion( sheetPath->GetSheet( k )->GetFileName(),
766  aDestFileName ) )
767  return true;
768  }
769  }
770  }
771 
772  // The source sheet file can safely be added to the destination sheet file.
773  return false;
774 }
const SCH_SHEET * GetSheet(unsigned aIndex) const
SCH_SHEET * g_RootSheet
Definition: eeschema.cpp:55
Class SCH_SHEET_PATH.
wxString GetFileName(void) const
Return the filename corresponding to this sheet.
Definition: sch_sheet.cpp:645

Member Data Documentation

SCH_SHEET_PATH SCH_SHEET_LIST::m_currentSheetPath
private

Definition at line 328 of file sch_sheet_path.h.

Referenced by BuildSheetList().

bool SCH_SHEET_LIST::m_isRootSheet
private

Definition at line 327 of file sch_sheet_path.h.

Referenced by BuildSheetList(), and SCH_SHEET_LIST().


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