From a574dcb2aed065e48c60565697dff77595e0e9b2 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Mon, 23 Jul 2018 15:56:40 +0100 Subject: [PATCH] u128: Add comparison operators --- src/common/u128.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/common/u128.h b/src/common/u128.h index b08143c8..401c608f 100644 --- a/src/common/u128.h +++ b/src/common/u128.h @@ -7,6 +7,7 @@ #pragma once #include +#include #include #include "common/bit_util.h" @@ -51,6 +52,30 @@ inline u128 operator-(u128 a, u128 b) { return result; } +inline bool operator<(u128 a, u128 b) { + return std::tie(a.upper, a.lower) < std::tie(b.upper, b.lower); +} + +inline bool operator>(u128 a, u128 b) { + return std::tie(a.upper, a.lower) > std::tie(b.upper, b.lower); +} + +inline bool operator<=(u128 a, u128 b) { + return std::tie(a.upper, a.lower) <= std::tie(b.upper, b.lower); +} + +inline bool operator>=(u128 a, u128 b) { + return std::tie(a.upper, a.lower) >= std::tie(b.upper, b.lower); +} + +inline bool operator==(u128 a, u128 b) { + return std::tie(a.upper, a.lower) == std::tie(b.upper, b.lower); +} + +inline bool operator!=(u128 a, u128 b) { + return std::tie(a.upper, a.lower) != std::tie(b.upper, b.lower); +} + u128 operator<<(u128 operand, int amount); u128 operator>>(u128 operand, int amount);