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  bool isValid(void) const { return !isInvalid(); }
31  std::string toString(void) const;
32  std::string str() const { return toString(); }
33 
35  TableVersion& operator=(const unsigned int version);
36  bool operator==(unsigned int version) const;
37  bool operator==(const TableVersion& version) const;
38  bool operator!=(unsigned int version) const;
39  bool operator!=(const TableVersion& version) const;
40  bool operator<(const TableVersion& version) const;
41  bool operator>(const TableVersion& version) const;
42  bool operator<=(const TableVersion& version) const { return !operator>(version); }
43  bool operator>=(const TableVersion& version) const { return !operator<(version); }
44  TableVersion& operator*=(
45  const unsigned int a);
46  TableVersion& operator*=(
47  const TableVersion a);
48  TableVersion& operator+=(
49  const TableVersion a);
50  TableVersion& operator-=(
51  const TableVersion a);
52  TableVersion& operator/=(
53  const TableVersion a);
54 
55  friend std::ostream& operator<<(std::ostream& out, const TableVersion& version)
56  {
57  if(version.isScratchVersion())
58  out << "ScratchVersion";
59  else if(version.isMockupVersion())
60  out << "Mock-up";
61  else if(version.isInvalid())
62  out << "InvalidVersion";
63  else
64  out << version.toString();
65  return out;
66  }
67 
68  static TableVersion getNextVersion(const TableVersion& version = TableVersion());
69  static TableVersion getNextTemporaryVersion(
70  const TableVersion& version = TableVersion());
71 
72  protected:
73  enum
74  {
75  NUM_OF_TEMP_VERSIONS = 10000
76  };
77 
78  unsigned int version_;
79 };
80 } // namespace ots
81 #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:32
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())