00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00020 #ifndef _TEXTID_MAP
00021
00022 #define _TEXTID_MAP
00023
00024 #include <map>
00025 #include <string>
00026
00027 #include "semantic_id.h"
00028
00029
00031 class CTextIDMap
00032 {
00033 public:
00035 SemanticID Lookup(const std::string &a_string)
00036 {
00037 CStringIDMap_i i;
00038
00039 i = m_idMap.find(a_string);
00040
00041 if (m_idMap.end() != i)
00042 {
00043 return (*i).second;
00044 }
00045
00046 return SEMANTIC_ID_NONE;
00047 }
00048
00050 const std::string *Store(const std::string &a_string,
00051 const SemanticID a_id)
00052 {
00053 CStringIDMap_i i;
00054
00055 i = m_idMap.find(a_string);
00056
00057 if (m_idMap.end() == i)
00058 {
00059 i = m_idMap.insert(m_idMap.begin(),
00060 std::make_pair(a_string, a_id));
00061
00062 if (m_idMap.end() != i)
00063 {
00064 return &((*i).first);
00065 }
00066 }
00067 else
00068 {
00069 printf("%s found.. returning null.\n", a_string.c_str());
00070 }
00071
00072 return NULL;
00073 }
00074
00076 CTextIDMap() {}
00077
00079 ~CTextIDMap() {}
00080
00081 private:
00083 typedef std::map<std::string, SemanticID> CStringIDMap;
00085 typedef CStringIDMap::iterator CStringIDMap_i;
00087 typedef CStringIDMap::const_iterator CStringIDMap_ci;
00088
00090 CStringIDMap m_idMap;
00091 };
00092
00093 #endif
00094