Jpp
JVersion.hh
Go to the documentation of this file.
1 #ifndef __JEEP__JVERSION__
2 #define __JEEP__JVERSION__
3 
4 #include <istream>
5 #include <ostream>
6 #include <string>
7 
8 #include "JLang/JEquals.hh"
9 #include "JIO/JSerialisable.hh"
10 #include "JIO/JSTDIO.hh"
11 
12 
13 /**
14  * \author mdejong
15  */
16 
17 namespace JEEP {}
18 namespace JPP { using namespace JEEP; }
19 
20 namespace JEEP {
21 
22  using JLANG::JEquals;
23  using JIO::JReader;
24  using JIO::JWriter;
25 
26 
27  /**
28  * Auxiliary class for version identifier.
29  */
30  class JVersion :
31  public JEquals<JVersion>
32  {
33  public:
34  /**
35  * Default constructor.
36  */
38  __variant()
39  {}
40 
41 
42  /**
43  * Constructor.
44  *
45  * \param variant variant
46  */
47  JVersion(const std::string& variant) :
48  __variant(variant)
49  {}
50 
51 
52  /**
53  * Get version.
54  *
55  * \return version
56  */
57  const JVersion& getVersion() const
58  {
59  return static_cast<const JVersion&>(*this);
60  }
61 
62 
63  /**
64  * Get version.
65  *
66  * \return version
67  */
69  {
70  return static_cast<JVersion&>(*this);
71  }
72 
73 
74  /**
75  * Set version.
76  *
77  * \param version version
78  */
79  void setVersion(const JVersion& version)
80  {
81  static_cast<JVersion&>(*this) = version;
82  }
83 
84 
85  /**
86  * Get variant.
87  *
88  * \return variant
89  */
90  const std::string& getVariant() const
91  {
92  return this->__variant;
93  }
94 
95 
96  /**
97  * Set variant.
98  *
99  * \param variant variant
100  */
101  void setVariant(const std::string& variant)
102  {
103  this->__variant = variant;
104  }
105 
106 
107  /**
108  * Equal method.
109  *
110  * \param version version
111  * \result true if this version equal to given version; else false
112  */
113  inline bool equals(const JVersion& version) const
114  {
115  return this->getVariant() == version.getVariant();
116  }
117 
118 
119  /**
120  * Read version from input.
121  *
122  * \param in input stream
123  * \param version version
124  * \return input stream
125  */
126  friend inline std::istream& operator>>(std::istream& in, JVersion& version)
127  {
128  return in >> version.__variant;
129  }
130 
131 
132  /**
133  * Write version to output.
134  *
135  * \param out output stream
136  * \param version version
137  * \return output stream
138  */
139  friend inline std::ostream& operator<<(std::ostream& out, const JVersion& version)
140  {
141  return out << version.__variant;
142  }
143 
144 
145  /**
146  * Read version from input.
147  *
148  * \param in reader
149  * \param version version
150  * \return reader
151  */
152  friend inline JReader& operator>>(JReader& in, JVersion& version)
153  {
154  return in >> version.__variant;
155  }
156 
157 
158  /**
159  * Write version to output.
160  *
161  * \param out writer
162  * \param version version
163  * \return writer
164  */
165  friend inline JWriter& operator<<(JWriter& out, const JVersion& version)
166  {
167  return out << version.__variant;
168  }
169 
170  protected:
171  std::string __variant;
172  };
173 
174 
175  /**
176  * Less-than operator for versions.
177  *
178  * \param first first version
179  * \param second second version
180  * \return true if first version before second; else false
181  */
182  bool inline operator<(const JVersion& first, const JVersion& second)
183  {
184  return first.getVariant() < second.getVariant();
185  }
186 }
187 
188 #endif
JIO::JReader
Interface for binary input.
Definition: JSerialisable.hh:62
JEEP::JVersion::getVersion
const JVersion & getVersion() const
Get version.
Definition: JVersion.hh:57
JEEP::JVersion::operator>>
friend std::istream & operator>>(std::istream &in, JVersion &version)
Read version from input.
Definition: JVersion.hh:126
JEEP::JVersion::__variant
std::string __variant
Definition: JVersion.hh:171
JEEP
General puprpose classes and methods.
Definition: JArgs.hh:15
JLANG::JEquals
Template definition of auxiliary base class for comparison of data structures.
Definition: JEquals.hh:24
JEquals.hh
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
JSerialisable.hh
JSTDIO.hh
JIO::JWriter
Interface for binary output.
Definition: JSerialisable.hh:130
JEEP::JVersion::JVersion
JVersion(const std::string &variant)
Constructor.
Definition: JVersion.hh:47
JEEP::JVersion::getVersion
JVersion & getVersion()
Get version.
Definition: JVersion.hh:68
JEEP::operator<
bool operator<(const JVersion &first, const JVersion &second)
Less-than operator for versions.
Definition: JVersion.hh:182
JEEP::JVersion::equals
bool equals(const JVersion &version) const
Equal method.
Definition: JVersion.hh:113
JEEP::JVersion::operator>>
friend JReader & operator>>(JReader &in, JVersion &version)
Read version from input.
Definition: JVersion.hh:152
JEEP::JVersion
Auxiliary class for version identifier.
Definition: JVersion.hh:30
JEEP::JVersion::operator<<
friend std::ostream & operator<<(std::ostream &out, const JVersion &version)
Write version to output.
Definition: JVersion.hh:139
JEEP::JVersion::getVariant
const std::string & getVariant() const
Get variant.
Definition: JVersion.hh:90
JEEP::JVersion::setVariant
void setVariant(const std::string &variant)
Set variant.
Definition: JVersion.hh:101
JEEP::JVersion::operator<<
friend JWriter & operator<<(JWriter &out, const JVersion &version)
Write version to output.
Definition: JVersion.hh:165
JEEP::JVersion::JVersion
JVersion()
Default constructor.
Definition: JVersion.hh:37
JEEP::JVersion::setVersion
void setVersion(const JVersion &version)
Set version.
Definition: JVersion.hh:79