From 7616f9f296fae0026be976e44d789ad47d45b0a23a6bf827a7d405d18f2ac33e Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Fri, 8 Aug 2025 01:16:13 -0400 Subject: [PATCH] Identity map. --- lout/identity.cc | 10 +++------- lout/identity.hh | 7 +++++-- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lout/identity.cc b/lout/identity.cc index 437bba0..ce54113 100644 --- a/lout/identity.cc +++ b/lout/identity.cc @@ -55,9 +55,7 @@ void IdentifiableObject::Class::intoStringBuffer(misc::StringBuffer *sb) sb->append (">"); } -HashTable - *IdentifiableObject::classesByName = - new HashTable (true, true); +std::map< std::string, std::unique_ptr< IdentifiableObject::Class > > IdentifiableObject::classesByName; std::vector< IdentifiableObject::Class * > IdentifiableObject::classesById; @@ -83,13 +81,11 @@ void IdentifiableObject::intoStringBuffer(misc::StringBuffer *sb) */ void IdentifiableObject::registerName (const char *className, int *classId) { - ConstString str (className); - Class *klass = classesByName->get (&str); + Class *klass = classesByName.at( className ).get(); if (klass == NULL) { klass = new Class (currentlyConstructedClass, classesById.size (), className); - ConstString *key = new ConstString (className); - classesByName->put (key, klass); + classesByName.emplace (className, klass); classesById.push_back (klass); *classId = klass->id; } diff --git a/lout/identity.hh b/lout/identity.hh index 084acf3..3a14056 100644 --- a/lout/identity.hh +++ b/lout/identity.hh @@ -1,6 +1,10 @@ #ifndef __LOUT_OBJECTX_HH__ #define __LOUT_OBJECTX_HH__ +#include +#include +#include + #include "object.hh" #include "container.hh" #include "signal.hh" @@ -110,8 +114,7 @@ private: void intoStringBuffer(misc::StringBuffer *sb); }; - static container::typed::HashTable *classesByName; + static std::map< std::string, std::unique_ptr< Class > > classesByName; static std::vector< Class * > classesById; static Class *currentlyConstructedClass;