KiCad PCB EDA Suite
Loading...
Searching...
No Matches
SCH_IO_LIB_CACHE Class Referenceabstract

A base cache assistant implementation for the symbol library portion of the SCH_IO API. More...

#include <sch_io_lib_cache.h>

Inheritance diagram for SCH_IO_LIB_CACHE:
SCH_IO_ALTIUM_LIB_CACHE SCH_IO_KICAD_LEGACY_LIB_CACHE SCH_IO_KICAD_SEXPR_LIB_CACHE

Public Member Functions

 SCH_IO_LIB_CACHE (const wxString &aLibraryPath)
 
virtual ~SCH_IO_LIB_CACHE ()
 
void IncrementModifyHash ()
 
int GetModifyHash ()
 
virtual void Save (const std::optional< bool > &aOpt=std::nullopt)
 Save the entire library to file m_libFileName;.
 
virtual void Load ()=0
 
virtual void AddSymbol (const LIB_SYMBOL *aSymbol)
 
virtual void DeleteSymbol (const wxString &aName)=0
 
virtual LIB_SYMBOLGetSymbol (const wxString &aName)
 
wxFileName GetRealFile () const
 
long long GetLibModificationTime ()
 
bool IsFile (const wxString &aFullPathAndFileName) const
 
bool IsFileChanged () const
 
void SetModified (bool aModified=true)
 
bool HasParseError () const
 
void SetParseError (bool aHasError=true)
 Set the parse error state.
 
wxString GetLogicalName () const
 
void SetFileName (const wxString &aFileName)
 
wxString GetFileName () const
 
const LIB_SYMBOL_MAPGetSymbolMap () const
 

Protected Member Functions

LIB_SYMBOLremoveSymbol (LIB_SYMBOL *aAlias)
 

Protected Attributes

int m_modHash
 
std::mutex m_modHashMutex
 
wxString m_fileName
 
wxFileName m_libFileName
 
long long m_fileModTime
 
LIB_SYMBOL_MAP m_symbols
 
std::map< wxString, wxString > m_symbolSourceFiles
 For folder-based libraries, track which source file each symbol was loaded from.
 
bool m_isWritable
 
bool m_isModified
 
bool m_hasParseError
 
SCH_LIB_TYPE m_libType
 

Detailed Description

A base cache assistant implementation for the symbol library portion of the SCH_IO API.

Definition at line 41 of file sch_io_lib_cache.h.

Constructor & Destructor Documentation

◆ SCH_IO_LIB_CACHE()

◆ ~SCH_IO_LIB_CACHE()

SCH_IO_LIB_CACHE::~SCH_IO_LIB_CACHE ( )
virtual

Definition at line 50 of file sch_io_lib_cache.cpp.

References m_symbols.

Member Function Documentation

◆ AddSymbol()

void SCH_IO_LIB_CACHE::AddSymbol ( const LIB_SYMBOL * aSymbol)
virtual

◆ DeleteSymbol()

virtual void SCH_IO_LIB_CACHE::DeleteSymbol ( const wxString & aName)
pure virtual

◆ GetFileName()

wxString SCH_IO_LIB_CACHE::GetFileName ( ) const
inline

Definition at line 104 of file sch_io_lib_cache.h.

References m_libFileName.

◆ GetLibModificationTime()

◆ GetLogicalName()

wxString SCH_IO_LIB_CACHE::GetLogicalName ( ) const
inline

Definition at line 100 of file sch_io_lib_cache.h.

References m_libFileName.

◆ GetModifyHash()

int SCH_IO_LIB_CACHE::GetModifyHash ( )
inline

Definition at line 53 of file sch_io_lib_cache.h.

References m_modHash, and m_modHashMutex.

◆ GetRealFile()

wxFileName SCH_IO_LIB_CACHE::GetRealFile ( ) const

◆ GetSymbol()

LIB_SYMBOL * SCH_IO_LIB_CACHE::GetSymbol ( const wxString & aName)
virtual

Definition at line 228 of file sch_io_lib_cache.cpp.

References m_symbols.

Referenced by EESCHEMA_JOBS_HANDLER::JobSymExportSvg().

◆ GetSymbolMap()

const LIB_SYMBOL_MAP & SCH_IO_LIB_CACHE::GetSymbolMap ( ) const
inline

◆ HasParseError()

bool SCH_IO_LIB_CACHE::HasParseError ( ) const
inline
Returns
true if the library had a parse error during loading.

When a parse error occurs, only symbols before the error are loaded. Saving a library in this state would permanently lose symbols after the error.

Definition at line 91 of file sch_io_lib_cache.h.

References m_hasParseError.

Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), and SCH_IO_KICAD_SEXPR_LIB_CACHE::Save().

◆ IncrementModifyHash()

◆ IsFile()

bool SCH_IO_LIB_CACHE::IsFile ( const wxString & aFullPathAndFileName) const

Definition at line 103 of file sch_io_lib_cache.cpp.

References m_fileName.

◆ IsFileChanged()

bool SCH_IO_LIB_CACHE::IsFileChanged ( ) const

◆ Load()

virtual void SCH_IO_LIB_CACHE::Load ( )
pure virtual

◆ removeSymbol()

◆ Save()

void SCH_IO_LIB_CACHE::Save ( const std::optional< bool > & aOpt = std::nullopt)
virtual

Save the entire library to file m_libFileName;.

Reimplemented in SCH_IO_KICAD_LEGACY_LIB_CACHE, and SCH_IO_KICAD_SEXPR_LIB_CACHE.

Definition at line 60 of file sch_io_lib_cache.cpp.

◆ SetFileName()

void SCH_IO_LIB_CACHE::SetFileName ( const wxString & aFileName)

Definition at line 109 of file sch_io_lib_cache.cpp.

References m_fileName, and m_libFileName.

Referenced by EESCHEMA_JOBS_HANDLER::JobSymUpgrade().

◆ SetModified()

void SCH_IO_LIB_CACHE::SetModified ( bool aModified = true)
inline

◆ SetParseError()

void SCH_IO_LIB_CACHE::SetParseError ( bool aHasError = true)
inline

Set the parse error state.

Parameters
aHasErrortrue if the library had a parse error during loading.

Definition at line 98 of file sch_io_lib_cache.h.

References m_hasParseError.

Referenced by SCH_IO_KICAD_SEXPR_LIB_CACHE::Load().

Member Data Documentation

◆ m_fileModTime

◆ m_fileName

wxString SCH_IO_LIB_CACHE::m_fileName
protected

Definition at line 114 of file sch_io_lib_cache.h.

Referenced by IsFile(), SCH_IO_LIB_CACHE(), and SetFileName().

◆ m_hasParseError

bool SCH_IO_LIB_CACHE::m_hasParseError
protected

Definition at line 127 of file sch_io_lib_cache.h.

Referenced by HasParseError(), SCH_IO_LIB_CACHE(), and SetParseError().

◆ m_isModified

◆ m_isWritable

bool SCH_IO_LIB_CACHE::m_isWritable
protected

Definition at line 125 of file sch_io_lib_cache.h.

Referenced by GetLibModificationTime(), and SCH_IO_LIB_CACHE().

◆ m_libFileName

◆ m_libType

SCH_LIB_TYPE SCH_IO_LIB_CACHE::m_libType
protected

Definition at line 128 of file sch_io_lib_cache.h.

Referenced by SCH_IO_KICAD_LEGACY_LIB_CACHE::Load(), and SCH_IO_LIB_CACHE().

◆ m_modHash

int SCH_IO_LIB_CACHE::m_modHash
protected

Definition at line 111 of file sch_io_lib_cache.h.

Referenced by GetModifyHash(), IncrementModifyHash(), and SCH_IO_LIB_CACHE().

◆ m_modHashMutex

std::mutex SCH_IO_LIB_CACHE::m_modHashMutex
protected

Definition at line 112 of file sch_io_lib_cache.h.

Referenced by GetModifyHash(), and IncrementModifyHash().

◆ m_symbols

◆ m_symbolSourceFiles

std::map<wxString, wxString> SCH_IO_LIB_CACHE::m_symbolSourceFiles
protected

For folder-based libraries, track which source file each symbol was loaded from.

Key is symbol name, value is the full path to the source file. This allows saving symbols back to their original files rather than creating individual files for each symbol.

Definition at line 123 of file sch_io_lib_cache.h.

Referenced by SCH_IO_KICAD_SEXPR_LIB_CACHE::Load(), and SCH_IO_KICAD_SEXPR_LIB_CACHE::Save().


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