otsdaq  v2_00_00
ConfigurationGroupKey.h
1 #ifndef _ots_ConfigurationGroupKey_h_
2 #define _ots_ConfigurationGroupKey_h_
3 
4 #include <ostream>
5 
6 namespace ots
7 {
8 
9 //ConfigurationGroupKey is the type used for versions association with global configurations
10 //(whereas ConfigurationVersion is the type used for version associated with a configuration table)
12 {
13 
14 public:
15 
16  explicit ConfigurationGroupKey (unsigned int key=INVALID);
17  explicit ConfigurationGroupKey (char * const &groupString);
18  explicit ConfigurationGroupKey (const std::string &groupString);
19  virtual ~ConfigurationGroupKey (void);
20 
21  unsigned int key (void) const;
22  bool isInvalid (void) const;
23  std::string toString (void) const;
24 
25  //Operators
26  ConfigurationGroupKey& operator= (const unsigned int key);
27  bool operator== (unsigned int key) const;
28  bool operator== (const ConfigurationGroupKey& key) const;
29  bool operator!= (unsigned int key) const;
30  bool operator!= (const ConfigurationGroupKey& key) const;
31  bool operator< (const ConfigurationGroupKey& key) const;
32  bool operator> (const ConfigurationGroupKey& key) const;
33 
34 
35  friend std::ostream& operator<< (std::ostream& out, const ConfigurationGroupKey& key)
36  {
37  out << key.toString();
38  return out;
39  }
40 
41  static ConfigurationGroupKey getNextKey (const ConfigurationGroupKey& key=ConfigurationGroupKey());
42  static std::string getFullGroupString (const std::string &groupName, const ConfigurationGroupKey& key);
43  static void getGroupNameAndKey (const std::string &fullGroupString, std::string &groupName, ConfigurationGroupKey& key);
44  static const unsigned int getDefaultKey (void);
45  static const unsigned int getInvalidKey (void);
46 
47 private:
48  static const unsigned int INVALID;
49  static const unsigned int DEFAULT;
50  unsigned int key_;
51 };
52 }
53 #endif