00001 #ifndef VIS_FRAMEWORK_BASE_VIS_CONFIGURATION_H 00002 # define VIS_FRAMEWORK_BASE_VIS_CONFIGURATION_H 00003 00004 //<<<<<< INCLUDES >>>>>> 00005 00006 # include "Iguana/Framework/interface/IgStateElement.h" 00007 # include <map> 00008 # include <string> 00009 00010 //<<<<<< PUBLIC DEFINES >>>>>> 00011 //<<<<<< PUBLIC CONSTANTS >>>>>> 00012 //<<<<<< PUBLIC TYPES >>>>>> 00013 00014 class VisConfigEditor; 00015 class VisConfigurable; 00016 00017 //<<<<<< PUBLIC VARIABLES >>>>>> 00018 //<<<<<< PUBLIC FUNCTIONS >>>>>> 00019 //<<<<<< CLASS DECLARATIONS >>>>>> 00020 00021 class VisConfiguration : public IgStateElement 00022 { 00023 IG_DECLARE_STATE_ELEMENT (VisConfiguration); 00024 public: 00025 static const int MENU_ID_CONFIG = 8900; 00026 static const int MENU_ID_CONFIG_CMSSW = 8901; 00027 static const int MENU_ID_CONFIG_SEP = 8902; 00028 static const int MENU_ID_CONFIG_SAVE = 8903; 00029 00030 typedef std::map<std::string, std::string, std::less<std::string> > VisState; 00031 typedef std::multimap<std::string, VisConfigurable*, std::less<std::string> > VisConfigMap; 00032 typedef VisConfigMap::const_iterator VisConfigMapConItr; 00033 typedef VisConfigMap::iterator VisConfigMapItr; 00034 typedef std::pair<VisConfigMapItr,VisConfigMapItr> SRANGE; 00035 00036 VisConfiguration (IgState *state); 00037 virtual ~VisConfiguration (void); 00038 // implicit copy constructor 00039 // implicit assignment operator 00040 // implicit destructor 00041 00042 void dumpConfig (VisState& state) const; 00043 void insert (const std::string &iname, VisConfigurable *ihim); 00044 void erase (const VisConfigurable *ihim); 00045 void modify (const std::string & iname, const std::string & ivalue); 00046 void set (const std::string & iname, const std::string & ivalue); 00047 00048 protected: 00049 void clear (void); 00050 VisConfigMap::iterator find (const VisConfigurable *ihim, VisConfigMapItr p); 00051 00052 private: 00053 IgState *m_state; 00054 VisConfigEditor *m_editor; 00055 VisConfigMap m_registry; 00056 }; 00057 00058 //<<<<<< INLINE PUBLIC FUNCTIONS >>>>>> 00059 //<<<<<< INLINE MEMBER FUNCTIONS >>>>>> 00060 00061 #endif // VIS_FRAMEWORK_BASE_VIS_CONFIGURATION_H