otsdaq  3.03.00
TableVersion.h
1 #ifndef _ots_TableVersion_h_
2 #define _ots_TableVersion_h_
3 
4 #include <ostream>
5 
6 namespace ots
7 {
14 {
15  public:
16  static const unsigned int INVALID;
17  static const unsigned int DEFAULT;
18  static const unsigned int SCRATCH;
19 
20  explicit TableVersion(unsigned int version = INVALID);
21  explicit TableVersion(char* const& versionStr);
22  explicit TableVersion(const std::string& versionStr);
23  virtual ~TableVersion(void);
24 
25  unsigned int version(void) const;
26  bool isTemporaryVersion(void) const;
27  bool isScratchVersion(void) const;
28  bool isMockupVersion(void) const;
29  bool isInvalid(void) const;
30  std::string toString(void) const;
31  std::string str() const { return toString(); }
32 
34  TableVersion& operator=(const unsigned int version);
35  bool operator==(unsigned int version) const;
36  bool operator==(const TableVersion& version) const;
37  bool operator!=(unsigned int version) const;
38  bool operator!=(const TableVersion& version) const;
39  bool operator<(const TableVersion& version) const;
40  bool operator>(const TableVersion& version) const;
41  bool operator<=(const TableVersion& version) const { return !operator>(version); }
42  bool operator>=(const TableVersion& version) const { return !operator<(version); }
43  TableVersion& operator*=(
44  const unsigned int a);
45  TableVersion& operator*=(
46  const TableVersion a);
47  TableVersion& operator+=(
48  const TableVersion a);
49  TableVersion& operator-=(
50  const TableVersion a);
51  TableVersion& operator/=(
52  const TableVersion a);
53 
54  friend std::ostream& operator<<(std::ostream& out, const TableVersion& version)
55  {
56  if(version.isScratchVersion())
57  out << "ScratchVersion";
58  else if(version.isMockupVersion())
59  out << "Mock-up";
60  else if(version.isInvalid())
61  out << "InvalidVersion";
62  else
63  out << version.toString();
64  return out;
65  }
66 
67  static TableVersion getNextVersion(const TableVersion& version = TableVersion());
68  static TableVersion getNextTemporaryVersion(
69  const TableVersion& version = TableVersion());
70 
71  protected:
72  enum
73  {
74  NUM_OF_TEMP_VERSIONS = 10000
75  };
76 
77  unsigned int version_;
78 };
79 } // namespace ots
80 #endif
TableVersion & operator-=(const TableVersion a)
to support StringMacros on TableVersion types
Definition: TableVersion.cc:75
bool isMockupVersion(void) const
TableVersion & operator/=(const TableVersion a)
to support StringMacros on TableVersion types
Definition: TableVersion.cc:83
std::string toString(void) const
toString
Definition: TableVersion.cc:33
bool operator>(const TableVersion &version) const
operator>
TableVersion & operator=(const unsigned int version)
Operators.
Definition: TableVersion.cc:42
bool operator!=(unsigned int version) const
operator!=
bool isInvalid(void) const
isInvalid
bool operator==(unsigned int version) const
operator==
Definition: TableVersion.cc:91
bool operator<(const TableVersion &version) const
operator<
static TableVersion getNextVersion(const TableVersion &version=TableVersion())
std::string str() const
alternative alias method
Definition: TableVersion.h:31
bool isScratchVersion(void) const
bool isTemporaryVersion(void) const
unsigned int version(void) const
Definition: TableVersion.cc:29
TableVersion & operator+=(const TableVersion a)
to support StringMacros on TableVersion types
Definition: TableVersion.cc:67
TableVersion & operator*=(const unsigned int a)
to support StringMacros on TableVersion types
Definition: TableVersion.cc:51
static TableVersion getNextTemporaryVersion(const TableVersion &version=TableVersion())