blob: 859fc69e201f91a3cc32e31fc4086f144773ad90 (
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
|
#ifndef VERSION_H_C757E53C
#define VERSION_H_C757E53C
#include <iostream>
#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());
}
}
bool operator<(const Version& rhs) const {
return (major < rhs.major) ||
(major == rhs.major &&
(minor < rhs.minor ||
(minor == rhs.minor && revision < rhs.revision)));
}
};
std::ostream& operator<<(std::ostream& out, const Version& ver);
constexpr const Version kTrackerVersion = Version(0, 8, 0);
#endif /* end of include guard: VERSION_H_C757E53C */
|