Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Config.h

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 #ifndef CFG_CONFIG_H
00009 #define CFG_CONFIG_H
00010 #include <map>
00011 #include <string>
00012 
00013 namespace cfg {
00014   class Param;
00016   //
00028   class Config {
00029   public:
00030     // These methods are normally all you'll ever need
00031     const char*  GetName()                            const;
00032     const char*  GetVersion()                         const;
00033     const char*  GetSource()                          const;
00034     const Param& operator()(const char*        pname) const;
00035     const Param& operator()(const std::string& pname) const;
00036     bool         IsEditable()                         const;
00037     
00038   public:
00042     Config(const char* name, 
00043            const char* version, 
00044            const char* source);
00045     ~Config();
00046     
00047     void   AdoptParam(Param* p);
00048     void   RemoveParam(const char* which = "*");
00049     Param& Par(const char*        pname);
00050     Param& Par(const std::string& pname);
00051     
00052     bool EditOK() const;
00053     void SetReadOnly(int flag=1);
00054     void SetSource(const char* filename);
00055     
00056     static void SetEditAllOK();
00057     static void Copy(Config& dest, 
00058                      const Config& src,
00059                      const char* destVersion=0,
00060                      const char* destSource =0);
00061   public:
00062     typedef std::map<std::string, Param*> ParamMap;
00063     ParamMap& ParMap() { return fParam; }
00064     
00065   private:
00066     bool             fEditable;
00067     std::string      fName;    
00068     std::string      fVersion; 
00069     std::string      fSource;  
00070     mutable ParamMap fParam;   
00071   };
00072 }
00073 #endif // CFGCONFIG_H
00074 

Generated on Wed Oct 15 02:35:25 2008 for NOvA Offline by  doxygen 1.3.9.1