40 using namespace moot_STL_NAMESPACE;
64 template <
class NameType,
65 class NameHashFcn = moot_hash <NameType>,
66 class NameEqualFcn = equal_to <NameType> >
71 typedef hash_map<NameType,mootEnumID,NameHashFcn,NameEqualFcn>
Name2IdMap;
85 unknown_name(NameType());
91 unknown_name(unknownName);
104 if (ids2names.empty()) ids2names.resize(1);
113 return names2ids.find(name) != names2ids.end();
119 return id && ids2names.size() > id;
127 return ids2names.size();
133 typename Name2IdMap::const_iterator i = names2ids.find(name);
134 return i == names2ids.end() ? 0 : i->second;
143 return ids2names.size() <=
id ? ids2names[0] : ids2names[id];
155 if (!
id)
id = ids2names.size();
156 if (ids2names.size() <= id) ids2names.resize(
id+1);
157 ids2names[id] = name;
158 names2ids[name] = id;
169 names2ids.erase(name);
176 remove(ids2names[id],id);
185 typename Name2IdMap::const_iterator i = names2ids.find(name);
186 return i == names2ids.end() ? insert(name,0) : i->second;
204 if (newsize < 1) newsize=1;
205 if (newsize > size()) {
206 ids2names.resize(newsize);
208 else if (newsize < size()) {
209 for (
mootEnumID id = newsize;
id < size();
id++) {
210 names2ids.erase(ids2names[
id]);
212 ids2names.resize(newsize);
void resize(size_t newsize)
Definition: mootEnum.h:202
Name2IdMap names2ids
maps names to IDs
Definition: mootEnum.h:78
mootEnumID insert(const NameType &name, mootEnumID id=0)
Definition: mootEnum.h:153
const NameType & id2name(const mootEnumID id) const
Definition: mootEnum.h:141
void clear(void)
Definition: mootEnum.h:190
mootEnumID name2id(const NameType &name) const
Definition: mootEnum.h:131
Definition: mootEnum.h:67
bool nameExists(const NameType &name) const
Definition: mootEnum.h:111
void unknown_name(const NameType &name)
Definition: mootEnum.h:102
bool idExists(const mootEnumID id) const
Definition: mootEnum.h:117
BinUInt UInt
Definition: mootTypes.h:86
mootEnumID get_id(const NameType &name)
Definition: mootEnum.h:183
hash_map< NameType, mootEnumID, NameHashFcn, NameEqualFcn > Name2IdMap
Definition: mootEnum.h:71
Common typedefs and constants.
mootEnumID size(void) const
Definition: mootEnum.h:125
~mootEnum(void)
Definition: mootEnum.h:95
mootEnum(void)
Definition: mootEnum.h:83
mootEnum(const NameType &unknownName)
Definition: mootEnum.h:89
Id2NameMap ids2names
maps IDs to names
Definition: mootEnum.h:79
moot::UInt mootEnumID
Definition: mootEnum.h:45
const mootEnumID mootEnumNone
Definition: mootEnum.h:50
vector< NameType > Id2NameMap
Definition: mootEnum.h:74