Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

HxNameTable.h

00001 /*
00002  *  Copyright (c) 1998, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *
00006  *  Author(s):
00007  *  Dennis Koelma (koelma@wins.uva.nl)
00008  *  Edo Poll (poll@wins.uva.nl)
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 //#include "HxTracedObject.h"
00023 
00024 
00029 class L_HXBASIS HxNameTable// TRACED_OBJECT
00030 {
00031 public:
00033     typedef size_t  sizeType;
00034 
00036                             HxNameTable();
00037 
00039     virtual                 ~HxNameTable();
00040 
00042     void                    insert(HxString name, sizeType id);
00043 
00045     sizeType                getId(HxString name);
00046 
00048     HxString                getName(sizeType id) const;
00049 
00051     std::vector<HxString>   getNames() const;
00052 
00054     STD_OSTREAM&            put(STD_OSTREAM&) const;
00055 
00056 private:
00057     typedef std::map<HxString, sizeType, std::less<HxString> >    Map;
00058     typedef Map::value_type                             Entry;
00059     typedef std::vector<HxString>                       Index;
00060 
00061 #pragma warning (disable : 4251 4786)
00062     Map         _map;
00063     Index       _index;
00064 #pragma warning (default : 4251)
00065 };
00066 
00067 inline STD_OSTREAM&
00068 operator<<(STD_OSTREAM& os, const HxNameTable& nameTable)
00069 {
00070     return nameTable.put(os);
00071 }
00072 
00073 #endif

Generated on Tue Feb 3 14:18:40 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001