00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef HxNameTable_h
00012 #define HxNameTable_h
00013
00014 #include "HxIoFwd.h"
00015 #include "HxString.h"
00016
00017 #include <vector>
00018 #include <map>
00019
00020 #pragma warning (disable : 4786)
00021
00022
00023
00024 class L_HXBASIS HxNameTable
00025 {
00026 public:
00027 typedef size_t sizeType;
00028
00029 HxNameTable();
00030 virtual ~HxNameTable();
00031 void insert(HxString, sizeType);
00032 sizeType getId(HxString);
00033 HxString getName(sizeType) const;
00034
00035 STD_OSTREAM& put(STD_OSTREAM&) const;
00036
00037 private:
00038 typedef std::map<HxString, sizeType, std::less<HxString> > Map;
00039 typedef Map::value_type Entry;
00040 typedef std::vector<HxString> Index;
00041
00042 #pragma warning (disable : 4251 4786)
00043 Map _map;
00044 Index _index;
00045 #pragma warning (default : 4251)
00046 };
00047
00048 inline STD_OSTREAM&
00049 operator<<(STD_OSTREAM& os, const HxNameTable& nameTable)
00050 {
00051 return nameTable.put(os);
00052 }
00053
00054 #endif