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     std::string  AsXML()                              const;
00038     
00039   public:
00043     Config(const char* name, 
00044            const char* version, 
00045            const char* source);
00046     ~Config();
00047     
00048     void   AdoptParam(Param* p);
00049     void   RemoveParam(const char* which = "*");
00050     Param& Par(const char*        pname);
00051     Param& Par(const std::string& pname);
00052     
00053     bool EditOK() const;
00054     void SetReadOnly(int flag=1);
00055     void SetSource(const char* filename);
00056     
00057     static void SetEditAllOK();
00058     static void Copy(Config& dest, 
00059                      const Config& src,
00060                      const char* destVersion=0,
00061                      const char* destSource =0);
00062   public:
00063     typedef std::map<std::string, Param*> ParamMap;
00064     ParamMap& ParMap() { return fParam; }
00065     
00066   private:
00067     bool             fEditable;
00068     std::string      fName;    
00069     std::string      fVersion; 
00070     std::string      fSource;  
00071     mutable ParamMap fParam;   
00072   };
00073 }
00074 #endif // CFGCONFIG_H
00075 

Generated on Sat Nov 7 04:46:56 2009 for NOvA Offline by  doxygen 1.3.9.1