00001
00009 #ifndef SIMOBJECTATTRIBUTESDEFINITION_H
00010 #define SIMOBJECTATTRIBUTESDEFINITION_H
00011
00012 #include <string>
00013 using std::string;
00014
00015 #include <vector>
00016 using std::vector;
00017
00018 #include "pcsim_hash.h"
00019
00021
00026 class SimObjectAttributesDefinition {
00027
00028 public:
00029
00030 SimObjectAttributesDefinition();
00031
00032 ~SimObjectAttributesDefinition();
00033
00035
00039 template< typename T >
00040 void add( string name);
00041
00043 void addDouble(string const& name);
00044
00046 void addInt(string const& name);
00047
00049 void addString(string const& name, string const& value);
00050
00052 size_t offset(string const& name) const;
00053
00055 size_t mem_size() const
00056 {
00057 return m_memsize;
00058 };
00059
00061 void lock();
00062
00064 vector< string > names() const;
00065
00067 size_t size() const
00068 {
00069 return m_offset_hash.size();
00070 };
00071
00072 private:
00073 typedef hash_map< string , size_t, PCSIM::hash< string > > offsethash_t;
00074 mutable offsethash_t m_offset_hash;
00075 size_t m_memsize;
00076 bool m_locked;
00077 };
00078
00079 #endif