diff options
| author | Lexi Winter <lexi@le-fay.org> | 2025-06-22 15:22:23 +0100 |
|---|---|---|
| committer | Lexi Winter <lexi@le-fay.org> | 2025-06-22 15:22:23 +0100 |
| commit | a14cb70cb715beb714e7b05d8fe631c0df4a7053 (patch) | |
| tree | a2a2c80ce3e1b4a28c0868a6db5f6b10f5223350 /nihil.ucl/object.ccm | |
| parent | f41970666675f873d7c1075efd192f22df8d17fe (diff) | |
| download | nihil-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.ccm | 23 |
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. */ |
