27 constexpr operator uint32_t()
const {
28 return (
static_cast<uint32_t
>(
major) << 16) |
static_cast<uint32_t
>(
minor);
32 return static_cast<uint32_t
>(*this) >=
static_cast<uint32_t
>(other);
36 return static_cast<uint32_t
>(*this) <=
static_cast<uint32_t
>(other);
40 return static_cast<uint32_t
>(*this) >
static_cast<uint32_t
>(other);
44 return static_cast<uint32_t
>(*this) <
static_cast<uint32_t
>(other);
48 return static_cast<uint32_t
>(*this) ==
static_cast<uint32_t
>(other);
52 return static_cast<uint32_t
>(*this) !=
static_cast<uint32_t
>(other);
56 return std::to_string(
major) +
"." + std::to_string(
minor);
59 constexpr operator std::string()
const {
80 explicit constexpr BashVersion(std::string_view version_string) {
81 uint16_t* current = &
major;
84 for (
const auto& c : version_string) {
88 if (value > (std::numeric_limits<uint16_t>::max() - (c -
'0')) / 10)
89 throw std::invalid_argument(
"Invalid Bash version: " + std::string(version_string));
90 value = (value * 10) + (c -
'0');
93 if (current == &
minor)
94 throw std::invalid_argument(
"Invalid Bash version: " + std::string(version_string));
100 throw std::invalid_argument(
"Invalid Bash version: " + std::string(version_string));
Represents a Bash version to target for code generation.
Definition BashVersion.h:23
constexpr BashVersion & operator=(const BashVersion &)=default
uint16_t minor
Definition BashVersion.h:25
constexpr BashVersion(BashVersion &&)=default
uint16_t major
Definition BashVersion.h:24
constexpr bool operator<=(const BashVersion &other) const
Definition BashVersion.h:35
constexpr ~BashVersion()=default
constexpr std::string to_string() const
Definition BashVersion.h:55
constexpr bool operator==(const BashVersion &other) const
Definition BashVersion.h:47
constexpr BashVersion & operator=(BashVersion &&)=default
constexpr bool operator<(const BashVersion &other) const
Definition BashVersion.h:43
constexpr bool operator!=(const BashVersion &other) const
Definition BashVersion.h:51
constexpr BashVersion(uint16_t major, uint16_t minor)
Definition BashVersion.h:70
constexpr bool operator>(const BashVersion &other) const
Definition BashVersion.h:39
constexpr BashVersion()=default
constexpr BashVersion(std::string_view version_string)
Constructs a BashVersion from a string in the format "major.minor" (e.g., "5.2")
Definition BashVersion.h:80
constexpr BashVersion(const BashVersion &)=default
constexpr bool operator>=(const BashVersion &other) const
Definition BashVersion.h:31