Unverified Commit 4883df85 authored by Dominik Charousset's avatar Dominik Charousset Committed by GitHub

Merge pull request #1445

Add missing compare overload
parents 88c27ab5 6c56bc17
...@@ -6,6 +6,12 @@ is based on [Keep a Changelog](https://keepachangelog.com). ...@@ -6,6 +6,12 @@ is based on [Keep a Changelog](https://keepachangelog.com).
## [Unreleased] ## [Unreleased]
### Added
- The class `caf::telemetry::label` now has a new `compare` overload that
accepts a `caf::telemetry::label_view` to make the interface of the both
classes symmetrical.
### Changed ### Changed
- When using CAF to parse CLI arguments, the output of `--help` now includes all - When using CAF to parse CLI arguments, the output of `--help` now includes all
......
...@@ -53,7 +53,15 @@ public: ...@@ -53,7 +53,15 @@ public:
// -- comparison ------------------------------------------------------------- // -- comparison -------------------------------------------------------------
int compare(const label& x) const noexcept; template <class T1, class T2>
static int compare(const T1& lhs, const T2& rhs) noexcept {
auto cmp1 = lhs.name().compare(rhs.name());
return cmp1 != 0 ? cmp1 : lhs.value().compare(rhs.value());
}
int compare(const label_view& other) const noexcept;
int compare(const label& other) const noexcept;
private: private:
size_t name_length_; size_t name_length_;
......
...@@ -42,9 +42,9 @@ public: ...@@ -42,9 +42,9 @@ public:
// -- comparison ------------------------------------------------------------- // -- comparison -------------------------------------------------------------
int compare(const label& x) const noexcept; int compare(const label& other) const noexcept;
int compare(const label_view& x) const noexcept; int compare(const label_view& other) const noexcept;
private: private:
std::string_view name_; std::string_view name_;
......
...@@ -25,8 +25,12 @@ void label::value(std::string_view new_value) { ...@@ -25,8 +25,12 @@ void label::value(std::string_view new_value) {
str_.insert(str_.end(), new_value.begin(), new_value.end()); str_.insert(str_.end(), new_value.begin(), new_value.end());
} }
int label::compare(const label_view& x) const noexcept {
return compare(*this, x);
}
int label::compare(const label& x) const noexcept { int label::compare(const label& x) const noexcept {
return str_.compare(x.str()); return compare(*this, x);
} }
std::string to_string(const label& x) { std::string to_string(const label& x) {
......
...@@ -8,14 +8,12 @@ ...@@ -8,14 +8,12 @@
namespace caf::telemetry { namespace caf::telemetry {
int label_view::compare(const label_view& x) const noexcept { int label_view::compare(const label_view& other) const noexcept {
auto cmp1 = name().compare(x.name()); return label::compare(*this, other);
return cmp1 != 0 ? cmp1 : value().compare(x.value());
} }
int label_view::compare(const label& x) const noexcept { int label_view::compare(const label& other) const noexcept {
auto cmp1 = name().compare(x.name()); return label::compare(*this, other);
return cmp1 != 0 ? cmp1 : value().compare(x.value());
} }
std::string to_string(const label_view& x) { std::string to_string(const label_view& x) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment