1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
10 #include "common/ceph_strings.h"
12 // the C++ version of CEPH_RELEASE_* defined by include/rados.h
13 enum class ceph_release_t
: std::uint8_t {
35 std::ostream
& operator<<(std::ostream
& os
, const ceph_release_t r
);
37 inline bool operator!(ceph_release_t
& r
) {
38 return (r
< ceph_release_t::unknown
||
39 r
== ceph_release_t::unknown
);
42 inline ceph_release_t
& operator--(ceph_release_t
& r
) {
43 r
= static_cast<ceph_release_t
>(static_cast<uint8_t>(r
) - 1);
47 inline ceph_release_t
& operator++(ceph_release_t
& r
) {
48 r
= static_cast<ceph_release_t
>(static_cast<uint8_t>(r
) + 1);
52 inline bool operator<(ceph_release_t lhs
, ceph_release_t rhs
) {
53 // we used to use -1 for invalid release
54 if (static_cast<int8_t>(lhs
) < 0) {
56 } else if (static_cast<int8_t>(rhs
) < 0) {
59 return static_cast<uint8_t>(lhs
) < static_cast<uint8_t>(rhs
);
62 inline bool operator>(ceph_release_t lhs
, ceph_release_t rhs
) {
63 // we used to use -1 for invalid release
64 if (static_cast<int8_t>(lhs
) < 0) {
66 } else if (static_cast<int8_t>(rhs
) < 0) {
69 return static_cast<uint8_t>(lhs
) > static_cast<uint8_t>(rhs
);
72 inline bool operator>=(ceph_release_t lhs
, ceph_release_t rhs
) {
76 bool can_upgrade_from(ceph_release_t from_release
,
77 std::string_view from_release_name
,
80 ceph_release_t
ceph_release_from_name(std::string_view sv
);
81 ceph_release_t
ceph_release();
83 inline std::string_view
to_string(ceph_release_t r
) {
84 return ceph_release_name(static_cast<int>(r
));
86 template<typename IntType
> IntType
to_integer(ceph_release_t r
) {
87 return static_cast<IntType
>(r
);