blob: 36bd8c158685b880cde2f6be7263cac56af4de8b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#ifndef VERSION_H_C757E53C
#define VERSION_H_C757E53C
#include <sstream>
#include <regex>
struct Version {
int major = 0;
int minor = 0;
int revision = 0;
constexpr Version(int major_arg, int minor_arg, int rev_arg)
: major(major_arg), minor(minor_arg), revision(rev_arg) {}
Version(const std::string& ver_str) {
const std::regex version_regex("v([0-9]*)\.([0-9]*)\.([0-9]*)");
std::smatch version_match;
if (std::regex_match(ver_str, version_match, version_regex)) {
major = std::atoi(version_match[1].str().c_str());
minor = std::atoi(version_match[2].str().c_str());
revision = std::atoi(version_match[3].str().c_str());
}
}
std::string ToString() const {
std::ostringstream output;
output << "v" << major << "." << minor << "." << revision;
return output.str();
}
bool operator<(const Version& rhs) const {
return (major < rhs.major) ||
(major == rhs.major &&
(minor < rhs.minor ||
(minor == rhs.minor && revision < rhs.revision)));
}
};
constexpr const Version kTrackerVersion = Version(0, 9, 0);
#endif /* end of include guard: VERSION_H_C757E53C */
|