|
KiCad PCB EDA Suite
|
#include <kiid.h>
Public Member Functions | |
| KIID () | |
| KIID (int null) | |
| KIID (const std::string &aString) | |
| KIID (const char *aString) | |
| KIID (const wxString &aString) | |
| KIID (timestamp_t aTimestamp) | |
| void | Clone (const KIID &aUUID) |
| size_t | Hash () const |
| bool | IsLegacyTimestamp () const |
| timestamp_t | AsLegacyTimestamp () const |
| wxString | AsString () const |
| wxString | AsLegacyTimestampString () const |
| std::string | AsStdString () const |
| void | ConvertTimestampToUuid () |
| Change an existing time stamp based UUID into a true UUID. | |
| void | Increment () |
| Generates a deterministic replacement for a given ID. | |
| bool | operator== (KIID const &rhs) const |
| bool | operator!= (KIID const &rhs) const |
| bool | operator< (KIID const &rhs) const |
| bool | operator> (KIID const &rhs) const |
Static Public Member Functions | |
| static bool | SniffTest (const wxString &aCandidate) |
| Returns true if a string has the correct formatting to be a KIID. | |
| static void | CreateNilUuids (bool aNil=true) |
| A performance optimization which disables/enables the generation of pseudo-random UUIDs. | |
| static void | SeedGenerator (unsigned int aSeed) |
| Re-initialize the UUID generator with a given seed (for testing or QA purposes) | |
| static KIID | Combine (const KIID &aFirst, const KIID &aSecond) |
| Creates a deterministic KIID from two input KIIDs by XORing their underlying UUIDs. | |
| static KIID | FromDeterministicString (const wxString &aName) |
| Build a deterministic UUID from an arbitrary name string. | |
Private Attributes | |
| boost::uuids::uuid | m_uuid |
| KIID::KIID | ( | ) |
Definition at line 73 of file kiid.cpp.
References g_createNilUuids, m_uuid, nilGenerator, and randomGenerator.
Referenced by Clone(), Combine(), FromDeterministicString(), KIID(), KIID(), operator!=(), operator<(), operator==(), and operator>().
| KIID::KIID | ( | int | null | ) |
Definition at line 100 of file kiid.cpp.
References m_uuid, and nilGenerator.
| KIID::KIID | ( | const std::string & | aString | ) |
| KIID::KIID | ( | timestamp_t | aTimestamp | ) |
| timestamp_t KIID::AsLegacyTimestamp | ( | ) | const |
Definition at line 217 of file kiid.cpp.
References m_uuid.
Referenced by AsLegacyTimestampString(), BOOST_AUTO_TEST_CASE(), SCH_IO_KICAD_LEGACY::saveSheet(), and SCH_IO_KICAD_LEGACY::saveSymbol().
| wxString KIID::AsLegacyTimestampString | ( | ) | const |
Definition at line 254 of file kiid.cpp.
References AsLegacyTimestamp().
Referenced by BOOST_AUTO_TEST_CASE(), and SCH_IO_KICAD_LEGACY::saveSymbol().
| std::string KIID::AsStdString | ( | ) | const |
Definition at line 248 of file kiid.cpp.
References m_uuid.
Referenced by BOOST_AUTO_TEST_CASE(), API_HANDLER_BOARD::handleCreateUpdateItemsInternal(), API_HANDLER_PCB::handleInjectDrcError(), and packLabel().
| wxString KIID::AsString | ( | ) | const |
Definition at line 242 of file kiid.cpp.
References m_uuid.
Referenced by KIID_PATH::AsString(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_DATA_TEST_CASE(), BOOST_DATA_TEST_CASE(), BOOST_DATA_TEST_CASE(), BOOST_DATA_TEST_CASE(), BOOST_DATA_TEST_CASE_F(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), BOOST_FIXTURE_TEST_CASE(), TMATCH::CONNECTION_GRAPH::breakTieBySymbolUuid(), SCH_SHEET_LIST::BuildSheetList(), SCH_SHEET_PATH::CheckForMissingSymbolInstances(), PCB_IO_IPC2581::componentName(), LIB_FIELDS_EDITOR_GRID_DATA_MODEL::CreateDerivedSymbol(), KIGFX::SCH_PAINTER::draw(), KIGFX::SCH_PAINTER::draw(), MULTICHANNEL_TOOL::findOtherItemsInRuleArea(), MULTICHANNEL_TOOL::findRoutingInRuleArea(), SCH_EDITOR_CONTROL::FindSymbolAndItem(), formatArc(), formatBezier(), formatCircle(), formatEllipse(), formatEllipseArc(), formatPoly(), formatRect(), KICAD_FORMAT::FormatUuid(), from_json(), SCH_PIN::GetDefaultNetName(), RC_ITEM::GetJsonViolation(), GetMsgPanelDisplayUuid(), PROJECT::GetSheetName(), DRC_ENGINE::loadImplicitRules(), FOOTPRINT_EDITOR_TAB_CONTEXT::MakeInstanceTabKey(), SYMBOL_EDITOR_TAB_CONTEXT::MakeInstanceTabKey(), NETLIST_EXPORTER_XML::makeSymbols(), SCH_EDIT_FRAME::OpenProjectFiles(), PackSymbol(), PCB_IO_KICAD_SEXPR_PARSER::parseBOARD_unchecked(), SCH_SHEET_PATH::PathAsString(), BOARD::RebindItemUuid(), DIALOG_GENERATORS::RebuildModels(), CONNECTION_GRAPH::ReplaceNetChainTerminalPin(), PCB_IO_KICAD_SEXPR_PARSER::resolveGroups(), SCH_MARKER::SerializeToString(), testGroupEqual(), to_json(), to_json(), DIALOG_LIB_FIELDS_TABLE::TransferDataFromWindow(), NET_CHAIN_MENU::update(), SCH_EDITOR_CONTROL::updatePastedSymbol(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().
| void KIID::Clone | ( | const KIID & | aUUID | ) |
Creates a deterministic KIID from two input KIIDs by XORing their underlying UUIDs.
This is useful for generating stable IDs for derived objects (like teardrops) that are created from the combination of two parent objects.
Definition at line 284 of file kiid.cpp.
References KIID(), m_uuid, and result.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), TEARDROP_MANAGER::createTeardrop(), and TEARDROP_MANAGER::createTeardropMask().
| void KIID::ConvertTimestampToUuid | ( | ) |
Change an existing time stamp based UUID into a true UUID.
If this is not a time stamp based UUID, then no change is made.
Definition at line 260 of file kiid.cpp.
References IsLegacyTimestamp(), m_uuid, and randomGenerator.
|
static |
A performance optimization which disables/enables the generation of pseudo-random UUIDs.
NB: uses a global. Not thread safe!
Definition at line 325 of file kiid.cpp.
References g_createNilUuids.
Referenced by KIID_NIL_SET_RESET::KIID_NIL_SET_RESET(), and KIID_NIL_SET_RESET::~KIID_NIL_SET_RESET().
|
static |
Build a deterministic UUID from an arbitrary name string.
The same input always yields the same UUID, and distinct inputs almost always yield distinct UUIDs. This is useful for keying objects that have a stable name but no native UUID (e.g. library symbols / footprints, which are file-name keyed rather than UUID keyed) so that two callsites derive the identical id for the same name.
The output bytes are part of the diff/merge engine's on-disk contract; the hashing here must not change once persisted artifacts depend on it.
Hashing is over wxChar code units, so for non-ASCII input the result differs between platforms with 16-bit vs 32-bit wxChar (Windows vs Linux/macOS); do not rely on cross-platform stability for non-ASCII names.
| aName | the source string to hash. |
aName. Definition at line 295 of file kiid.cpp.
References KIID().
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), KICAD_DIFF::PCB_DIFFER::diffFootprintChildren(), and KICAD_DIFF::LibraryItemKiidPath().
| size_t KIID::Hash | ( | ) | const |
Definition at line 230 of file kiid.cpp.
References m_uuid.
Referenced by BOOST_AUTO_TEST_CASE(), and std::hash< KIID >::operator()().
| void KIID::Increment | ( | ) |
Generates a deterministic replacement for a given ID.
NB: destroys uniform distribution! But it's the only thing we have when a deterministic replacement for a duplicate ID is required.
Definition at line 269 of file kiid.cpp.
References m_uuid.
Referenced by BOOST_AUTO_TEST_CASE(), and TEARDROP_MANAGER::createTeardropMask().
| bool KIID::IsLegacyTimestamp | ( | ) | const |
|
inline |
|
inline |
|
inline |
|
inline |
|
static |
Re-initialize the UUID generator with a given seed (for testing or QA purposes)
WARNING: Do not call this function from within KiCad or via a Python action plugin. It is only to be used inside QA tests or in external Python scripts. Resetting the UUID generator in the middle of a KiCad GUI run will potentially have harmful effects on file integrity.
| aSeed | is a seed to pass to the boost::mt19937 pseudo-random number generator |
Definition at line 331 of file kiid.cpp.
References randomGenerator, and rng.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().
|
static |
Returns true if a string has the correct formatting to be a KIID.
Definition at line 174 of file kiid.cpp.
References niluuid.
Referenced by searchAreas().
|
private |
Definition at line 156 of file kiid.h.
Referenced by AsLegacyTimestamp(), AsStdString(), AsString(), Clone(), Combine(), ConvertTimestampToUuid(), Hash(), Increment(), IsLegacyTimestamp(), KIID(), KIID(), KIID(), KIID(), operator!=(), operator<(), operator==(), and operator>().