#ifndef WORD_MAP_HDR #define WORD_MAP_HDR #include #include #include "concordia/concordia_exception.hpp" #include "concordia/common/config.hpp" #include #include #include /*! Class representing dictionary for word to integer encoding. */ class WordMap { public: /*! Constructor. */ explicit WordMap() throw(ConcordiaException); /*! Destructor. */ virtual ~WordMap(); /*! Gets the integer code of a token. If the token is found in the dictionary, the dictionary code is returned. If not, the word is added to the dictionary and its newly created code is returned. \param word token to generate the code \returns code of the token */ INDEX_CHARACTER_TYPE getWordCode(const std::string & word) throw(ConcordiaException); private: friend class boost::serialization::access; template void serialize(Archive & ar, const unsigned int version) { ar & _map; ar & _nextFree; } std::map _map; INDEX_CHARACTER_TYPE _nextFree; }; #endif