KiCad PCB EDA Suite
Loading...
Searching...
No Matches
LIB_ID Class Reference

A logical library item identifier and consists of various portions much like a URI. More...

#include <lib_id.h>

Public Member Functions

 LIB_ID ()
 
 LIB_ID (const wxString &aLibraryName, const wxString &aItemName)
 This LIB_ID ctor is a special version which ignores the parsing due to symbol names allowing '/' as a valid character. More...
 
int Parse (const UTF8 &aId, bool aFix=false)
 Parse LIB_ID with the information from aId. More...
 
const UTF8GetLibNickname () const
 Return the logical library name portion of a LIB_ID. More...
 
const wxString GetUniStringLibNickname () const
 
int SetLibNickname (const UTF8 &aLibNickname)
 Override the logical library name portion of the LIB_ID to aLibNickname. More...
 
const UTF8GetLibItemName () const
 
const wxString GetUniStringLibItemName () const
 Get strings for display messages in dialogs. More...
 
int SetLibItemName (const UTF8 &aLibItemName)
 Override the library item name portion of the LIB_ID to aLibItemName. More...
 
UTF8 GetSubLibraryName () const
 Some LIB_IDs can have a sub-library identifier in addition to a library nickname. More...
 
void SetSubLibraryName (const UTF8 &aName)
 
const wxString GetUniStringSubLibraryName () const
 
const wxString GetFullLibraryName () const
 
UTF8 Format () const
 
wxString GetUniStringLibId () const
 
bool IsValid () const
 Check if this LID_ID is valid. More...
 
bool IsLegacy () const
 
void clear ()
 Clear the contents of the library nickname, library entry name. More...
 
bool empty () const
 
int compare (const LIB_ID &aLibId) const
 Compare the contents of LIB_ID objects by performing a std::string comparison of the library nickname, library entry name. More...
 
bool operator< (const LIB_ID &aLibId) const
 
bool operator> (const LIB_ID &aLibId) const
 
bool operator== (const LIB_ID &aLibId) const
 
bool operator!= (const LIB_ID &aLibId) const
 

Static Public Member Functions

static UTF8 Format (const UTF8 &aLibraryName, const UTF8 &aLibItemName)
 
static int HasIllegalChars (const UTF8 &aLibItemName)
 Examine aLibItemName for invalid LIB_ID item name characters. More...
 
static UTF8 FixIllegalChars (const UTF8 &aLibItemName, bool aLib)
 Replace illegal LIB_ID item name characters with underscores '_'. More...
 
static unsigned FindIllegalLibraryNameChar (const UTF8 &aLibraryName)
 Looks for characters that are illegal in library nicknames. More...
 

Static Protected Member Functions

static bool isLegalChar (unsigned aUniChar)
 Tests whether a Unicode character is a legal LIB_ID item name character. More...
 
static bool isLegalLibraryNameChar (unsigned aUniChar)
 Tests whether a Unicode character is a legal LIB_ID library nickname character. More...
 

Protected Attributes

UTF8 m_libraryName
 The nickname of the library or empty. More...
 
UTF8 m_itemName
 The name of the entry in the logical library. More...
 
UTF8 m_subLibraryName
 Optional sub-library name used for grouping within a library. More...
 

Detailed Description

A logical library item identifier and consists of various portions much like a URI.

It consists of of a dyad of the library nickname and the name of the item in the library This is a generic library identifier that can be used for any type of library that contains multiple named items such as footprint or symbol libraries.

Example LIB_ID string: "smt:R_0805".

  • "smt" is the logical library name used to look up library information saved in the LIB_TABLE.
  • "R" is the name of the item within the library.
Author
Dick Hollenbeck

Definition at line 48 of file lib_id.h.

Constructor & Destructor Documentation

◆ LIB_ID() [1/2]

LIB_ID::LIB_ID ( )
inline

Definition at line 51 of file lib_id.h.

◆ LIB_ID() [2/2]

LIB_ID::LIB_ID ( const wxString &  aLibraryName,
const wxString &  aItemName 
)

This LIB_ID ctor is a special version which ignores the parsing due to symbol names allowing '/' as a valid character.

This was causing the symbol names to be truncated at the first occurrence of '/' in the symbol name.

Parameters
aLibraryNameis the library name used to look up the library item in the LIB_TABLE.
aItemNameis the name of the library item which is not parsed by the standard LIB_ID::Parse() function.

Definition at line 92 of file lib_id.cpp.

Member Function Documentation

◆ clear()

void LIB_ID::clear ( )

Clear the contents of the library nickname, library entry name.

Definition at line 43 of file lib_id.cpp.

References UTF8::clear(), m_itemName, m_libraryName, and m_subLibraryName.

Referenced by FOOTPRINT_PREVIEW_WIDGET::DisplayFootprint(), and Parse().

◆ compare()

int LIB_ID::compare ( const LIB_ID aLibId) const

Compare the contents of LIB_ID objects by performing a std::string comparison of the library nickname, library entry name.

Parameters
aLibIdis the LIB_ID to compare against.
Returns
-1 if less than aLibId, 1 if greater than aLibId, and 0 if equal to aLibId.

Definition at line 160 of file lib_id.cpp.

References UTF8::compare(), m_itemName, and m_libraryName.

Referenced by LIB_SYMBOL::Compare().

◆ empty()

◆ FindIllegalLibraryNameChar()

unsigned LIB_ID::FindIllegalLibraryNameChar ( const UTF8 aLibraryName)
static

Looks for characters that are illegal in library nicknames.

Parameters
aLibraryNameis the logical library name to be tested.
Returns
Invalid character found in the name or 0 is the name is valid.

Definition at line 243 of file lib_id.cpp.

References isLegalLibraryNameChar().

Referenced by PANEL_SYM_LIB_TABLE::verifyTables(), and PANEL_FP_LIB_TABLE::verifyTables().

◆ FixIllegalChars()

UTF8 LIB_ID::FixIllegalChars ( const UTF8 aLibItemName,
bool  aLib 
)
static

Replace illegal LIB_ID item name characters with underscores '_'.

Parameters
aLibItemNameis the LIB_ID item name to replace illegal characters.
aLibTrue if we are checking library names, false if we are checking item names
Returns
the corrected version of aLibItemName.

Definition at line 191 of file lib_id.cpp.

References isLegalChar(), isLegalLibraryNameChar(), UTF8::ubegin(), and UTF8::uend().

Referenced by AltiumToKiCadLibID(), PANEL_FP_LIB_TABLE::browseLibrariesHandler(), PANEL_SYM_LIB_TABLE::browseLibrariesHandler(), SCH_IO_ALTIUM::getLibName(), SCH_IO_EAGLE::getLibName(), SCH_IO_CADSTAR_ARCHIVE::LoadSchematicFile(), loadSymbol(), Parse(), EASYEDAPRO::ShortenLibName(), and EASYEDAPRO::ToKiCadLibID().

◆ Format() [1/2]

UTF8 LIB_ID::Format ( ) const
Returns
the fully formatted text of the LIB_ID in a UTF8 string.

Definition at line 118 of file lib_id.cpp.

References m_itemName, m_libraryName, and UTF8::size().

Referenced by SCH_SCREEN::AddLibSymbol(), BOARD_NETLIST_UPDATER::addNewFootprint(), CVPCB_ASSOCIATION_TOOL::Associate(), CVPCB_MAINFRAME::AssociateFootprint(), GENCAD_EXPORTER::CreateDevicesSection(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::FindRescues(), SYMBOL_LIB::FindSymbol(), PCB_IO_KICAD_SEXPR::format(), SCH_IO_KICAD_SEXPR::Format(), COMPONENT::Format(), RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::GetActionDescription(), FOOTPRINT::GetFPIDAsString(), SCH_SYMBOL::GetSchSymbolLibraryName(), SCH_SYMBOL::GetSymbolIDAsString(), DIALOG_CHANGE_SYMBOLS::getSymbolReferences(), DISPLAY_FOOTPRINTS_FRAME::InitDisplay(), PCB_EDIT_FRAME::LoadFootprints(), DSN::SPECCTRA_DB::makeIMAGE(), SYMBOL_CHOOSER_FRAME::OnOK(), FOOTPRINT_CHOOSER_FRAME::OnOK(), SCH_IO_ALTIUM::ParseImplementation(), RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::PerformAction(), DIALOG_EXCHANGE_FOOTPRINTS::processFootprint(), CVPCB_MAINFRAME::readNetListAndFpFiles(), CVPCB_MAINFRAME::refreshAfterSymbolSearch(), BOARD_NETLIST_UPDATER::replaceFootprint(), RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::RESCUE_SYMBOL_LIB_TABLE_CANDIDATE(), SCH_IO_KICAD_LEGACY::saveSymbol(), SCH_IO_KICAD_SEXPR::saveSymbol(), PCB_BASE_FRAME::SelectFootprintFromLibrary(), CADSTAR_SCH_ARCHIVE_LOADER::setFootprintOnSymbol(), DIALOG_EDIT_SYMBOLS_LIBID::setLibIdByBrowser(), FOOTPRINTS_LISTBOX::SetSelectedFootprint(), SYMBOL_CANDIDATE::SYMBOL_CANDIDATE(), BOARD_NETLIST_UPDATER::testConnectivity(), DIALOG_SYMBOL_PROPERTIES::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataToWindow(), FOOTPRINT_CHOOSER_FRAME::Update3DView(), BOARD_NETLIST_UPDATER::UpdateNetlist(), and FOOTPRINT_EDIT_FRAME::UpdateTitle().

◆ Format() [2/2]

UTF8 LIB_ID::Format ( const UTF8 aLibraryName,
const UTF8 aLibItemName 
)
static
Returns
a string in the proper format as an LIB_ID for a combination of aLibraryName, aLibItemName
Exceptions
PARSE_ERRORif any of the pieces are illegal.

Definition at line 134 of file lib_id.cpp.

References _, UTF8::c_str(), checkLibNickname(), UTF8::size(), and THROW_PARSE_ERROR.

◆ GetFullLibraryName()

const wxString LIB_ID::GetFullLibraryName ( ) const
Returns
a display-formatted name of the library and sublibrary (if present)

Definition at line 277 of file lib_id.cpp.

References m_libraryName, m_subLibraryName, and UTF8::wx_str().

Referenced by SYMBOL_VIEWER_FRAME::SetSelectedLibrary().

◆ GetLibItemName()

const UTF8 & LIB_ID::GetLibItemName ( ) const
inline
Returns
the library item name, i.e. footprintName, in UTF8.

Definition at line 102 of file lib_id.h.

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbol(), BASIC_FOOTPRINT_INFO::BASIC_FOOTPRINT_INFO(), FOOTPRINT_EDIT_FRAME::canCloseWindow(), SCH_REFERENCE::CompareLibName(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), BOARD_INSPECTION_TOOL::DiffFootprint(), EE_INSPECTION_TOOL::DiffSymbol(), FOOTPRINT_PREVIEW_PANEL::DisplayFootprint(), SYMBOL_PREVIEW_WIDGET::DisplaySymbol(), PCBNEW_JOBS_HANDLER::doFpExportSvg(), FOOTPRINT_EDIT_FRAME::DuplicateFootprint(), SYMBOL_EDIT_FRAME::DuplicateSymbol(), SYMBOL_EDITOR_CONTROL::EditSymbol(), PCB_EDIT_FRAME::ExchangeFootprint(), FOOTPRINT_EDIT_FRAME::ExportFootprint(), LIB_TREE_MODEL_ADAPTER::FindItem(), SYMBOL_LIBS::FindLibSymbol(), RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::FindRescues(), FP_LIB_TABLE::FootprintLoadWithOptionalNickname(), PCB_IO_KICAD_SEXPR::FootprintSave(), FP_LIB_TABLE::FootprintSave(), PCB_IO_KICAD_SEXPR::format(), FOOTPRINT_INFO_GENERATOR::GenerateHtml(), PLACE_FILE_EXPORTER::GenPositionData(), RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::GetActionDescription(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), FOOTPRINT_LIST::GetFootprintInfo(), SYMBOL_EDIT_FRAME::getTargetSymbol(), guessNickname(), SYMBOL_EDITOR_CONTROL::Init(), FOOTPRINT_EDITOR_CONTROL::Init(), SYMBOL_EDIT_FRAME::IsCurrentSymbol(), PCBNEW_JOBS_HANDLER::JobExportFpSvg(), CV::kiface(), CADSTAR_PCB_ARCHIVE_LOADER::loadComponentLibrary(), PCB_IO_KICAD_LEGACY::loadFOOTPRINT(), PCB_EDIT_FRAME::LoadFootprints(), PCB_IO_KICAD_LEGACY::loadFP_SHAPE(), PCB_IO_KICAD_LEGACY::loadPAD(), SYMBOL_LIB_TABLE::LoadSymbol(), SYMBOL_EDIT_FRAME::LoadSymbol(), SYMBOL_LIB_TABLE::LoadSymbolWithOptionalNickname(), DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton(), PCB_BASE_FRAME::OnFpChangeDebounceTimer(), PCB_EDIT_FRAME::OpenProjectFiles(), FOOTPRINT_EDITOR_CONTROL::OpenWithTextEditor(), PCB_IO_EAGLE::packageText(), SCH_EASYEDAPRO_PARSER::ParseSchematic(), RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::PerformAction(), PANEL_SYMBOL_CHOOSER::populateFootprintSelector(), CVPCB_MAINFRAME::readNetListAndFpFiles(), CVPCB_MAINFRAME::readSchematicNetlist(), PCB_EDIT_FRAME::RecreateBOMFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReloadFootprint(), DIALOG_SYMBOL_REMAP::remapSymbolsToLibTable(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), FOOTPRINT_EDITOR_CONTROL::RenameFootprint(), SYMBOL_EDITOR_CONTROL::RenameSymbol(), SYMBOL_EDIT_FRAME::Revert(), DRC_TEST_PROVIDER_LIBRARY_PARITY::Run(), FOOTPRINT_EDITOR_CONTROL::SaveAs(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), SYMBOL_LIB_TABLE::SaveSymbol(), SCH_IO_KICAD_SEXPR_LIB_CACHE::SaveSymbol(), SYMBOL_EDIT_FRAME::saveSymbolCopyAs(), SchGetLibSymbol(), PCB_BASE_FRAME::setFPWatcher(), setLibNickname(), SYMBOL_BUFFER::SetOriginal(), LIB_TREE::setState(), SYMBOL_BUFFER::SetSymbol(), SYMBOL_EDIT_FRAME::setupUIConditions(), FOOTPRINT_EDIT_FRAME::setupUIConditions(), PANEL_SYMBOL_CHOOSER::showFootprintFor(), ERC_TESTER::TestFootprintLinkIssues(), ERC_TESTER::TestLibSymbolIssues(), DIALOG_FOOTPRINT_ASSOCIATIONS::TransferDataToWindow(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::TransferDataToWindow(), SYMBOL_LIBRARY_MANAGER::UpdateSymbol(), and FOOTPRINT_EDIT_FRAME::UpdateTitle().

◆ GetLibNickname()

const UTF8 & LIB_ID::GetLibNickname ( ) const
inline

Return the logical library name portion of a LIB_ID.

Definition at line 87 of file lib_id.h.

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbol(), BASIC_FOOTPRINT_INFO::BASIC_FOOTPRINT_INFO(), EXPORTER_STEP::buildFootprint3DShapes(), SCH_SCREENS::ChangeSymbolLibNickname(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), BOARD_INSPECTION_TOOL::DiffFootprint(), EE_INSPECTION_TOOL::DiffSymbol(), FOOTPRINT_PREVIEW_PANEL::DisplayFootprint(), SYMBOL_PREVIEW_WIDGET::DisplaySymbol(), FOOTPRINT_EDIT_FRAME::DuplicateFootprint(), SYMBOL_EDIT_FRAME::DuplicateSymbol(), SYMBOL_EDITOR_CONTROL::DuplicateSymbol(), SYMBOL_EDITOR_CONTROL::EditSymbol(), EXPORTER_PCB_VRML::ExportVrmlFootprint(), LIB_TREE_MODEL_ADAPTER::FindItem(), RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::FindRescues(), FP_LIB_TABLE::FootprintLoadWithOptionalNickname(), FOOTPRINT_INFO_GENERATOR::GenerateHtml(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetAttr(), FP_TREE_SYNCHRONIZING_ADAPTER::GetAttr(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), FOOTPRINT_LIST::GetFootprintInfo(), SCH_SCREENS::GetLibNicknames(), LIB_SYMBOL::GetLibraryName(), FOOTPRINT_EDIT_FRAME::GetLoadedFPID(), SCH_SYMBOL::GetMsgPanelInfo(), SYMBOL_EDIT_FRAME::getTargetLib(), SYMBOL_EDIT_FRAME::getTargetSymbol(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetValue(), FP_TREE_SYNCHRONIZING_ADAPTER::GetValue(), guessNickname(), SCH_SCREENS::HasNoFullyDefinedLibIds(), idf_export_footprint(), SYMBOL_EDITOR_CONTROL::Init(), FOOTPRINT_EDITOR_CONTROL::Init(), SYMBOL_EDIT_FRAME::IsCurrentSymbol(), CV::kiface(), SYMBOL_EDIT_FRAME::KiwayMailIn(), SYMBOL_VIEWER_FRAME::KiwayMailIn(), SYMBOL_LIB_TABLE::LoadSymbol(), SYMBOL_EDIT_FRAME::LoadSymbol(), SYMBOL_LIB_TABLE::LoadSymbolWithOptionalNickname(), FOOTPRINT_EDITOR_CONTROL::NewFootprint(), PCB_BASE_FRAME::OnFpChangeDebounceTimer(), SYMBOL_EDITOR_CONTROL::OpenWithTextEditor(), FOOTPRINT_EDITOR_CONTROL::OpenWithTextEditor(), FOOTPRINT_EDITOR_CONTROL::PasteFootprint(), SYMBOL_EDITOR_CONTROL::PinLibrary(), FOOTPRINT_EDITOR_CONTROL::PinLibrary(), LIB_TREE_MODEL_ADAPTER::PinLibrary(), PANEL_SYMBOL_CHOOSER::populateFootprintSelector(), FOOTPRINT_VIEWER_FRAME::ReloadFootprint(), DIALOG_SYMBOL_REMAP::remapSymbolsToLibTable(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), FOOTPRINT_EDITOR_CONTROL::RenameFootprint(), SYMBOL_EDITOR_CONTROL::RenameSymbol(), SYMBOL_EDIT_FRAME::Revert(), DRC_TEST_PROVIDER_LIBRARY_PARITY::Run(), FOOTPRINT_EDITOR_CONTROL::SaveAs(), SYMBOL_EDIT_FRAME::saveCurrentSymbol(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), SYMBOL_EDIT_FRAME::SaveLibraryAs(), SYMBOL_EDIT_FRAME::saveSymbolCopyAs(), SchGetLibSymbol(), PCB_BASE_FRAME::setFPWatcher(), setLibNickname(), SYMBOL_BUFFER::SetOriginal(), LIB_TREE::setState(), SYMBOL_BUFFER::SetSymbol(), SCH_BASE_FRAME::setSymWatcher(), SYMBOL_EDIT_FRAME::setupUIConditions(), PANEL_SYMBOL_CHOOSER::showFootprintFor(), ERC_TESTER::TestFootprintLinkIssues(), ERC_TESTER::TestLibSymbolIssues(), DIALOG_FOOTPRINT_ASSOCIATIONS::TransferDataToWindow(), SYMBOL_EDITOR_CONTROL::UnpinLibrary(), FOOTPRINT_EDITOR_CONTROL::UnpinLibrary(), LIB_TREE_MODEL_ADAPTER::UnpinLibrary(), LIB_TREE_NODE_ITEM::Update(), FOOTPRINT_EDIT_FRAME::UpdateTitle(), and PANEL_FP_PROPERTIES_3D_MODEL::validateModelExists().

◆ GetSubLibraryName()

UTF8 LIB_ID::GetSubLibraryName ( ) const
inline

Some LIB_IDs can have a sub-library identifier in addition to a library nickname.

This identifier is not part of the canonical LIB_ID and is not written out / parsed. It is only used for internal sorting/grouping, if present.

Returns
the sub-library name for this LIB_ID, if one exists

Definition at line 130 of file lib_id.h.

Referenced by SYMBOL_VIEWER_FRAME::ReCreateSymbolList(), and SYMBOL_VIEWER_FRAME::SetSelectedLibrary().

◆ GetUniStringLibId()

wxString LIB_ID::GetUniStringLibId ( ) const
inline

◆ GetUniStringLibItemName()

◆ GetUniStringLibNickname()

◆ GetUniStringSubLibraryName()

const wxString LIB_ID::GetUniStringSubLibraryName ( ) const
inline

Definition at line 132 of file lib_id.h.

◆ HasIllegalChars()

int LIB_ID::HasIllegalChars ( const UTF8 aLibItemName)
static

Examine aLibItemName for invalid LIB_ID item name characters.

Parameters
aLibItemNameis the LIB_ID name to test for illegal characters.
Returns
offset of first illegal character otherwise -1.

Definition at line 175 of file lib_id.cpp.

References isLegalChar().

Referenced by RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::FindRescues(), and Parse().

◆ IsLegacy()

bool LIB_ID::IsLegacy ( ) const
inline
Returns
true if the LIB_ID only has the m_itemName name defined.

Definition at line 180 of file lib_id.h.

Referenced by SCH_IO_CADSTAR_ARCHIVE::LoadSchematicFile(), and CVPCB_MAINFRAME::readNetListAndFpFiles().

◆ isLegalChar()

bool LIB_ID::isLegalChar ( unsigned  aUniChar)
staticprotected

Tests whether a Unicode character is a legal LIB_ID item name character.

The criteria for legal LIB_ID character is as follows:

  • For both symbol and footprint names, neither '/' or ':' are legal. They are reserved characters used by LIB_ID::Parse.
  • Spaces are allowed in footprint names as they are a legal filename character on all operating systems.
  • Spaces are not allowed in symbol names since symbol names are not quoted in the schematic or symbol library file formats.
  • Spaces are allowed in footprint library nicknames as they are quoted in the footprint library table file format.
  • Spaces are now also allowed in symbol library nicknames since they are quoted in the new symbol library sexpr file format.
  • Illegal file name characters are not allowed in footprint names since the file name is the footprint name.
  • Illegal file name characters except '/' are allowed in symbol names since the name is not the file name.
Note
aUniChar is expected to be a 32 bit Unicode character, not a UTF8 char, that use a variable length coding value.

Definition at line 208 of file lib_id.cpp.

Referenced by FixIllegalChars(), and HasIllegalChars().

◆ isLegalLibraryNameChar()

bool LIB_ID::isLegalLibraryNameChar ( unsigned  aUniChar)
staticprotected

Tests whether a Unicode character is a legal LIB_ID library nickname character.

Note
aUniChar is expected to be a 32 bit Unicode character, not a UTF8 char, that use a variable length coding value.

Definition at line 255 of file lib_id.cpp.

Referenced by FindIllegalLibraryNameChar(), and FixIllegalChars().

◆ IsValid()

bool LIB_ID::IsValid ( ) const
inline

Check if this LID_ID is valid.

A valid LIB_ID must have both the library nickname and the library item name defined.

Note
A return value of true does not indicated that the LIB_ID is a valid LIB_TABLE entry.
Returns
true is the LIB_ID is valid.

Definition at line 172 of file lib_id.h.

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), CVPCB_ASSOCIATION_TOOL::Associate(), CVPCB_MAINFRAME::AssociateFootprint(), CVPCB_ASSOCIATION_TOOL::CopyAssoc(), CVPCB_ASSOCIATION_TOOL::CutAssoc(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), DIALOG_FOOTPRINT_CHOOSER::DIALOG_FOOTPRINT_CHOOSER(), DIALOG_SYMBOL_CHOOSER::DIALOG_SYMBOL_CHOOSER(), SYMBOL_EDITOR_CONTROL::DuplicateSymbol(), RESCUE_CACHE_CANDIDATE::FindRescues(), FOOTPRINT_INFO_GENERATOR::GenerateHtml(), SYMBOL_VIEWER_FRAME::GetSelectedSymbol(), SYMBOL_EDIT_FRAME::getTargetSymbol(), SYMBOL_EDIT_FRAME::LoadSymbol(), SCH_IO_HTTP_LIB::loadSymbolFromPart(), SCH_IO_DATABASE::loadSymbolFromRow(), PANEL_FOOTPRINT_CHOOSER::onFootprintChosen(), PANEL_FOOTPRINT_CHOOSER::onFootprintSelected(), SYMBOL_CHOOSER_FRAME::OnOK(), FOOTPRINT_CHOOSER_FRAME::OnOK(), CVPCB_MAINFRAME::OnSelectComponent(), PANEL_SYMBOL_CHOOSER::onSymbolChosen(), PANEL_SYMBOL_CHOOSER::onSymbolSelected(), CVPCB_MAINFRAME::onTextFilterChangedTimer(), SCH_BASE_FRAME::PickSymbolFromLibrary(), SCH_DRAWING_TOOLS::PlaceSymbol(), PANEL_SYMBOL_CHOOSER::populateFootprintSelector(), DIALOG_EXCHANGE_FOOTPRINTS::processMatchingFootprints(), DIALOG_CHANGE_SYMBOLS::processMatchingSymbols(), SYMBOL_EDIT_FRAME::RegenerateLibraryTree(), FOOTPRINT_EDIT_FRAME::RegenerateLibraryTree(), PCB_BASE_FRAME::SelectFootprintFromLibrary(), DIALOG_EDIT_SYMBOLS_LIBID::setLibIdByBrowser(), PANEL_SYMBOL_CHOOSER::showFootprint(), FOOTPRINT_CHOOSER_FRAME::ShowModal(), SYMBOL_CHOOSER_FRAME::ShowModal(), LIB_TREE_MODEL_ADAPTER::ShowResults(), SYMBOL_EDIT_FRAME::SyncLibraries(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), FOOTPRINT_CHOOSER_FRAME::Update3DView(), DIALOG_CHANGE_SYMBOLS::updateFieldsList(), and FOOTPRINT_EDIT_FRAME::UpdateTitle().

◆ operator!=()

bool LIB_ID::operator!= ( const LIB_ID aLibId) const
inline

Definition at line 210 of file lib_id.h.

◆ operator<()

bool LIB_ID::operator< ( const LIB_ID aLibId) const
inline

Definition at line 207 of file lib_id.h.

◆ operator==()

bool LIB_ID::operator== ( const LIB_ID aLibId) const
inline

Definition at line 209 of file lib_id.h.

◆ operator>()

bool LIB_ID::operator> ( const LIB_ID aLibId) const
inline

Definition at line 208 of file lib_id.h.

◆ Parse()

int LIB_ID::Parse ( const UTF8 aId,
bool  aFix = false 
)

Parse LIB_ID with the information from aId.

A typical LIB_ID string consists of a library nickname followed by a library item name. e.g.: "smt:R_0805", or e.g.: "mylib:R_0805", or e.g.: "ttl:7400"

Parameters
aIdis the string to populate the LIB_ID object.
aFixindicates invalid chars should be replaced with '_'.
Returns
minus 1 (i.e. -1) means success, >= 0 indicates the character offset into aId at which an error was detected.

Definition at line 51 of file lib_id.cpp.

References clear(), UTF8::find(), FixIllegalChars(), HasIllegalChars(), UTF8::npos, SetLibItemName(), SetLibNickname(), and UTF8::substr().

Referenced by PCAD2KICAD::PCAD_FOOTPRINT::AddToBoard(), AltiumToKiCadLibID(), CVPCB_ASSOCIATION_TOOL::Associate(), CVPCB_ASSOCIATION_TOOL::CopyAssoc(), CVPCB_ASSOCIATION::CVPCB_ASSOCIATION(), EasyEdaToKiCadLibID(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), FOOTPRINT_LIST::GetFootprintInfo(), DIALOG_EXCHANGE_FOOTPRINTS::isMatch(), CV::kiface(), CMP_READER::Load(), PCB_IO_KICAD_LEGACY::loadAllSections(), CADSTAR_PCB_ARCHIVE_LOADER::loadComponentLibrary(), FABMASTER::loadFootprints(), SCH_IO_KICAD_LEGACY::loadSymbol(), SCH_IO_HTTP_LIB::loadSymbolFromPart(), SCH_IO_DATABASE::loadSymbolFromRow(), PCB_IO_EAGLE::makeFootprint(), DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton(), KICAD_NETLIST_PARSER::parseComponent(), PCB_IO_KICAD_SEXPR_PARSER::parseFOOTPRINT_unchecked(), SCH_IO_KICAD_SEXPR_PARSER::parseLibSymbol(), SCH_IO_KICAD_SEXPR_PARSER::parseSchematicSymbol(), CVPCB_ASSOCIATION_TOOL::PasteAssoc(), DIALOG_EXCHANGE_FOOTPRINTS::processMatchingFootprints(), DIALOG_CHANGE_SYMBOLS::processMatchingSymbols(), SCH_IO_KICAD_SEXPR_LIB_CACHE::SaveSymbol(), FOOTPRINT::SetFPIDAsString(), DIALOG_EDIT_SYMBOLS_LIBID::setLibIdByBrowser(), PANEL_SYMBOL_CHOOSER::showFootprint(), FOOTPRINT_CHOOSER_FRAME::ShowModal(), SYMBOL_CHOOSER_FRAME::ShowModal(), ERC_TESTER::TestFootprintLinkIssues(), EASYEDAPRO::ToKiCadLibID(), DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow(), DIALOG_CHANGE_SYMBOLS::updateFieldsList(), and DIALOG_EDIT_SYMBOLS_LIBID::validateLibIds().

◆ SetLibItemName()

◆ SetLibNickname()

◆ SetSubLibraryName()

void LIB_ID::SetSubLibraryName ( const UTF8 aName)
inline

Member Data Documentation

◆ m_itemName

UTF8 LIB_ID::m_itemName
protected

The name of the entry in the logical library.

Definition at line 272 of file lib_id.h.

Referenced by clear(), compare(), Format(), and SetLibItemName().

◆ m_libraryName

UTF8 LIB_ID::m_libraryName
protected

The nickname of the library or empty.

Definition at line 271 of file lib_id.h.

Referenced by clear(), compare(), Format(), GetFullLibraryName(), and SetLibNickname().

◆ m_subLibraryName

UTF8 LIB_ID::m_subLibraryName
protected

Optional sub-library name used for grouping within a library.

Definition at line 273 of file lib_id.h.

Referenced by clear(), and GetFullLibraryName().


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