KiCad PCB EDA Suite
PART_LIBS Class Reference

Class PART_LIBS is a collection of PART_LIBs. More...

#include <class_library.h>

Inheritance diagram for PART_LIBS:
PROJECT::_ELEM

Public Member Functions

 PART_LIBS ()
 
int GetModifyHash ()
 Return the modification hash for all libraries. More...
 
PART_LIBAddLibrary (const wxString &aFileName) throw ( IO_ERROR, boost::bad_pointer )
 Function AddLibrary allocates and adds a part library to the library list. More...
 
PART_LIBAddLibrary (const wxString &aFileName, PART_LIBS::iterator &aIterator) throw ( IO_ERROR, boost::bad_pointer )
 Function AddLibrary inserts a part library into the library list. More...
 
void LoadAllLibraries (PROJECT *aProject, bool aShowProgress=true) throw ( IO_ERROR, boost::bad_pointer )
 Function LoadAllLibraries loads all of the project's libraries into this container, which should be cleared before calling it. More...
 
PART_LIBFindLibrary (const wxString &aName)
 Function FindLibrary finds a part library by aName. More...
 
PART_LIBFindLibraryByFullFileName (const wxString &aFullFileName)
 
wxArrayString GetLibraryNames (bool aSorted=true)
 Function GetLibraryNames returns the list of part library file names without path and extension. More...
 
LIB_PARTFindLibPart (const LIB_ID &aLibId, const wxString &aLibraryName=wxEmptyString)
 Function FindLibPart searches all libraries in the list for a part. More...
 
LIB_ALIASFindLibraryAlias (const LIB_ID &aLibId, const wxString &aLibraryName=wxEmptyString)
 Function FindLibraryEntry searches all libraries in the list for an entry. More...
 
void FindLibraryNearEntries (std::vector< LIB_ALIAS * > &aCandidates, const wxString &aEntryName, const wxString &aLibraryName=wxEmptyString)
 Function FindLibraryNearEntries Searches all libraries in the list for an entry, using a case insensitive comparison. More...
 
int GetLibraryCount ()
 

Static Public Member Functions

static void LibNamesAndPaths (PROJECT *aProject, bool doSave, wxString *aPaths, wxArrayString *aNames=NULL) throw ( IO_ERROR, boost::bad_pointer )
 Function LibNamesAndPaths either saves or loads the names of the currently configured part libraries (without paths). More...
 
static const wxString CacheName (const wxString &aFullProjectFilename)
 Function cacheName returns the name of the cache library after potentially fixing it from an older naming scheme. More...
 

Static Public Attributes

static int s_modify_generation = 1
 helper for GetModifyHash() More...
 

Detailed Description

Class PART_LIBS is a collection of PART_LIBs.

It extends from PROJECT::_ELEM so it can be hung in the PROJECT. It does not use any UI calls, but rather simply throws an IO_ERROR when there is a problem.

Definition at line 192 of file class_library.h.

Constructor & Destructor Documentation

PART_LIBS::PART_LIBS ( )
inline

Definition at line 198 of file class_library.h.

References s_modify_generation.

199  {
201  }
static int s_modify_generation
helper for GetModifyHash()

Member Function Documentation

PART_LIB * PART_LIBS::AddLibrary ( const wxString &  aFileName)
throw ( IO_ERROR,
boost::bad_pointer
)

Function AddLibrary allocates and adds a part library to the library list.

Parameters
aFileName- File name object of part library.
Exceptions
IO_ERRORif there's any problem loading.

Definition at line 302 of file class_library.cpp.

References PART_LIB::LoadLibrary().

Referenced by SCH_EDIT_FRAME::AppendOneEEProject().

303 {
304  PART_LIB* lib;
305 
306  wxFileName fn = aFileName;
307  // Don't reload the library if it is already loaded.
308  lib = FindLibrary( fn.GetName() );
309 
310  if( lib )
311  return lib;
312 
313  lib = PART_LIB::LoadLibrary( aFileName );
314 
315  push_back( lib );
316 
317  return lib;
318 }
PART_LIB * FindLibrary(const wxString &aName)
Function FindLibrary finds a part library by aName.
static PART_LIB * LoadLibrary(const wxString &aFileName)
Function LoadLibrary allocates and loads a part library file.
Class PART_LIB is used to load, save, search, and otherwise manipulate part library files...
PART_LIB * PART_LIBS::AddLibrary ( const wxString &  aFileName,
PART_LIBS::iterator &  aIterator 
)
throw ( IO_ERROR,
boost::bad_pointer
)

Function AddLibrary inserts a part library into the library list.

Parameters
aFileName- File name object of part library.
aIterator- Iterator to insert library in front of.
Returns
PART_LIB* - the new PART_LIB, which remains owned by this PART_LIBS container.
Exceptions
IO_ERRORif there's any problem loading.

Definition at line 321 of file class_library.cpp.

References PART_LIB::LoadLibrary().

323 {
324  // Don't reload the library if it is already loaded.
325  wxFileName fn( aFileName );
326  PART_LIB* lib = FindLibrary( fn.GetName() );
327 
328  if( lib )
329  return lib;
330 
331  lib = PART_LIB::LoadLibrary( aFileName );
332 
333  if( aIterator >= begin() && aIterator < end() )
334  insert( aIterator, lib );
335  else
336  push_back( lib );
337 
338  return lib;
339 }
PART_LIB * FindLibrary(const wxString &aName)
Function FindLibrary finds a part library by aName.
static PART_LIB * LoadLibrary(const wxString &aFileName)
Function LoadLibrary allocates and loads a part library file.
Class PART_LIB is used to load, save, search, and otherwise manipulate part library files...
const wxString PART_LIBS::CacheName ( const wxString &  aFullProjectFilename)
static

Function cacheName returns the name of the cache library after potentially fixing it from an older naming scheme.

That is, the old file is renamed if needed.

Parameters
aFullProjectFilename- the *.pro filename with absolute path.

Definition at line 514 of file class_library.cpp.

References SchematicLibraryFileExtension.

Referenced by SCH_EDIT_FRAME::AppendOneEEProject().

515 {
516  /* until apr 2009 the project cache lib was named: <root_name>.cache.lib,
517  * and after: <root_name>-cache.lib. So if the <name>-cache.lib is not found,
518  * the old file will be renamed and returned.
519  */
520  wxFileName new_name = aFullProjectFilename;
521 
522  new_name.SetName( new_name.GetName() + "-cache" );
523  new_name.SetExt( SchematicLibraryFileExtension );
524 
525  if( new_name.FileExists() )
526  return new_name.GetFullPath();
527  else
528  {
529  wxFileName old_name = aFullProjectFilename;
530  old_name.SetExt( "cache.lib" );
531 
532  if( old_name.FileExists() )
533  {
534  wxRenameFile( old_name.GetFullPath(), new_name.GetFullPath() );
535  return new_name.GetFullPath();
536  }
537  }
538  return wxEmptyString;
539 }
const wxString SchematicLibraryFileExtension
LIB_PART * PART_LIBS::FindLibPart ( const LIB_ID aLibId,
const wxString &  aLibraryName = wxEmptyString 
)

Function FindLibPart searches all libraries in the list for a part.

A part object will always be returned. If the entry found is an alias. The root part will be found and returned.

Parameters
aLibId- The LIB_ID of the symbol to search for.
aLibraryName- Name of the library to search for part.
Returns
LIB_PART* - The part object if found, otherwise NULL.

Definition at line 390 of file class_library.cpp.

References PART_LIB::FindPart(), FROM_UTF8(), LIB_ID::GetLibItemName(), and PART_LIB::GetName().

Referenced by SCH_SHEET_PATH::AnnotatePowerSymbols(), SCH_EDIT_FRAME::CreateArchiveLibrary(), NETLIST_EXPORTER::findNextComponent(), NETLIST_EXPORTER::findNextComponentAndCreatePinList(), RESCUE_CACHE_CANDIDATE::FindRescues(), SCH_SHEET_PATH::GetComponents(), SCH_SHEET_PATH::GetMultiUnitComponents(), NETLIST_EXPORTER_GENERIC::makeComponents(), SCH_COMPONENT::Resolve(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().

391 {
392  LIB_PART* part = NULL;
393 
394  for( PART_LIB& lib : *this )
395  {
396  if( !aLibraryName.IsEmpty() && lib.GetName() != aLibraryName )
397  continue;
398 
399  part = lib.FindPart( FROM_UTF8( aLibId.GetLibItemName() ) );
400 
401  if( part )
402  break;
403  }
404 
405  return part;
406 }
static wxString FROM_UTF8(const char *cstring)
function FROM_UTF8 converts a UTF8 encoded C string to a wxString for all wxWidgets build modes...
Definition: macros.h:53
const UTF8 & GetLibItemName() const
Function GetLibItemName.
Definition: lib_id.h:129
const wxString GetName() const
Return the file name without path or extension.
Class LIB_PART defines a library part object.
Class PART_LIB is used to load, save, search, and otherwise manipulate part library files...
LIB_PART * FindPart(const wxString &aName)
Find part by aName.
PART_LIB * PART_LIBS::FindLibrary ( const wxString &  aName)

Function FindLibrary finds a part library by aName.

Parameters
aName- Library file name without path or extension to find.
Returns
Part library if found, otherwise NULL.

Definition at line 342 of file class_library.cpp.

Referenced by LIB_VIEW_FRAME::DisplayLibInfos(), and SCH_BASE_FRAME::SelectComponentFromLibrary().

343 {
344  for( PART_LIBS::iterator it = begin(); it!=end(); ++it )
345  {
346  if( it->GetName() == aName )
347  return &*it;
348  }
349 
350  return NULL;
351 }
LIB_ALIAS * PART_LIBS::FindLibraryAlias ( const LIB_ID aLibId,
const wxString &  aLibraryName = wxEmptyString 
)

Function FindLibraryEntry searches all libraries in the list for an entry.

The object can be either a part or an alias.

Parameters
aEntryName- Name of entry to search for (case sensitive).
aLibraryName- Name of the library to search.
Returns
The entry object if found, otherwise NULL.

Definition at line 409 of file class_library.cpp.

References PART_LIB::FindAlias(), FROM_UTF8(), LIB_ID::GetLibItemName(), and PART_LIB::GetName().

Referenced by CMP_TREE_MODEL_ADAPTER::AddAliasList(), AddMenusForComponent(), AddMenusForEditComponent(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), DisplayCmpDocAndKeywords(), RESCUE_CASE_CANDIDATE::FindRescues(), and SCH_EDIT_FRAME::OnOpenLibraryEditor().

410 {
411  LIB_ALIAS* entry = NULL;
412 
413  for( PART_LIB& lib : *this )
414  {
415  if( !aLibraryName.IsEmpty() && lib.GetName() != aLibraryName )
416  continue;
417 
418  entry = lib.FindAlias( FROM_UTF8( aLibId.GetLibItemName() ) );
419 
420  if( entry )
421  break;
422  }
423 
424  return entry;
425 }
Part library alias object definition.
static wxString FROM_UTF8(const char *cstring)
function FROM_UTF8 converts a UTF8 encoded C string to a wxString for all wxWidgets build modes...
Definition: macros.h:53
const UTF8 & GetLibItemName() const
Function GetLibItemName.
Definition: lib_id.h:129
const wxString GetName() const
Return the file name without path or extension.
Class PART_LIB is used to load, save, search, and otherwise manipulate part library files...
LIB_ALIAS * FindAlias(const wxString &aName)
Find LIB_ALIAS by aName.
PART_LIB * PART_LIBS::FindLibraryByFullFileName ( const wxString &  aFullFileName)

Definition at line 354 of file class_library.cpp.

Referenced by SCH_EDIT_FRAME::CreateArchiveLibrary().

355 {
356  for( PART_LIBS::iterator it = begin(); it!=end(); ++it )
357  {
358  if( it->GetFullFileName() == aFullFileName )
359  return &*it;
360  }
361 
362  return NULL;
363 }
void PART_LIBS::FindLibraryNearEntries ( std::vector< LIB_ALIAS * > &  aCandidates,
const wxString &  aEntryName,
const wxString &  aLibraryName = wxEmptyString 
)

Function FindLibraryNearEntries Searches all libraries in the list for an entry, using a case insensitive comparison.

Helper function used in dialog to find all candidates. During a long time, eeschema was using a case insensitive search. Therefore, for old schematics (<= 2013), or libs, for some components, the chip name (name of alias in lib) can be broken. This function can be used to display a list of candidates, in component properties dialog.

Parameters
aEntryName- Name of entries to search for (case insensitive).
aLibraryName- Name of the library to search.
aCandidates- a std::vector to store candidates

Definition at line 431 of file class_library.cpp.

References PART_LIB::FindAlias(), PART_LIB::GetAliasNames(), and PART_LIB::GetName().

Referenced by RESCUE_CASE_CANDIDATE::FindRescues().

434 {
435  for( PART_LIB& lib : *this )
436  {
437  if( !aLibraryName.IsEmpty() && lib.GetName() != aLibraryName )
438  continue;
439 
440  wxArrayString aliasNames;
441 
442  lib.GetAliasNames( aliasNames );
443 
444  if( aliasNames.IsEmpty() )
445  continue;
446 
447  for( size_t i = 0; i < aliasNames.size(); i++ )
448  {
449  if( aliasNames[i].CmpNoCase( aEntryName ) == 0 )
450  aCandidates.push_back( lib.FindAlias( aliasNames[i] ) );
451  }
452  }
453 }
void GetAliasNames(wxArrayString &aNames)
Load a string array with the names of all the entries in this library.
const wxString GetName() const
Return the file name without path or extension.
Class PART_LIB is used to load, save, search, and otherwise manipulate part library files...
LIB_ALIAS * FindAlias(const wxString &aName)
Find LIB_ALIAS by aName.
int PART_LIBS::GetLibraryCount ( )
inline

Definition at line 316 of file class_library.h.

316 { return size(); }
wxArrayString PART_LIBS::GetLibraryNames ( bool  aSorted = true)

Function GetLibraryNames returns the list of part library file names without path and extension.

Parameters
aSorted- Sort the list of name if true. Otherwise use the library load order.
Returns
The list of library names.

Definition at line 366 of file class_library.cpp.

References PART_LIB::GetName(), and PART_LIB::IsCache().

367 {
368  wxArrayString cacheNames;
369  wxArrayString names;
370 
371  for( PART_LIB& lib : *this )
372  {
373  if( lib.IsCache() && aSorted )
374  cacheNames.Add( lib.GetName() );
375  else
376  names.Add( lib.GetName() );
377  }
378 
379  // Even sorted, the cache library is always at the end of the list.
380  if( aSorted )
381  names.Sort();
382 
383  for( unsigned int i = 0; i<cacheNames.Count(); i++ )
384  names.Add( cacheNames.Item( i ) );
385 
386  return names;
387 }
bool IsCache() const
const wxString GetName() const
Return the file name without path or extension.
Class PART_LIB is used to load, save, search, and otherwise manipulate part library files...
int PART_LIBS::GetModifyHash ( )

Return the modification hash for all libraries.

The value returned changes on every library modification.

Definition at line 459 of file class_library.cpp.

Referenced by SCH_SCREEN::CheckComponentsToPartsLinks(), and SCH_EDIT_FRAME::IsSearchCacheObsolete().

460 {
461  int hash = 0;
462 
463  for( PART_LIBS::const_iterator it = begin(); it != end(); ++it )
464  {
465  hash += it->GetModHash();
466  }
467 
468  return hash;
469 }
void PART_LIBS::LibNamesAndPaths ( PROJECT aProject,
bool  doSave,
wxString *  aPaths,
wxArrayString *  aNames = NULL 
)
throw ( IO_ERROR,
boost::bad_pointer
)
static

Function LibNamesAndPaths either saves or loads the names of the currently configured part libraries (without paths).

Definition at line 472 of file class_library.cpp.

References Format(), GetChars(), GROUP_SCH, GROUP_SCH_LIBS, Kiface(), and THROW_IO_ERROR.

Referenced by insert_library(), LIB_EDIT_FRAME::InstallConfigFrame(), and SCH_EDIT_FRAME::InstallConfigFrame().

475 {
476  wxString pro = aProject->GetProjectFullName();
477 
478  PARAM_CFG_ARRAY ca;
479 
480  if( aPaths )
481  ca.push_back( new PARAM_CFG_FILENAME( "LibDir", aPaths ) );
482 
483  if( aNames )
484  ca.push_back( new PARAM_CFG_LIBNAME_LIST( wxT( "LibName" ), aNames, GROUP_SCH_LIBS ) );
485 
486  if( doSave )
487  {
488  aProject->ConfigSave( Kiface().KifaceSearch(), GROUP_SCH, ca );
489 
490  /*
491  {
492  wxString msg = wxString::Format( _(
493  "Unable save project's '%s' file" ),
494  GetChars( pro )
495  );
496  THROW_IO_ERROR( msg );
497  }
498  */
499  }
500  else
501  {
502  if( !aProject->ConfigLoad( Kiface().KifaceSearch(), GROUP_SCH, ca ) )
503  {
504  wxString msg = wxString::Format( _(
505  "Unable to load project's '%s' file" ),
506  GetChars( pro )
507  );
508  THROW_IO_ERROR( msg );
509  }
510  }
511 }
A list of parameters type.
VTBL_ENTRY void ConfigSave(const SEARCH_STACK &aSList, const wxString &aGroupName, const PARAM_CFG_ARRAY &aParams, const wxString &aFileName=wxEmptyString)
Function ConfigSave saves the current "project" parameters into the wxConfigBase* derivative...
Definition: project.cpp:307
VTBL_ENTRY const wxString GetProjectFullName() const
Function GetProjectFullName returns the full path and name of the project.
Definition: project.cpp:96
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.
Definition: kicad.cpp:52
Configuration parameter - PARAM_CFG_FILENAME Class Same as PARAM_CFG_WXSTRING, but stores "\" as "/"...
#define GROUP_SCH
Definition: config_params.h:44
#define GROUP_SCH_LIBS
(Now in fp lib tables)
Definition: config_params.h:50
#define THROW_IO_ERROR(x)
Definition: utf8.cpp:60
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
VTBL_ENTRY bool ConfigLoad(const SEARCH_STACK &aSearchS, const wxString &aGroupName, const PARAM_CFG_ARRAY &aParams, const wxString &aForeignConfigFileName=wxEmptyString)
Function ConfigLoad reads a subset of parameters from the "project" file.
Definition: project.cpp:342
void PART_LIBS::LoadAllLibraries ( PROJECT aProject,
bool  aShowProgress = true 
)
throw ( IO_ERROR,
boost::bad_pointer
)

Function LoadAllLibraries loads all of the project's libraries into this container, which should be cleared before calling it.

Definition at line 542 of file class_library.cpp.

References SEARCH_STACK::FindValidPath(), Format(), GetChars(), SchematicLibraryFileExtension, THROW_IO_ERROR, THROW_PARSE_ERROR, TO_UTF8, and IO_ERROR::What().

Referenced by insert_library().

544 {
545  wxString filename;
546  wxString libs_not_found;
547  SEARCH_STACK* lib_search = aProject->SchSearchS();
548 
549 #if defined(DEBUG) && 0
550  lib_search->Show( __func__ );
551 #endif
552 
553  wxArrayString lib_names;
554 
555  LibNamesAndPaths( aProject, false, NULL, &lib_names );
556 
557  // If the list is empty, force loading the standard power symbol library.
558  if( !lib_names.GetCount() )
559  lib_names.Add( "power" );
560 
561  wxASSERT( !size() ); // expect to load into "this" empty container.
562 
563  wxProgressDialog lib_dialog( _( "Loading Symbol Libraries" ),
564  wxEmptyString,
565  lib_names.GetCount(),
566  NULL,
567  wxPD_APP_MODAL );
568 
569  if( aShowProgress )
570  {
571  lib_dialog.Show();
572  }
573 
574  wxString progress_message;
575 
576  for( unsigned i = 0; i < lib_names.GetCount(); ++i )
577  {
578  if( aShowProgress )
579  {
580  lib_dialog.Update( i, _( "Loading " + lib_names[i] ) );
581  }
582 
583  wxFileName fn = lib_names[i];
584  // lib_names[] does not store the file extension. Set it:
585  fn.SetExt( SchematicLibraryFileExtension );
586 
587  // Skip if the file name is not valid..
588  if( !fn.IsOk() )
589  continue;
590 
591  if( !fn.FileExists() )
592  {
593  filename = lib_search->FindValidPath( fn.GetFullPath() );
594 
595  if( !filename )
596  {
597  libs_not_found += fn.GetFullPath();
598  libs_not_found += '\n';
599  continue;
600  }
601  }
602  else
603  { // ensure the lib filename has a absolute path.
604  // If the lib has no absolute path, and is found in the cwd by fn.FileExists(),
605  // make a full absolute path, to avoid issues with load library functions which
606  // expects an absolute path.
607  if( !fn.IsAbsolute() )
608  fn.MakeAbsolute();
609 
610  filename = fn.GetFullPath();
611  }
612 
613  try
614  {
615  AddLibrary( filename );
616  }
617  catch( const IO_ERROR& ioe )
618  {
619  wxString msg;
620  msg.Printf( _( "Part library '%s' failed to load. Error:\n %s" ),
621  GetChars( filename ), GetChars( ioe.What() ) );
622 
623  wxLogError( msg );
624  }
625  }
626 
627  if( aShowProgress )
628  {
629  lib_dialog.Destroy();
630  }
631 
632  // add the special cache library.
633  wxString cache_name = CacheName( aProject->GetProjectFullName() );
634  PART_LIB* cache_lib;
635 
636  if( !cache_name.IsEmpty() )
637  {
638  try
639  {
640  cache_lib = AddLibrary( cache_name );
641 
642  if( cache_lib )
643  cache_lib->SetCache();
644  }
645  catch( const IO_ERROR& ioe )
646  {
647  wxString msg = wxString::Format( _(
648  "Part library '%s' failed to load.\nError: %s" ),
649  GetChars( cache_name ),
650  GetChars( ioe.What() )
651  );
652 
653  THROW_IO_ERROR( msg );
654  }
655  }
656 
657  // Print the libraries not found
658  if( !libs_not_found.IsEmpty() )
659  {
660  // Use a different exception type so catch()er can route to proper use
661  // of the HTML_MESSAGE_BOX.
662  THROW_PARSE_ERROR( wxEmptyString, UTF8( __func__ ), UTF8( libs_not_found ), 0, 0 );
663  }
664 
665 #if defined(DEBUG) && 1
666  printf( "%s: lib_names:\n", __func__ );
667 
668  for( PART_LIBS::const_iterator it = begin(); it < end(); ++it )
669  printf( " %s\n", TO_UTF8( it->GetName() ) );
670 #endif
671 }
Class UTF8 is an 8 bit std::string that is assuredly encoded in UTF8, and supplies special conversion...
Definition: utf8.h:53
static void LibNamesAndPaths(PROJECT *aProject, bool doSave, wxString *aPaths, wxArrayString *aNames=NULL)
Function LibNamesAndPaths either saves or loads the names of the currently configured part libraries ...
VTBL_ENTRY const wxString GetProjectFullName() const
Function GetProjectFullName returns the full path and name of the project.
Definition: project.cpp:96
Class SEARCH_STACK looks for files in a number of places.
Definition: search_stack.h:41
static const wxString CacheName(const wxString &aFullProjectFilename)
Function cacheName returns the name of the cache library after potentially fixing it from an older na...
#define TO_UTF8(wxstring)
Macro TO_UTF8 converts a wxString to a UTF8 encoded C string for all wxWidgets build modes...
Definition: macros.h:47
#define THROW_PARSE_ERROR(aProblem, aSource, aInputLine, aLineNumber, aByteIndex)
Definition: ki_exception.h:133
PART_LIB * AddLibrary(const wxString &aFileName)
Function AddLibrary allocates and adds a part library to the library list.
#define THROW_IO_ERROR(x)
Definition: utf8.cpp:60
const wxString SchematicLibraryFileExtension
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:33
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
wxString FindValidPath(const wxString &aFileName) const
Definition: search_stack.h:71
Class PART_LIB is used to load, save, search, and otherwise manipulate part library files...
Struct IO_ERROR is a class used to hold an error message and may be used when throwing exceptions con...
Definition: ki_exception.h:47

Member Data Documentation

int PART_LIBS::s_modify_generation = 1
static

helper for GetModifyHash()

Definition at line 196 of file class_library.h.

Referenced by PART_LIBS().


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