From a3365eae79542b3e834a60aeaeeb96fead8cb7f4 Mon Sep 17 00:00:00 2001 From: Florian Albrechtskirchinger Date: Thu, 23 Jun 2022 16:13:45 +0200 Subject: [PATCH] mkdocs: add operator<=> examples --- .../operator_spaceship__const_reference.cpp | 41 +++++++++++++++++++ ...operator_spaceship__const_reference.output | 4 ++ .../operator_spaceship__scalartype.cpp | 41 +++++++++++++++++++ .../operator_spaceship__scalartype.output | 4 ++ .../docs/api/basic_json/operator_spaceship.md | 30 ++++++++++++++ 5 files changed, 120 insertions(+) create mode 100644 docs/examples/operator_spaceship__const_reference.cpp create mode 100644 docs/examples/operator_spaceship__const_reference.output create mode 100644 docs/examples/operator_spaceship__scalartype.cpp create mode 100644 docs/examples/operator_spaceship__scalartype.output diff --git a/docs/examples/operator_spaceship__const_reference.cpp b/docs/examples/operator_spaceship__const_reference.cpp new file mode 100644 index 000000000..3c6c8b8c5 --- /dev/null +++ b/docs/examples/operator_spaceship__const_reference.cpp @@ -0,0 +1,41 @@ +#include +#include +#include + +using json = nlohmann::json; + +const char* to_string(const std::partial_ordering& po) +{ + if (std::is_lt(po)) + { + return "less"; + } + else if (std::is_gt(po)) + { + return "greater"; + } + else if (std::is_eq(po)) + { + return "equivalent"; + } + return "unordered"; +} + +int main() +{ + // create several JSON values + json array_1 = {1, 2, 3}; + json array_2 = {1, 2, 4}; + json object_1 = {{"A", "a"}, {"B", "b"}}; + json object_2 = {{"B", "b"}, {"A", "a"}}; + json number = 17; + json string = "foo"; + json discarded = json(json::value_t::discarded); + + + // output values and comparisons + std::cout << array_1 << " <=> " << array_2 << " := " << to_string(array_1 <=> array_2) << '\n'; // *NOPAD* + std::cout << object_1 << " <=> " << object_2 << " := " << to_string(object_1 <=> object_2) << '\n'; // *NOPAD* + std::cout << string << " <=> " << number << " := " << to_string(string <=> number) << '\n'; // *NOPAD* + std::cout << string << " <=> " << discarded << " := " << to_string(string <=> discarded) << '\n'; // *NOPAD* +} diff --git a/docs/examples/operator_spaceship__const_reference.output b/docs/examples/operator_spaceship__const_reference.output new file mode 100644 index 000000000..2e8bf9f64 --- /dev/null +++ b/docs/examples/operator_spaceship__const_reference.output @@ -0,0 +1,4 @@ +[1,2,3] <=> [1,2,4] := less +{"A":"a","B":"b"} <=> {"A":"a","B":"b"} := equivalent +"foo" <=> 17 := greater +"foo" <=> := unordered diff --git a/docs/examples/operator_spaceship__scalartype.cpp b/docs/examples/operator_spaceship__scalartype.cpp new file mode 100644 index 000000000..d9dc3ca49 --- /dev/null +++ b/docs/examples/operator_spaceship__scalartype.cpp @@ -0,0 +1,41 @@ +#include +#include +#include + +using json = nlohmann::json; + +const char* to_string(const std::partial_ordering& po) +{ + if (std::is_lt(po)) + { + return "less"; + } + else if (std::is_gt(po)) + { + return "greater"; + } + else if (std::is_eq(po)) + { + return "equivalent"; + } + return "unordered"; +} + +int main() +{ + using float_limits = std::numeric_limits; + constexpr auto nan = float_limits::quiet_NaN(); + + // create several JSON values + json boolean = false; + json number = 17; + json string = "17"; + + + // output values and comparisons + std::cout << std::boolalpha << std::fixed; + std::cout << boolean << " <=> " << true << " := " << to_string(boolean <=> true) << '\n'; // *NOPAD* + std::cout << number << " <=> " << 17.0 << " := " << to_string(number <=> 17.0) << '\n'; // *NOPAD* + std::cout << number << " <=> " << nan << " := " << to_string(number <=> nan) << '\n'; // *NOPAD* + std::cout << string << " <=> " << 17 << " := " << to_string(string <=> 17) << '\n'; // *NOPAD* +} diff --git a/docs/examples/operator_spaceship__scalartype.output b/docs/examples/operator_spaceship__scalartype.output new file mode 100644 index 000000000..b2939a5f5 --- /dev/null +++ b/docs/examples/operator_spaceship__scalartype.output @@ -0,0 +1,4 @@ +false <=> true := less +17 <=> 17.000000 := equivalent +17 <=> nan := unordered +"17" <=> 17 := greater diff --git a/docs/mkdocs/docs/api/basic_json/operator_spaceship.md b/docs/mkdocs/docs/api/basic_json/operator_spaceship.md index 4beba4f86..5c89f4fd2 100644 --- a/docs/mkdocs/docs/api/basic_json/operator_spaceship.md +++ b/docs/mkdocs/docs/api/basic_json/operator_spaceship.md @@ -55,6 +55,36 @@ Linear. 2. Comparing a `NaN` with another `NaN`. 3. Comparing a `NaN` and any other number. +## Examples + +??? example "Example: (1) comparing JSON values" + + The example demonstrates comparing several JSON values. + + ```cpp + --8<-- "examples/operator_spaceship__const_reference.cpp" + ``` + + Output: + + ```json + --8<-- "examples/operator_spaceship__const_reference.output" + ``` + +??? example "Example: (2) comparing JSON values and scalars" + + The example demonstrates comparing several JSON values and scalars. + + ```cpp + --8<-- "examples/operator_spaceship__scalartype.cpp" + ``` + + Output: + + ```json + --8<-- "examples/operator_spaceship__scalartype.output" + ``` + ## See also - [**operator==**](operator_eq.md) - comparison: equal