REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
version.h
Go to the documentation of this file.
1// Copyright (c) 2024 anabrid GmbH
2// Contact: https://www.anabrid.com/licensing/
3//
4// SPDX-License-Identifier: MIT OR GPL-2.0-or-later
5
6#pragma once
7
8#include <stdint.h>
9#include <string>
10
11namespace entities {
12
13struct __attribute__((packed)) Version {
14 uint8_t major;
15 uint8_t minor;
16 uint8_t patch;
17
18 constexpr Version(const uint8_t major_, const uint8_t minor_, const uint8_t patch_)
19 : major(major_), minor(minor_), patch(patch_) {}
20
21 constexpr Version(const uint8_t major_, const uint8_t minor_) : major(major_), minor(minor_), patch(0) {}
22
23 constexpr explicit Version(const uint8_t major_) : major(major_), minor(0), patch(0) {}
24
25 std::string to_string() const {
26 return std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(patch);
27 }
28
29 bool operator==(const Version &r) const {
30 return this->major == r.major && this->minor == r.minor && this->patch == r.patch;
31 }
32
33 bool operator!=(const Version &r) const {
34 return this->major != r.major || this->minor != r.minor || this->patch != r.patch;
35 }
36
37 operator bool() const { return major || minor || patch; }
38};
39
40inline bool operator<(const Version &l, const Version &r) {
41 if (l.major != r.major)
42 return l.major < r.major;
43 if (l.minor != r.minor)
44 return l.minor < r.minor;
45 return l.patch < r.patch;
46}
47
48inline bool operator>(const Version &l, const Version &r) { return r < l; }
49
50inline bool operator<=(const Version &l, const Version &r) { return !(r < l); }
51
52inline bool operator>=(const Version &l, const Version &r) { return !(l < r); }
53
54} // namespace entities
bool operator>=(const Version &l, const Version &r)
Definition version.h:52
bool operator>(const Version &l, const Version &r)
Definition version.h:48
bool operator<(const Version &l, const Version &r)
Definition version.h:40
struct __attribute__((packed)) EntityClassifier
Definition base.h:41
bool operator<=(const Version &l, const Version &r)
Definition version.h:50