From 998066d377d2fcee0ed90206415691006cc61de3 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Tue, 18 Feb 2025 21:46:41 -0600 Subject: [PATCH] [ox/std] Add comparison functions --- deps/ox/src/ox/std/utility.hpp | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/deps/ox/src/ox/std/utility.hpp b/deps/ox/src/ox/std/utility.hpp index 1c628e17..f1e55301 100644 --- a/deps/ox/src/ox/std/utility.hpp +++ b/deps/ox/src/ox/std/utility.hpp @@ -27,6 +27,48 @@ constexpr void swap(T &a, T &b) noexcept { b = std::move(temp); } +template +constexpr bool cmp_equal(T const t, U const u) noexcept { + if constexpr(ox::is_signed_v == ox::is_signed_v) { + return t == u; + } else if constexpr(ox::is_signed_v) { + return ox::Signed{t} == u; + } else { + return t == ox::Signed{u}; + } +} + +template +constexpr bool cmp_less(T const t, U const u) noexcept { + if constexpr(ox::is_signed_v == ox::is_signed_v) { + return t < u; + } else if constexpr(ox::is_signed_v) { + return ox::Signed{t} < u; + } else { + return t < ox::Signed{u}; + } +} + +template +constexpr bool cmp_not_equal(T const t, U const u) noexcept { + return !std::cmp_equal(t, u); +} + +template +constexpr bool cmp_greater(T const t, U const u) noexcept { + return std::cmp_less(u, t); +} + +template +constexpr bool cmp_less_equal(T const t, U const u) noexcept { + return !std::cmp_less(u, t); +} + +template +constexpr bool cmp_greater_equal(T const t, U const u) noexcept { + return !std::cmp_less(t, u); +} + } #endif