48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
#pragma once
|
|
#include <Arduino.h>
|
|
|
|
struct Version {
|
|
byte parts[3]; ///< Version numbers: [0]=major, [1]=minor, [2]=patch]
|
|
|
|
byte& major() { return parts[0]; }
|
|
byte& minor() { return parts[1]; }
|
|
byte& patch() { return parts[2]; }
|
|
|
|
const byte& major() const { return parts[0]; }
|
|
const byte& minor() const { return parts[1]; }
|
|
const byte& patch() const { return parts[2]; }
|
|
|
|
String toString() const {
|
|
return String(parts[0]) + "." + String(parts[1]) + "." + String(parts[2]);
|
|
}
|
|
|
|
// Comparison operators
|
|
bool operator==(const Version& other) const {
|
|
return parts[0] == other.parts[0] &&
|
|
parts[1] == other.parts[1] &&
|
|
parts[2] == other.parts[2];
|
|
}
|
|
|
|
bool operator!=(const Version& other) const {
|
|
return !(*this == other);
|
|
}
|
|
|
|
bool operator<(const Version& other) const {
|
|
return (parts[0] < other.parts[0]) ||
|
|
(parts[0] == other.parts[0] && parts[1] < other.parts[1]) ||
|
|
(parts[0] == other.parts[0] && parts[1] == other.parts[1] && parts[2] < other.parts[2]);
|
|
}
|
|
|
|
bool operator>(const Version& other) const {
|
|
return other < *this;
|
|
}
|
|
|
|
bool operator<=(const Version& other) const {
|
|
return !(*this > other);
|
|
}
|
|
|
|
bool operator>=(const Version& other) const {
|
|
return !(*this < other);
|
|
}
|
|
};
|