29template<
typename KeyType,
typename StructType>
47 _db[
val.id] = std::move(
val);
48 _nameDb[
val.name] =
val.id;
56 auto it = _db.find(
id);
57 if(
it != _db.end())
return it->second;
59 if(
it != _db.end())
return it->second;
68 auto it = _nameDb.find(name);
69 return (
it != _nameDb.end()) ?
76 void load(
const std::initializer_list<StructType> &&
list) {
82 const Database &
database()
const {
return _db; }
Dynamic array container wrapping std::vector.
Definition list.h:40
List()=default
Default constructor. Creates an empty list.
Encoding-aware string class with copy-on-write semantics.
Definition string.h:35
A database that maps keys to struct entries, initialized from an initializer list.
Definition structdatabase.h:30
void load(const std::initializer_list< StructType > &&list)
Loads all entries from an initializer list.
Definition structdatabase.h:76
KeyType lookupKeyByName(const String &name) const
Looks up a key by the entry's name.
Definition structdatabase.h:67
Database & database()
Returns a mutable reference to the underlying database map.
Definition structdatabase.h:84
const StructType & get(const KeyType &id) const
Retrieves an entry by its key, falling back to key 0 if not found.
Definition structdatabase.h:55
StructDatabase(const std::initializer_list< StructType > &&list)
Constructs a database and populates it from an initializer list.
Definition structdatabase.h:40
StructDatabase()=default
Constructs an empty database.
const Database & database() const
Returns a const reference to the underlying database map.
Definition structdatabase.h:82
void add(const StructType &&val)
Adds a single entry to the database.
Definition structdatabase.h:46
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19