9 inline version() : m_data() { m_data.m_data = 0; }
10 explicit version(uint64_t data) : m_data() { m_data.m_data = data; };
11 version(uint32_t major_version, uint16_t minor_version,
12 uint16_t patch_version)
14 m_data.m_detail.m_major_version = major_version;
15 m_data.m_detail.m_minor_version = minor_version;
16 m_data.m_detail.m_patch_version = patch_version;
25 inline uint32_t major_version()
const {
26 return m_data.m_detail.m_major_version;
28 inline uint16_t minor_version()
const {
29 return m_data.m_detail.m_minor_version;
31 inline uint16_t patch_version()
const {
32 return m_data.m_detail.m_patch_version;
34 inline uint32_t &major_version() {
return m_data.m_detail.m_major_version; }
35 inline uint16_t &minor_version() {
return m_data.m_detail.m_minor_version; }
36 inline uint16_t &patch_version() {
return m_data.m_detail.m_patch_version; }
38 inline uint64_t data()
const {
return m_data.m_data; }
40 friend inline bool operator<(
const version &v1,
const version &v2) {
41 if (v1.m_data.m_detail.m_major_version <
42 v2.m_data.m_detail.m_major_version) {
45 if (v1.m_data.m_detail.m_minor_version <
46 v2.m_data.m_detail.m_minor_version) {
49 if (v1.m_data.m_detail.m_patch_version <
50 v2.m_data.m_detail.m_patch_version) {
56 friend inline bool operator>(
const version &v1,
const version &v2) {
60 friend inline bool operator>=(
const version &v1,
const version &v2) {
64 friend inline bool operator<=(
const version &v1,
const version &v2) {
68 friend inline bool operator==(
const version &v1,
const version &v2) {
69 return v1 >= v2 && v2 >= v1;
72 friend inline bool operator!=(
const version &v1,
const version &v2) {
80 uint32_t m_major_version;
81 uint16_t m_minor_version;
82 uint16_t m_patch_version;
93 std::ostream &operator<<(std::ostream &stream,
const ypc::version &v);
94 std::istream &operator>>(std::istream &stream,
ypc::version &v);