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