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 (PART_LIBS *aLib)
 Function AnnotatePowerSymbols Silently annotates the not yet annotated power symbols of the entire hierarchy of the sheet path list. More...
 
void GetComponents (PART_LIBS *aLibs, SCH_REFERENCE_LIST &aReferences, bool aIncludePowerSymbols=true)
 Function GetComponents adds a SCH_REFERENCE() object to aReferences for each component in the list of sheets. More...
 
void GetMultiUnitComponents (PART_LIBS *aLibs, 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 321 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 431 of file sch_sheet_path.cpp.

References BuildSheetList(), and m_isRootSheet.

432 {
433  m_isRootSheet = false;
434 
435  if( aSheet != NULL )
436  BuildSheetList( aSheet );
437 }
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 337 of file sch_sheet_path.h.

337 {}

Member Function Documentation

void SCH_SHEET_LIST::AnnotatePowerSymbols ( PART_LIBS aLib)

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 ).

Parameters
aLibthe library list to use

Definition at line 515 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::prepareForNetlist(), and DIALOG_ERC::TestErc().

516 {
517  // List of reference for power symbols
518  SCH_REFERENCE_LIST references;
519 
520  // Map of locked components (not used, but needed by Annotate()
521  SCH_MULTI_UNIT_REFERENCE_MAP lockedComponents;
522 
523  // Build the list of power components:
524  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
525  {
526  SCH_SHEET_PATH& spath = *it;
527 
528  for( EDA_ITEM* item = spath.LastDrawList(); item; item = item->Next() )
529  {
530  if( item->Type() != SCH_COMPONENT_T )
531  continue;
532 
533  SCH_COMPONENT* component = (SCH_COMPONENT*) item;
534  LIB_PART* part = component->GetPartRef().lock().get();
535 
536  if( !part || !part->IsPower() )
537  continue;
538 
539  if( part )
540  {
541  SCH_REFERENCE reference( component, part, spath );
542  references.AddItem( reference );
543  }
544  }
545  }
546 
547  // Find duplicate, and silently clear annotation of duplicate
548  std::map<wxString, int> ref_list; // stores the existing references
549 
550  for( unsigned ii = 0; ii< references.GetCount(); ++ii )
551  {
552  wxString curr_ref = references[ii].GetRef();
553 
554  if( ref_list.find( curr_ref ) == ref_list.end() )
555  {
556  ref_list[curr_ref] = ii;
557  continue;
558  }
559 
560  // Possible duplicate, if the ref ends by a number:
561  if( curr_ref.Last() < '0' && curr_ref.Last() > '9' )
562  continue; // not annotated
563 
564  // Duplicate: clear annotation by removing the number ending the ref
565  while( curr_ref.Last() >= '0' && curr_ref.Last() <= '9' )
566  curr_ref.RemoveLast();
567 
568  references[ii].SetRef( curr_ref );
569  }
570 
571 
572  // Break full components reference in name (prefix) and number:
573  // example: IC1 become IC, and 1
574  references.SplitReferences();
575 
576  // Ensure all power symbols have the reference starting by '#'
577  // (No sure this is really useful)
578  for( unsigned ii = 0; ii< references.GetCount(); ++ii )
579  {
580  if( references[ii].GetRef()[0] != '#' )
581  {
582  wxString new_ref = "#" + references[ii].GetRef();
583  references[ii].SetRef( new_ref );
584  }
585  }
586 
587  // Recalculate and update reference numbers in schematic
588  references.Annotate( false, 100, lockedComponents );
589  references.UpdateAnnotation();
590 }
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 456 of file sch_sheet_path.cpp.

References 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 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().

457 {
458  wxCHECK_RET( aSheet != NULL, wxT( "Cannot build sheet list from undefined sheet." ) );
459 
460  if( aSheet == g_RootSheet )
461  m_isRootSheet = true;
462 
463  m_currentSheetPath.push_back( aSheet );
464 
470  m_currentSheetPath.SetPageNumber( size() + 1 );
471  push_back( m_currentSheetPath );
472 
473  if( aSheet->GetScreen() )
474  {
476 
477  while( item )
478  {
479  if( item->Type() == SCH_SHEET_T )
480  {
481  SCH_SHEET* sheet = (SCH_SHEET*) item;
482  BuildSheetList( sheet );
483  }
484 
485  item = item->Next();
486  }
487  }
488 
489  m_currentSheetPath.pop_back();
490 }
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:286
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.
Class SCH_SHEET is the sheet symbol placed in a schematic, and is the entry point for a sub schematic...
Definition: sch_sheet.h:216
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 505 of file sch_sheet_path.cpp.

Referenced by SCH_EDIT_FRAME::OnCloseWindow().

506 {
507  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
508  {
509  if( (*it).LastScreen() )
510  (*it).LastScreen()->ClrModify();
511  }
512 }
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 623 of file sch_sheet_path.cpp.

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

Referenced by SCH_EDIT_FRAME::OnFindDrcMarker().

625 {
626  bool hasWrapped = false;
627  bool firstItemFound = false;
628 
629  SCH_ITEM* drawItem = NULL;
630  SCH_SHEET_PATHS_ITER it = begin();
631 
632  while( it != end() )
633  {
634  drawItem = (*it).LastDrawList();
635 
636  while( drawItem )
637  {
638  if( drawItem->Type() == aType )
639  {
640  if( aLastItem == NULL || firstItemFound )
641  {
642  if( aSheetFoundIn )
643  *aSheetFoundIn = &(*it);
644 
645  return drawItem;
646  }
647  else if( !firstItemFound && drawItem == aLastItem )
648  {
649  firstItemFound = true;
650  }
651  }
652 
653  drawItem = drawItem->Next();
654  }
655 
656  ++it;
657 
658  if( it == end() && aLastItem && aWrap && !hasWrapped )
659  {
660  hasWrapped = true;
661  it = begin();
662  }
663  }
664 
665  return NULL;
666 }
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 669 of file sch_sheet_path.cpp.

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

671 {
672  bool hasWrapped = false;
673  bool firstItemFound = false;
674  SCH_ITEM* drawItem = NULL;
675  SCH_SHEET_PATHS_RITER it = rbegin();
676 
677  while( it != rend() )
678  {
679  drawItem = (*it).FirstDrawList();
680 
681  while( drawItem )
682  {
683  if( drawItem->Type() == aType )
684  {
685  if( aLastItem == NULL || firstItemFound )
686  {
687  if( aSheetFoundIn )
688  *aSheetFoundIn = &(*it);
689 
690  return drawItem;
691  }
692  else if( !firstItemFound && drawItem == aLastItem )
693  {
694  firstItemFound = true;
695  }
696  }
697 
698  drawItem = drawItem->Back();
699  }
700 
701  ++it;
702 
703  if( it == rend() && aLastItem && aWrap && !hasWrapped )
704  {
705  hasWrapped = true;
706  it = rbegin();
707  }
708  }
709 
710  return NULL;
711 }
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 779 of file sch_sheet_path.cpp.

Referenced by SCH_EDIT_FRAME::EditSheet().

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

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

Parameters
aLibsthe library list to use
aReferencesList of references to populate.
aIncludePowerSymbolsSet to false to only get normal components.

Definition at line 593 of file sch_sheet_path.cpp.

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

595 {
596  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
597  (*it).GetComponents( aLibs, aReferences, aIncludePowerSymbols );
598 }
SCH_SHEET_PATHS::iterator SCH_SHEET_PATHS_ITER
void SCH_SHEET_LIST::GetMultiUnitComponents ( PART_LIBS aLibs,
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
aLibsthe library list to use
aRefListMap of reference designators to reference lists
aIncludePowerSymbolsSet to false to only get normal components.

Definition at line 600 of file sch_sheet_path.cpp.

Referenced by SCH_EDIT_FRAME::AnnotateComponents().

603 {
604  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
605  {
607  (*it).GetMultiUnitComponents( aLibs, tempMap );
608 
609  for( SCH_MULTI_UNIT_REFERENCE_MAP::value_type& pair : tempMap )
610  {
611  // Merge this list into the main one
612  unsigned n_refs = pair.second.GetCount();
613 
614  for( unsigned thisRef = 0; thisRef < n_refs; ++thisRef )
615  {
616  aRefList[pair.first].AddItem( pair.second[thisRef] );
617  }
618  }
619  }
620 }
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 440 of file sch_sheet_path.cpp.

References SCH_SHEET_PATH::PathHumanReadable().

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

441 {
442  wxString sheetPath;
443 
444  for( unsigned i = 0; i < size(); i++ )
445  {
446  sheetPath = ( aHumanReadable ) ? at( i ).PathHumanReadable() : at( i ).Path();
447 
448  if( sheetPath == aPath )
449  return &at( i );
450  }
451 
452  return NULL;
453 }
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 726 of file sch_sheet_path.cpp.

727 {
728  wxString fileName;
729 
730  for( unsigned i = 0; i < size(); i++ )
731  {
732  fileName = at( i ).Last()->GetFileName();
733 
734  for( unsigned j = 0; j < size(); j++ )
735  {
736  if( i == j )
737  continue;
738 
739  if( fileName == at( j ).Last()->GetFileName() )
740  return true;
741  }
742  }
743 
744  return false;
745 }
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 493 of file sch_sheet_path.cpp.

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

494 {
495  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
496  {
497  if( (*it).LastScreen() && (*it).LastScreen()->IsModify() )
498  return true;
499  }
500 
501  return false;
502 }
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 714 of file sch_sheet_path.cpp.

716 {
717  bool found = false;
718 
719  for( SCH_SHEET_PATHS_ITER it = begin(); it != end(); ++it )
720  found = (*it).SetComponentFootprint( aReference, aFootPrint, aSetVisible );
721 
722  return found;
723 }
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 748 of file sch_sheet_path.cpp.

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

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

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

Member Data Documentation

SCH_SHEET_PATH SCH_SHEET_LIST::m_currentSheetPath
private

Definition at line 325 of file sch_sheet_path.h.

Referenced by BuildSheetList().

bool SCH_SHEET_LIST::m_isRootSheet
private

Definition at line 324 of file sch_sheet_path.h.

Referenced by BuildSheetList(), and SCH_SHEET_LIST().


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