aboutsummaryrefslogtreecommitdiffstats
path: root/nihil.ucl/object.ccm
diff options
context:
space:
mode:
authorLexi Winter <lexi@le-fay.org>2025-06-22 15:22:23 +0100
committerLexi Winter <lexi@le-fay.org>2025-06-22 15:22:23 +0100
commita14cb70cb715beb714e7b05d8fe631c0df4a7053 (patch)
treea2a2c80ce3e1b4a28c0868a6db5f6b10f5223350 /nihil.ucl/object.ccm
parentf41970666675f873d7c1075efd192f22df8d17fe (diff)
downloadnihil-a14cb70cb715beb714e7b05d8fe631c0df4a7053.tar.gz
nihil-a14cb70cb715beb714e7b05d8fe631c0df4a7053.tar.bz2
nihil.ucl: add object comparison and std::format support
Diffstat (limited to 'nihil.ucl/object.ccm')
-rw-r--r--nihil.ucl/object.ccm23
1 files changed, 23 insertions, 0 deletions
diff --git a/nihil.ucl/object.ccm b/nihil.ucl/object.ccm
index 0b8c95f..43f36fe 100644
--- a/nihil.ucl/object.ccm
+++ b/nihil.ucl/object.ccm
@@ -170,6 +170,29 @@ private:
};
/***********************************************************************
+ * Object comparison.
+ */
+
+export auto operator<=>(object const &lhs, object const &rhs)
+ -> std::strong_ordering
+{
+ auto cmp = ::ucl_object_compare(lhs.get_ucl_object(),
+ rhs.get_ucl_object());
+
+ if (cmp < 0)
+ return std::strong_ordering::less;
+ else if (cmp > 0)
+ return std::strong_ordering::greater;
+ else
+ return std::strong_ordering::equal;
+}
+
+export auto operator==(object const &lhs, object const &rhs) -> bool
+{
+ return (lhs <=> rhs) == std::strong_ordering::equal;
+}
+
+/***********************************************************************
* Object iteration.
*/