diff options
author | crupest <crupest@outlook.com> | 2021-08-13 15:24:39 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-08-13 15:24:39 +0800 |
commit | 202e9feed09f7cb7d41c004d414283b262a95204 (patch) | |
tree | 7d36a349452bfd172ec8e27a389c0e0cedab2f97 /include/cru | |
parent | 2e379441f69c4fd3049d186f76b25457e6250282 (diff) | |
download | cru-202e9feed09f7cb7d41c004d414283b262a95204.tar.gz cru-202e9feed09f7cb7d41c004d414283b262a95204.tar.bz2 cru-202e9feed09f7cb7d41c004d414283b262a95204.zip |
...
Diffstat (limited to 'include/cru')
-rw-r--r-- | include/cru/common/Base.hpp | 25 | ||||
-rw-r--r-- | include/cru/common/String.hpp | 5 |
2 files changed, 30 insertions, 0 deletions
diff --git a/include/cru/common/Base.hpp b/include/cru/common/Base.hpp index 5ed1e763..2f76385e 100644 --- a/include/cru/common/Base.hpp +++ b/include/cru/common/Base.hpp @@ -42,6 +42,31 @@ classname() = default; \ ~classname() override = default; +#define CRU_DEFINE_COMPARE_OPERATORS(classname) \ + inline bool operator==(const classname& left, const classname& right) { \ + return left.Compare(right) == 0; \ + } \ + \ + inline bool operator!=(const classname& left, const classname& right) { \ + return left.Compare(right) != 0; \ + } \ + \ + inline bool operator<(const classname& left, const classname& right) { \ + return left.Compare(right) < 0; \ + } \ + \ + inline bool operator<=(const classname& left, const classname& right) { \ + return left.Compare(right) <= 0; \ + } \ + \ + inline bool operator>(const classname& left, const classname& right) { \ + return left.Compare(right) > 0; \ + } \ + \ + inline bool operator>=(const classname& left, const classname& right) { \ + return left.Compare(right) >= 0; \ + } + namespace cru { class CRU_BASE_API Object { public: diff --git a/include/cru/common/String.hpp b/include/cru/common/String.hpp index e779e3a6..c8defd13 100644 --- a/include/cru/common/String.hpp +++ b/include/cru/common/String.hpp @@ -139,6 +139,8 @@ class CRU_BASE_API String { std::string ToUtf8() const; + int Compare(const String& other) const; + private: static std::uint16_t kEmptyBuffer[1]; @@ -147,4 +149,7 @@ class CRU_BASE_API String { Index size_ = 0; // not including trailing '\0' Index capacity_ = 0; // always 1 smaller than real buffer size }; + +CRU_DEFINE_COMPARE_OPERATORS(String) + } // namespace cru |