Public Types | Public Member Functions | Public Attributes | List of all members
mootEnum< NameType, NameHashFcn, NameEqualFcn > Class Template Reference
Inheritance diagram for mootEnum< NameType, NameHashFcn, NameEqualFcn >:
Inheritance graph
[legend]

Public Types

typedef hash_map< NameType, mootEnumID, NameHashFcn, NameEqualFcn > Name2IdMap
 
typedef vector< NameType > Id2NameMap
 

Public Member Functions

 mootEnum (void)
 
 mootEnum (const NameType &unknownName)
 
 ~mootEnum (void)
 
void unknown_name (const NameType &name)
 
bool nameExists (const NameType &name) const
 
bool idExists (const mootEnumID id) const
 
mootEnumID size (void) const
 
mootEnumID name2id (const NameType &name) const
 
const NameType & id2name (const mootEnumID id) const
 
mootEnumID insert (const NameType &name, mootEnumID id=0)
 
void remove (const NameType &name, mootEnumID id=mootEnumNone)
 
void remove (mootEnumID id)
 
mootEnumID get_id (const NameType &name)
 
void clear (void)
 
void resize (size_t newsize)
 

Public Attributes

Name2IdMap names2ids
 maps names to IDs More...
 
Id2NameMap ids2names
 maps IDs to names More...
 

Detailed Description

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
class mootEnum< NameType, NameHashFcn, NameEqualFcn >

Template class for runtime enumerations (symbolic_name<->unsigned_int maps) using STL hash_map<> and vector<>.

Currently just supports monotonically growing enumerations: no support for single-item removal or re-assignment.

Suggests: default constructor for NameType (for default mootEnum constructor).

Requires: g++ flag "-ftemplate-depth-NN", where NN >= 19 for compilation with gcc-2.95.4 using STLport-4.5.3.

Member Typedef Documentation

◆ Name2IdMap

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
typedef hash_map<NameType,mootEnumID,NameHashFcn,NameEqualFcn> mootEnum< NameType, NameHashFcn, NameEqualFcn >::Name2IdMap

Type which maps symbolic names to numeric IDs

◆ Id2NameMap

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
typedef vector<NameType> mootEnum< NameType, NameHashFcn, NameEqualFcn >::Id2NameMap

Type which maps numeric IDs back to symbolic names

Constructor & Destructor Documentation

◆ mootEnum() [1/2]

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
mootEnum< NameType, NameHashFcn, NameEqualFcn >::mootEnum ( void  )
inline

Default constructor

◆ mootEnum() [2/2]

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
mootEnum< NameType, NameHashFcn, NameEqualFcn >::mootEnum ( const NameType &  unknownName)
inline

Default constructor

◆ ~mootEnum()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
mootEnum< NameType, NameHashFcn, NameEqualFcn >::~mootEnum ( void  )
inline

Default destructor

Member Function Documentation

◆ unknown_name()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
void mootEnum< NameType, NameHashFcn, NameEqualFcn >::unknown_name ( const NameType &  name)
inline

Set the 'unknown' name

Referenced by moot::mootHMM::unknown_tag_name(), and moot::mootHMM::unknown_token_name().

◆ nameExists()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
bool mootEnum< NameType, NameHashFcn, NameEqualFcn >::nameExists ( const NameType &  name) const
inline

Check whether 'name' is a registered name.

◆ idExists()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
bool mootEnum< NameType, NameHashFcn, NameEqualFcn >::idExists ( const mootEnumID  id) const
inline

Check whether 'id' is a registered id.

◆ size()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
mootEnumID mootEnum< NameType, NameHashFcn, NameEqualFcn >::size ( void  ) const
inline

Return maximum id +1

◆ name2id()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
mootEnumID mootEnum< NameType, NameHashFcn, NameEqualFcn >::name2id ( const NameType &  name) const
inline

◆ id2name()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
const NameType& mootEnum< NameType, NameHashFcn, NameEqualFcn >::id2name ( const mootEnumID  id) const
inline

Lookup name for id. Returns the "unknown" name if id is unregistered.

◆ insert()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
mootEnumID mootEnum< NameType, NameHashFcn, NameEqualFcn >::insert ( const NameType &  name,
mootEnumID  id = 0 
)
inline

Insert a new name<->id mapping. If id is unspecified or zero, a new unique id will be assigned. Returns the (new) id.

◆ remove() [1/2]

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
void mootEnum< NameType, NameHashFcn, NameEqualFcn >::remove ( const NameType &  name,
mootEnumID  id = mootEnumNone 
)
inline

Remove a name<->id mapping. Effectively re-maps name to mootEnumNone==0 and id to unknown_name() Will never shrink the object.

◆ remove() [2/2]

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
void mootEnum< NameType, NameHashFcn, NameEqualFcn >::remove ( mootEnumID  id)
inline

Remove a name<->id mapping, given only id

◆ get_id()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
mootEnumID mootEnum< NameType, NameHashFcn, NameEqualFcn >::get_id ( const NameType &  name)
inline

Get ID for name, creating one if it doesn't already exist.

◆ clear()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
void mootEnum< NameType, NameHashFcn, NameEqualFcn >::clear ( void  )
inline

Clears all mappings, but retains "unknown" name

◆ resize()

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
void mootEnum< NameType, NameHashFcn, NameEqualFcn >::resize ( size_t  newsize)
inline

Resize the object, leaving only newsize-1 IDs intact. Increasing object size may leave the object in an inconsistent state.

Member Data Documentation

◆ names2ids

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
Name2IdMap mootEnum< NameType, NameHashFcn, NameEqualFcn >::names2ids

◆ ids2names

template<class NameType, class NameHashFcn = __gnu_cxx::hash <NameType>, class NameEqualFcn = equal_to <NameType>>
Id2NameMap mootEnum< NameType, NameHashFcn, NameEqualFcn >::ids2names

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