00001 #ifndef FIELDREGISTRY_H_
00002 #define FIELDREGISTRY_H_
00003 
00004 #include "Field.h"
00005 
00006 #include <map>
00007 using std::map;
00008 #include <vector>
00009 using std::vector;
00010 
00012 
00013 class FieldRegistry
00014 {
00015 
00016 public:
00017     FieldRegistry(void);
00018     ~FieldRegistry(void);
00019 
00021     void registerField( Field const& f );
00022 
00024     Field const& getField(size_t id) const;
00025 
00027     Field const* findField( string const& name ) const;
00028 
00030     size_t nFields(void)
00031     {
00032         return fields.size();
00033     }
00034 
00036     
00037     
00038     
00039     
00040     
00041     
00042 
00043     
00044     
00045     
00046     
00047 
00048     
00049     
00050 
00051 private:
00053     vector< Field * > fields;
00054     map< string, size_t > name_to_id_map;
00055 };
00056 
00057 #endif