diff --git a/doc/docset/docSet.sql b/doc/docset/docSet.sql index b48394099..93fd47863 100644 --- a/doc/docset/docSet.sql +++ b/doc/docset/docSet.sql @@ -78,6 +78,8 @@ INSERT INTO searchIndex(name, type, path) VALUES ('operator!=', 'Operator', 'api INSERT INTO searchIndex(name, type, path) VALUES ('operator+=', 'Operator', 'api/basic_json/operator+=/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('operator=', 'Operator', 'api/basic_json/operator=/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('operator==', 'Operator', 'api/basic_json/operator==/index.html'); +INSERT INTO searchIndex(name, type, path) VALUES ('operator<', 'Operator', 'api/basic_json/operator', 'Operator', 'api/basic_json/operator>/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('operator[]', 'Operator', 'api/basic_json/operator[]/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('operator""_json', 'Literal', 'api/basic_json/operator_literal_json/index.html'); INSERT INTO searchIndex(name, type, path) VALUES ('operator""_json_pointer', 'Literal', 'api/basic_json/operator_literal_json_pointer/index.html'); diff --git a/doc/mkdocs/docs/api/basic_json/index.md b/doc/mkdocs/docs/api/basic_json/index.md index cdc7f9452..ff005251f 100644 --- a/doc/mkdocs/docs/api/basic_json/index.md +++ b/doc/mkdocs/docs/api/basic_json/index.md @@ -81,9 +81,9 @@ Todo | `const_pointer` | `#!cpp std::allocator_traits::const_pointer` | | `iterator` | [LegacyBidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator) | | `const_iterator` | constant [LegacyBidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator) | -| `reverse_iterator` | | -| `const_reverse_iterator` | | -| `iteration_proxy` | | +| `reverse_iterator` | reverse iterator, derived from `iterator` | +| `const_reverse_iterator` | reverse iterator, derived from `const_iterator` | +| `iteration_proxy` | helper type for [`items`](items.md) function | ### JSON value data types @@ -193,9 +193,9 @@ Access to the JSON value - [**operator==**](operator==.md) - comparison: equal - [**operator!=**](operator!=.md) - comparison: not equal -- operator< - comparison: less than +- [**operator<**](operator<.md) - comparison: less than - operator<= - comparison: less than or equal -- operator> - comparison: greater than +- [**operator>**](operator>.md) - comparison: greater than - operator>= - comparison: greater than or equal ### Serialization diff --git a/doc/mkdocs/docs/api/basic_json/operator<.md b/doc/mkdocs/docs/api/basic_json/operator<.md new file mode 100644 index 000000000..e8d2fb359 --- /dev/null +++ b/doc/mkdocs/docs/api/basic_json/operator<.md @@ -0,0 +1,73 @@ +# basic_json::operator< + +```cpp +bool operator<(const_reference lhs, const_reference rhs) noexcept, + +template +bool operator<(const_reference lhs, const ScalarType rhs) noexcept; + +template +bool operator<(ScalarType lhs, const const_reference rhs) noexcept; +``` + +Compares whether one JSON value `lhs` is less than another JSON value `rhs` according to the following rules: + +- If `lhs` and `rhs` have the same type, the values are compared using the default `<` operator. +- Integer and floating-point numbers are automatically converted before comparison +- Discarded values a +- In case `lhs` and `rhs` have different types, the values are ignored and the order of the types is considered, which + is: + 1. null + 2. boolean + 3. number (all types) + 4. object + 5. array + 6. string + 7. binary + + For instance, any boolean value is considered less than any string. + +## Template parameters + +`ScalarType` +: a scalar type according to `std::is_scalar::value` + +## Parameters + +`lhs` (in) +: first value to consider + +`rhs` (in) +: second value to consider + +## Return value + +whether `lhs` is less than `rhs` + +## Exception safety + +No-throw guarantee: this function never throws exceptions. + +## Complexity + +Linear. + +## Example + +??? example + + The example demonstrates comparing several JSON types. + + ```cpp + --8<-- "examples/operator__less.cpp" + ``` + + Output: + + ```json + --8<-- "examples/operator__less.output" + ``` + +## Version history + +- Added in version 1.0.0. diff --git a/doc/mkdocs/docs/api/basic_json/operator>.md b/doc/mkdocs/docs/api/basic_json/operator>.md new file mode 100644 index 000000000..b9e32629d --- /dev/null +++ b/doc/mkdocs/docs/api/basic_json/operator>.md @@ -0,0 +1,58 @@ +# basic_json::operator> + +```cpp +bool operator>(const_reference lhs, const_reference rhs) noexcept, + +template +bool operator>(const_reference lhs, const ScalarType rhs) noexcept; + +template +bool operator>(ScalarType lhs, const const_reference rhs) noexcept; +``` + +Compares whether one JSON value `lhs` is greater than another JSON value `rhs` by calculating `#!cpp !(lhs <= rhs)`. + +## Template parameters + +`ScalarType` +: a scalar type according to `std::is_scalar::value` + +## Parameters + +`lhs` (in) +: first value to consider + +`rhs` (in) +: second value to consider + +## Return value + +whether `lhs` is greater than `rhs` + +## Exception safety + +No-throw guarantee: this function never throws exceptions. + +## Complexity + +Linear. + +## Example + +??? example + + The example demonstrates comparing several JSON types. + + ```cpp + --8<-- "examples/operator__greater.cpp" + ``` + + Output: + + ```json + --8<-- "examples/operator__greater.output" + ``` + +## Version history + +- Added in version 1.0.0. diff --git a/doc/mkdocs/mkdocs.yml b/doc/mkdocs/mkdocs.yml index 3310bd704..272ee5fbe 100644 --- a/doc/mkdocs/mkdocs.yml +++ b/doc/mkdocs/mkdocs.yml @@ -146,6 +146,8 @@ nav: - api/basic_json/operator=.md - api/basic_json/operator==.md - api/basic_json/operator!=.md + - api/basic_json/operator<.md + - api/basic_json/operator>.md - api/basic_json/operator+=.md - api/basic_json/operator_literal_json.md - api/basic_json/operator_literal_json_pointer.md