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 {
36 std::ostream
& operator<<(std::ostream
& os
, const ceph_release_t r
);
38 inline bool operator!(ceph_release_t
& r
) {
39 return (r
< ceph_release_t::unknown
||
40 r
== ceph_release_t::unknown
);
43 inline ceph_release_t
& operator--(ceph_release_t
& r
) {
44 r
= static_cast<ceph_release_t
>(static_cast<uint8_t>(r
) - 1);
48 inline ceph_release_t
& operator++(ceph_release_t
& r
) {
49 r
= static_cast<ceph_release_t
>(static_cast<uint8_t>(r
) + 1);
53 inline bool operator<(ceph_release_t lhs
, ceph_release_t rhs
) {
54 // we used to use -1 for invalid release
55 if (static_cast<int8_t>(lhs
) < 0) {
57 } else if (static_cast<int8_t>(rhs
) < 0) {
60 return static_cast<uint8_t>(lhs
) < static_cast<uint8_t>(rhs
);
63 inline bool operator>(ceph_release_t lhs
, ceph_release_t rhs
) {
64 // we used to use -1 for invalid release
65 if (static_cast<int8_t>(lhs
) < 0) {
67 } else if (static_cast<int8_t>(rhs
) < 0) {
70 return static_cast<uint8_t>(lhs
) > static_cast<uint8_t>(rhs
);
73 inline bool operator>=(ceph_release_t lhs
, ceph_release_t rhs
) {
77 bool can_upgrade_from(ceph_release_t from_release
,
78 std::string_view from_release_name
,
81 ceph_release_t
ceph_release_from_name(std::string_view sv
);
82 ceph_release_t
ceph_release();
84 inline std::string_view
to_string(ceph_release_t r
) {
85 return ceph_release_name(static_cast<int>(r
));
87 template<typename IntType
> IntType
to_integer(ceph_release_t r
) {
88 return static_cast<IntType
>(r
);