mirror of
https://github.com/nlohmann/json.git
synced 2026-10-03 14:25:47 +01:00
deploy: 63c10a51fc
This commit is contained in:
@@ -10,6 +10,10 @@ Return the last reference token.
|
||||
|
||||
Last reference token.
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Exceptions
|
||||
|
||||
Throws [out_of_range.405](../../home/exceptions.md#jsonexceptionout_of_range405) if the JSON pointer has no parent.
|
||||
@@ -34,6 +38,13 @@ Constant.
|
||||
--8<-- "examples/json_pointer__back.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [front](front.md) return first reference token
|
||||
- [pop_back](pop_back.md) remove the last reference token
|
||||
- [push_back](push_back.md) append an unescaped token at the end of the pointer
|
||||
- [parent_pointer](parent_pointer.md) returns the parent of this JSON pointer
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.6.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -10,6 +10,10 @@ Return the last reference token.
|
||||
|
||||
Last reference token.
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Exceptions
|
||||
|
||||
Throws [out_of_range.405](https://json.nlohmann.me/home/exceptions/#jsonexceptionout_of_range405) if the JSON pointer has no parent.
|
||||
@@ -49,6 +53,13 @@ last reference token of "/foo" is "foo"
|
||||
last reference token of "/foo/0" is "0"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [front](https://json.nlohmann.me/api/json_pointer/front/index.md) return first reference token
|
||||
- [pop_back](https://json.nlohmann.me/api/json_pointer/pop_back/index.md) remove the last reference token
|
||||
- [push_back](https://json.nlohmann.me/api/json_pointer/push_back/index.md) append an unescaped token at the end of the pointer
|
||||
- [parent_pointer](https://json.nlohmann.me/api/json_pointer/parent_pointer/index.md) returns the parent of this JSON pointer
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.6.0.
|
||||
|
||||
@@ -34,6 +34,12 @@ Constant.
|
||||
--8<-- "examples/json_pointer__empty.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [front](front.md) return first reference token
|
||||
- [back](back.md) return last reference token
|
||||
- [to_string](to_string.md) return a string representation of the JSON pointer
|
||||
|
||||
## Version history
|
||||
|
||||
Added in version 3.6.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -56,6 +56,12 @@ Output:
|
||||
"/foo/0": false
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [front](https://json.nlohmann.me/api/json_pointer/front/index.md) return first reference token
|
||||
- [back](https://json.nlohmann.me/api/json_pointer/back/index.md) return last reference token
|
||||
- [to_string](https://json.nlohmann.me/api/json_pointer/to_string/index.md) return a string representation of the JSON pointer
|
||||
|
||||
## Version history
|
||||
|
||||
Added in version 3.6.0.
|
||||
|
||||
@@ -10,6 +10,10 @@ Return the first reference token.
|
||||
|
||||
First reference token.
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Exceptions
|
||||
|
||||
Throws [out_of_range.405](../../home/exceptions.md#jsonexceptionout_of_range405) if the JSON pointer has no parent.
|
||||
@@ -34,6 +38,12 @@ Constant.
|
||||
--8<-- "examples/json_pointer__front.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [back](back.md) return last reference token
|
||||
- [pop_front](pop_front.md) remove the first reference token
|
||||
- [push_front](push_front.md) append an unescaped token at the start of the pointer
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.13.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -10,6 +10,10 @@ Return the first reference token.
|
||||
|
||||
First reference token.
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Exceptions
|
||||
|
||||
Throws [out_of_range.405](https://json.nlohmann.me/home/exceptions/#jsonexceptionout_of_range405) if the JSON pointer has no parent.
|
||||
@@ -49,6 +53,12 @@ first reference token of "/foo" is "foo"
|
||||
first reference token of "/foo/0" is "foo"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [back](https://json.nlohmann.me/api/json_pointer/back/index.md) return last reference token
|
||||
- [pop_front](https://json.nlohmann.me/api/json_pointer/pop_front/index.md) remove the first reference token
|
||||
- [push_front](https://json.nlohmann.me/api/json_pointer/push_front/index.md) append an unescaped token at the start of the pointer
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.13.0.
|
||||
- Added in version 3.13.0 unreleased.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -15,6 +15,21 @@ Deprecation
|
||||
|
||||
For backwards compatibility `RefStringType` may also be a specialization of [`basic_json`](https://json.nlohmann.me/api/basic_json/index.md) in which case `string_t` will be deduced as [`basic_json::string_t`](https://json.nlohmann.me/api/basic_json/string_t/index.md). This feature is deprecated and may be removed in a future major version.
|
||||
|
||||
See the [migration guide](https://json.nlohmann.me/integration/migration_guide/#json-pointers) for how to update existing code.
|
||||
|
||||
A JSON pointer is internally a sequence of reference tokens. [`front`](https://json.nlohmann.me/api/json_pointer/front/index.md), [`pop_front`](https://json.nlohmann.me/api/json_pointer/pop_front/index.md), and [`push_front`](https://json.nlohmann.me/api/json_pointer/push_front/index.md) act on the first reference token, whereas [`back`](https://json.nlohmann.me/api/json_pointer/back/index.md), [`pop_back`](https://json.nlohmann.me/api/json_pointer/pop_back/index.md), and [`push_back`](https://json.nlohmann.me/api/json_pointer/push_back/index.md) act on the last one. [`parent_pointer`](https://json.nlohmann.me/api/json_pointer/parent_pointer/index.md) returns a new JSON pointer with the last reference token removed (like a non-mutating [`pop_back`](https://json.nlohmann.me/api/json_pointer/pop_back/index.md)):
|
||||
|
||||
```
|
||||
flowchart LR
|
||||
A["a"] --> B["b"] --> C["c"]
|
||||
|
||||
front["front() / pop_front() / push_front()"] -.-> A
|
||||
back["back() / pop_back() / push_back()"] -.-> C
|
||||
parent["parent_pointer() returns /a/b"] -.-> B
|
||||
```
|
||||
|
||||
The diagram shows the reference tokens of the JSON pointer `/a/b/c`.
|
||||
|
||||
## Member types
|
||||
|
||||
- [**string_t**](https://json.nlohmann.me/api/json_pointer/string_t/index.md) - the string type used for the reference tokens
|
||||
@@ -23,9 +38,10 @@ For backwards compatibility `RefStringType` may also be a specialization of [`ba
|
||||
|
||||
- [(constructor)](https://json.nlohmann.me/api/json_pointer/json_pointer/index.md)
|
||||
- [**to_string**](https://json.nlohmann.me/api/json_pointer/to_string/index.md) - return a string representation of the JSON pointer
|
||||
- [**operator string_t**](https://json.nlohmann.me/api/json_pointer/operator_string_t/index.md) - return a string representation of the JSON pointer
|
||||
- [**operator string_t**](https://json.nlohmann.me/api/json_pointer/operator_string_t/index.md) - return a string representation of the JSON pointer (deprecated)
|
||||
- [**operator==**](https://json.nlohmann.me/api/json_pointer/operator_eq/index.md) - compare: equal
|
||||
- [**operator!=**](https://json.nlohmann.me/api/json_pointer/operator_ne/index.md) - compare: not equal
|
||||
- [**operator\<=>**](https://json.nlohmann.me/api/json_pointer/operator_spaceship/index.md) - compare: 3-way (C++20)
|
||||
- [**operator/=**](https://json.nlohmann.me/api/json_pointer/operator_slasheq/index.md) - append to the end of the JSON pointer
|
||||
- [**operator/**](https://json.nlohmann.me/api/json_pointer/operator_slash/index.md) - create JSON Pointer by appending
|
||||
- [**parent_pointer**](https://json.nlohmann.me/api/json_pointer/parent_pointer/index.md) - returns the parent of this JSON pointer
|
||||
|
||||
@@ -12,6 +12,10 @@ Create a JSON pointer according to the syntax described in
|
||||
`s` (in)
|
||||
: string representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong guarantee: if an exception is thrown, there are no changes to any JSON pointer.
|
||||
|
||||
## Exceptions
|
||||
|
||||
- Throws [parse_error.107](../../home/exceptions.md#jsonexceptionparse_error107) if the given JSON pointer `s` is
|
||||
@@ -19,6 +23,10 @@ Create a JSON pointer according to the syntax described in
|
||||
- Throws [parse_error.108](../../home/exceptions.md#jsonexceptionparse_error108) if a tilde (`~`) in the given JSON
|
||||
pointer `s` is not followed by `0` (representing `~`) or `1` (representing `/`); see example below.
|
||||
|
||||
## Complexity
|
||||
|
||||
Linear in the length of `s`.
|
||||
|
||||
## Examples
|
||||
|
||||
??? example
|
||||
@@ -35,6 +43,11 @@ Create a JSON pointer according to the syntax described in
|
||||
--8<-- "examples/json_pointer.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [JSON Pointer](../../features/json_pointer.md) - the article on JSON Pointer support
|
||||
- [operator""_json_pointer](../operator_literal_json_pointer.md) user-defined string literal for JSON pointers
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 2.0.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -10,11 +10,19 @@ Create a JSON pointer according to the syntax described in [Section 3 of RFC6901
|
||||
|
||||
`s` (in) : string representing the JSON pointer; if omitted, the empty string is assumed which references the whole JSON value
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong guarantee: if an exception is thrown, there are no changes to any JSON pointer.
|
||||
|
||||
## Exceptions
|
||||
|
||||
- Throws [parse_error.107](https://json.nlohmann.me/home/exceptions/#jsonexceptionparse_error107) if the given JSON pointer `s` is nonempty and does not begin with a slash (`/`); see example below.
|
||||
- Throws [parse_error.108](https://json.nlohmann.me/home/exceptions/#jsonexceptionparse_error108) if a tilde (`~`) in the given JSON pointer `s` is not followed by `0` (representing `~`) or `1` (representing `/`); see example below.
|
||||
|
||||
## Complexity
|
||||
|
||||
Linear in the length of `s`.
|
||||
|
||||
## Examples
|
||||
|
||||
Example
|
||||
@@ -79,6 +87,11 @@ Output:
|
||||
[json.exception.parse_error.108] parse error: escape character '~' must be followed with '0' or '1'
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [JSON Pointer](https://json.nlohmann.me/features/json_pointer/index.md) - the article on JSON Pointer support
|
||||
- [operator""\_json_pointer](https://json.nlohmann.me/api/operator_literal_json_pointer/index.md) user-defined string literal for JSON pointers
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 2.0.0.
|
||||
|
||||
@@ -77,6 +77,8 @@ tokens.
|
||||
|
||||
Overload 2 is deprecated and will be removed in a future major version release.
|
||||
|
||||
See the [migration guide](../../integration/migration_guide.md#json-pointers) for how to update existing code.
|
||||
|
||||
## Examples
|
||||
|
||||
??? example "Example: (1) Comparing JSON pointers"
|
||||
@@ -107,6 +109,11 @@ tokens.
|
||||
--8<-- "examples/json_pointer__operator__equal_stringtype.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator!=](operator_ne.md) compare for inequality
|
||||
- [operator<=>](operator_spaceship.md) comparison: 3-way (C++20)
|
||||
|
||||
## Version history
|
||||
|
||||
1. Added in version 2.1.0. Added C++20 member functions in version 3.11.2.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -68,6 +68,8 @@ Deprecation
|
||||
|
||||
Overload 2 is deprecated and will be removed in a future major version release.
|
||||
|
||||
See the [migration guide](https://json.nlohmann.me/integration/migration_guide/#json-pointers) for how to update existing code.
|
||||
|
||||
## Examples
|
||||
|
||||
Example: (1) Comparing JSON pointers
|
||||
@@ -154,6 +156,11 @@ Output:
|
||||
"bar" == "/foo": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar'
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator!=](https://json.nlohmann.me/api/json_pointer/operator_ne/index.md) compare for inequality
|
||||
- [operator\<=>](https://json.nlohmann.me/api/json_pointer/operator_spaceship/index.md) comparison: 3-way (C++20)
|
||||
|
||||
## Version history
|
||||
|
||||
1. Added in version 2.1.0. Added C++20 member functions in version 3.11.2.
|
||||
|
||||
@@ -73,6 +73,8 @@ tokens.
|
||||
|
||||
Overload 2 is deprecated and will be removed in a future major version release.
|
||||
|
||||
See the [migration guide](../../integration/migration_guide.md#json-pointers) for how to update existing code.
|
||||
|
||||
## Examples
|
||||
|
||||
??? example "Example: (1) Comparing JSON pointers"
|
||||
@@ -103,6 +105,11 @@ tokens.
|
||||
--8<-- "examples/json_pointer__operator__notequal_stringtype.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator==](operator_eq.md) compare for equality
|
||||
- [operator<=>](operator_spaceship.md) comparison: 3-way (C++20)
|
||||
|
||||
## Version history
|
||||
|
||||
1. Added in version 2.1.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -63,6 +63,8 @@ Deprecation
|
||||
|
||||
Overload 2 is deprecated and will be removed in a future major version release.
|
||||
|
||||
See the [migration guide](https://json.nlohmann.me/integration/migration_guide/#json-pointers) for how to update existing code.
|
||||
|
||||
## Examples
|
||||
|
||||
Example: (1) Comparing JSON pointers
|
||||
@@ -148,6 +150,11 @@ Output:
|
||||
"bar" != "/foo": [json.exception.parse_error.107] parse error at byte 1: JSON pointer must be empty or begin with '/' - was: 'bar'
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator==](https://json.nlohmann.me/api/json_pointer/operator_eq/index.md) compare for equality
|
||||
- [operator\<=>](https://json.nlohmann.me/api/json_pointer/operator_spaceship/index.md) comparison: 3-way (C++20)
|
||||
|
||||
## Version history
|
||||
|
||||
1. Added in version 2.1.0.
|
||||
|
||||
@@ -35,6 +35,11 @@ json_pointer operator/(const json_pointer& lhs, std::size_t array_idx);
|
||||
2. a new JSON pointer with unescaped `token` appended to `lhs`
|
||||
3. a new JSON pointer with `array_idx` appended to `lhs`
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong guarantee: if an exception is thrown, there are no changes to any JSON pointer. The operands are not modified;
|
||||
a new JSON pointer is built from a copy of `lhs`.
|
||||
|
||||
## Complexity
|
||||
|
||||
1. Linear in the length of `lhs` and `rhs`.
|
||||
@@ -57,6 +62,11 @@ json_pointer operator/(const json_pointer& lhs, std::size_t array_idx);
|
||||
--8<-- "examples/json_pointer__operator_add_binary.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator/=](operator_slasheq.md) append to the end of the JSON pointer
|
||||
- [push_back](push_back.md) append an unescaped token at the end of the pointer
|
||||
|
||||
## Version history
|
||||
|
||||
1. Added in version 3.6.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -31,6 +31,10 @@ json_pointer operator/(const json_pointer& lhs, std::size_t array_idx);
|
||||
1. a new JSON pointer with unescaped `token` appended to `lhs`
|
||||
1. a new JSON pointer with `array_idx` appended to `lhs`
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong guarantee: if an exception is thrown, there are no changes to any JSON pointer. The operands are not modified; a new JSON pointer is built from a copy of `lhs`.
|
||||
|
||||
## Complexity
|
||||
|
||||
1. Linear in the length of `lhs` and `rhs`.
|
||||
@@ -73,6 +77,11 @@ Output:
|
||||
"/foo/42"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator/=](https://json.nlohmann.me/api/json_pointer/operator_slasheq/index.md) append to the end of the JSON pointer
|
||||
- [push_back](https://json.nlohmann.me/api/json_pointer/push_back/index.md) append an unescaped token at the end of the pointer
|
||||
|
||||
## Version history
|
||||
|
||||
1. Added in version 3.6.0.
|
||||
|
||||
@@ -32,6 +32,13 @@ json_pointer& operator/=(std::size_t array_idx)
|
||||
2. JSON pointer with `token` appended without escaping `token`
|
||||
3. JSON pointer with `array_idx` appended
|
||||
|
||||
## Exception safety
|
||||
|
||||
1. Basic guarantee: if an exception is thrown (for instance, if copying a reference token fails), the JSON pointer is
|
||||
left in a valid state, but it may contain some of the reference tokens of `ptr`.
|
||||
2. Strong guarantee: if an exception is thrown, there are no changes to the JSON pointer.
|
||||
3. Strong guarantee: if an exception is thrown, there are no changes to the JSON pointer.
|
||||
|
||||
## Complexity
|
||||
|
||||
1. Linear in the length of `ptr`.
|
||||
@@ -54,6 +61,11 @@ json_pointer& operator/=(std::size_t array_idx)
|
||||
--8<-- "examples/json_pointer__operator_add.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator/](operator_slash.md) create JSON Pointer by appending
|
||||
- [push_back](push_back.md) append an unescaped token at the end of the pointer
|
||||
|
||||
## Version history
|
||||
|
||||
1. Added in version 3.6.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -29,6 +29,12 @@ json_pointer& operator/=(std::size_t array_idx)
|
||||
1. JSON pointer with `token` appended without escaping `token`
|
||||
1. JSON pointer with `array_idx` appended
|
||||
|
||||
## Exception safety
|
||||
|
||||
1. Basic guarantee: if an exception is thrown (for instance, if copying a reference token fails), the JSON pointer is left in a valid state, but it may contain some of the reference tokens of `ptr`.
|
||||
1. Strong guarantee: if an exception is thrown, there are no changes to the JSON pointer.
|
||||
1. Strong guarantee: if an exception is thrown, there are no changes to the JSON pointer.
|
||||
|
||||
## Complexity
|
||||
|
||||
1. Linear in the length of `ptr`.
|
||||
@@ -76,6 +82,11 @@ Output:
|
||||
"/foo/bar/baz/fob/42"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator/](https://json.nlohmann.me/api/json_pointer/operator_slash/index.md) create JSON Pointer by appending
|
||||
- [push_back](https://json.nlohmann.me/api/json_pointer/push_back/index.md) append an unescaped token at the end of the pointer
|
||||
|
||||
## Version history
|
||||
|
||||
1. Added in version 3.6.0.
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
# <small>nlohmann::json_pointer::</small>operator<=>
|
||||
|
||||
```cpp
|
||||
// since C++20
|
||||
class json_pointer {
|
||||
template<typename RefStringTypeRhs>
|
||||
std::strong_ordering operator<=>(const json_pointer<RefStringTypeRhs>& rhs) const noexcept; // *NOPAD*
|
||||
};
|
||||
```
|
||||
|
||||
3-way compares two JSON pointers by lexicographically comparing their sequences of reference tokens: corresponding
|
||||
reference tokens are compared with `string_t`'s own `operator<=>`, and the first pair of tokens that differs
|
||||
determines the result. If all corresponding reference tokens compare equal, the JSON pointer with fewer reference
|
||||
tokens is ordered first.
|
||||
|
||||
## Template parameters
|
||||
|
||||
`RefStringTypeRhs`
|
||||
: the string type of the right-hand side JSON pointer
|
||||
|
||||
## Parameters
|
||||
|
||||
`rhs` (in)
|
||||
: JSON pointer to compare `*this` with
|
||||
|
||||
## Return value
|
||||
|
||||
the `std::strong_ordering` of the 3-way comparison of `*this` and `rhs`
|
||||
|
||||
## Exception safety
|
||||
|
||||
No-throw guarantee: this function never throws exceptions.
|
||||
|
||||
## Complexity
|
||||
|
||||
Linear in the number of reference tokens.
|
||||
|
||||
## Notes
|
||||
|
||||
!!! note "Ordering enables use as an associative container key"
|
||||
|
||||
Together with [`operator==`](operator_eq.md), `operator<=>` makes `json_pointer` a `LessThanComparable` type, so
|
||||
it can be used as the key type of ordered associative containers such as `std::map` or `std::set`.
|
||||
|
||||
!!! note "Before C++20"
|
||||
|
||||
Without C++20's three-way comparison, `json_pointer` provides a non-member `operator<` instead, which orders JSON
|
||||
pointers the same way. JSON pointers can therefore be used as keys of ordered associative containers with any
|
||||
supported C++ standard.
|
||||
|
||||
## Examples
|
||||
|
||||
??? example
|
||||
|
||||
The example demonstrates 3-way comparing JSON pointers.
|
||||
|
||||
```cpp
|
||||
--8<-- "examples/json_pointer__operator_spaceship.c++20.cpp"
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```
|
||||
--8<-- "examples/json_pointer__operator_spaceship.c++20.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator==](operator_eq.md) compare: equal
|
||||
- [operator!=](operator_ne.md) compare: not equal
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.11.2.
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,99 @@
|
||||
# nlohmann::json_pointer::operator\<=>
|
||||
|
||||
```
|
||||
// since C++20
|
||||
class json_pointer {
|
||||
template<typename RefStringTypeRhs>
|
||||
std::strong_ordering operator<=>(const json_pointer<RefStringTypeRhs>& rhs) const noexcept; // *NOPAD*
|
||||
};
|
||||
```
|
||||
|
||||
3-way compares two JSON pointers by lexicographically comparing their sequences of reference tokens: corresponding reference tokens are compared with `string_t`'s own `operator<=>`, and the first pair of tokens that differs determines the result. If all corresponding reference tokens compare equal, the JSON pointer with fewer reference tokens is ordered first.
|
||||
|
||||
## Template parameters
|
||||
|
||||
`RefStringTypeRhs` : the string type of the right-hand side JSON pointer
|
||||
|
||||
## Parameters
|
||||
|
||||
`rhs` (in) : JSON pointer to compare `*this` with
|
||||
|
||||
## Return value
|
||||
|
||||
the `std::strong_ordering` of the 3-way comparison of `*this` and `rhs`
|
||||
|
||||
## Exception safety
|
||||
|
||||
No-throw guarantee: this function never throws exceptions.
|
||||
|
||||
## Complexity
|
||||
|
||||
Linear in the number of reference tokens.
|
||||
|
||||
## Notes
|
||||
|
||||
Ordering enables use as an associative container key
|
||||
|
||||
Together with [`operator==`](https://json.nlohmann.me/api/json_pointer/operator_eq/index.md), `operator<=>` makes `json_pointer` a `LessThanComparable` type, so it can be used as the key type of ordered associative containers such as `std::map` or `std::set`.
|
||||
|
||||
Before C++20
|
||||
|
||||
Without C++20's three-way comparison, `json_pointer` provides a non-member `operator<` instead, which orders JSON pointers the same way. JSON pointers can therefore be used as keys of ordered associative containers with any supported C++ standard.
|
||||
|
||||
## Examples
|
||||
|
||||
Example
|
||||
|
||||
The example demonstrates 3-way comparing JSON pointers.
|
||||
|
||||
```
|
||||
#include <compare>
|
||||
#include <iostream>
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
using json = nlohmann::json;
|
||||
|
||||
const char* to_string(const std::strong_ordering& so)
|
||||
{
|
||||
if (std::is_lt(so))
|
||||
{
|
||||
return "less";
|
||||
}
|
||||
else if (std::is_gt(so))
|
||||
{
|
||||
return "greater";
|
||||
}
|
||||
return "equal";
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
// different JSON pointers
|
||||
json::json_pointer ptr1("/a/b");
|
||||
json::json_pointer ptr2("/a/c");
|
||||
json::json_pointer ptr3("/a/b/c");
|
||||
json::json_pointer ptr4("/a/b");
|
||||
|
||||
// 3-way compare JSON pointers
|
||||
std::cout << "\"" << ptr1 << "\" <=> \"" << ptr2 << "\": " << to_string(ptr1 <=> ptr2) << '\n' // *NOPAD*
|
||||
<< "\"" << ptr1 << "\" <=> \"" << ptr3 << "\": " << to_string(ptr1 <=> ptr3) << '\n' // *NOPAD*
|
||||
<< "\"" << ptr1 << "\" <=> \"" << ptr4 << "\": " << to_string(ptr1 <=> ptr4) << std::endl; // *NOPAD*
|
||||
}
|
||||
```
|
||||
|
||||
Output:
|
||||
|
||||
```
|
||||
"/a/b" <=> "/a/c": less
|
||||
"/a/b" <=> "/a/b/c": less
|
||||
"/a/b" <=> "/a/b": equal
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator==](https://json.nlohmann.me/api/json_pointer/operator_eq/index.md) compare: equal
|
||||
- [operator!=](https://json.nlohmann.me/api/json_pointer/operator_ne/index.md) compare: not equal
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.11.2.
|
||||
@@ -26,6 +26,8 @@ operator string_t() const
|
||||
This function is deprecated in favor of [`to_string`](to_string.md) and will be removed in a future major version
|
||||
release.
|
||||
|
||||
See the [migration guide](../../integration/migration_guide.md#json-pointers) for how to update existing code.
|
||||
|
||||
## Examples
|
||||
|
||||
??? example
|
||||
@@ -44,7 +46,8 @@ operator string_t() const
|
||||
|
||||
## See also
|
||||
|
||||
- [string_t](../basic_json/string_t.md)- type for strings
|
||||
- [to_string](to_string.md) return a string representation of the JSON pointer
|
||||
- [string_t](../basic_json/string_t.md) - type for strings
|
||||
|
||||
## Version history
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -25,6 +25,8 @@ Deprecation
|
||||
|
||||
This function is deprecated in favor of [`to_string`](https://json.nlohmann.me/api/json_pointer/to_string/index.md) and will be removed in a future major version release.
|
||||
|
||||
See the [migration guide](https://json.nlohmann.me/integration/migration_guide/#json-pointers) for how to update existing code.
|
||||
|
||||
## Examples
|
||||
|
||||
Example
|
||||
@@ -62,7 +64,8 @@ Output:
|
||||
|
||||
## See also
|
||||
|
||||
- [string_t](https://json.nlohmann.me/api/basic_json/string_t/index.md)- type for strings
|
||||
- [to_string](https://json.nlohmann.me/api/json_pointer/to_string/index.md) return a string representation of the JSON pointer
|
||||
- [string_t](https://json.nlohmann.me/api/basic_json/string_t/index.md) - type for strings
|
||||
|
||||
## Version history
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -6,6 +6,10 @@ void pop_back();
|
||||
|
||||
Remove the last reference token.
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Exceptions
|
||||
|
||||
Throws [out_of_range.405](../../home/exceptions.md#jsonexceptionout_of_range405) if the JSON pointer has no parent.
|
||||
@@ -30,6 +34,12 @@ Constant.
|
||||
--8<-- "examples/json_pointer__pop_back.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [back](back.md) return last reference token
|
||||
- [push_back](push_back.md) append an unescaped token at the end of the pointer
|
||||
- [parent_pointer](parent_pointer.md) returns the parent of this JSON pointer
|
||||
|
||||
## Version history
|
||||
|
||||
Added in version 3.6.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -6,6 +6,10 @@ void pop_back();
|
||||
|
||||
Remove the last reference token.
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Exceptions
|
||||
|
||||
Throws [out_of_range.405](https://json.nlohmann.me/home/exceptions/#jsonexceptionout_of_range405) if the JSON pointer has no parent.
|
||||
@@ -53,6 +57,12 @@ Output:
|
||||
""
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [back](https://json.nlohmann.me/api/json_pointer/back/index.md) return last reference token
|
||||
- [push_back](https://json.nlohmann.me/api/json_pointer/push_back/index.md) append an unescaped token at the end of the pointer
|
||||
- [parent_pointer](https://json.nlohmann.me/api/json_pointer/parent_pointer/index.md) returns the parent of this JSON pointer
|
||||
|
||||
## Version history
|
||||
|
||||
Added in version 3.6.0.
|
||||
|
||||
@@ -6,6 +6,10 @@ void pop_front();
|
||||
|
||||
Remove the first reference token.
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Exceptions
|
||||
|
||||
Throws [out_of_range.405](../../home/exceptions.md#jsonexceptionout_of_range405) if the JSON pointer has no parent.
|
||||
@@ -30,6 +34,11 @@ Linear in the number of reference tokens in the `json_pointer`.
|
||||
--8<-- "examples/json_pointer__pop_front.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [front](front.md) return first reference token
|
||||
- [push_front](push_front.md) append an unescaped token at the start of the pointer
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.13.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -6,6 +6,10 @@ void pop_front();
|
||||
|
||||
Remove the first reference token.
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Exceptions
|
||||
|
||||
Throws [out_of_range.405](https://json.nlohmann.me/home/exceptions/#jsonexceptionout_of_range405) if the JSON pointer has no parent.
|
||||
@@ -53,6 +57,11 @@ Output:
|
||||
""
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [front](https://json.nlohmann.me/api/json_pointer/front/index.md) return first reference token
|
||||
- [push_front](https://json.nlohmann.me/api/json_pointer/push_front/index.md) append an unescaped token at the start of the pointer
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.13.0.
|
||||
- Added in version 3.13.0 unreleased.
|
||||
|
||||
@@ -13,6 +13,10 @@ Append an unescaped token at the end of the reference pointer.
|
||||
`token` (in)
|
||||
: token to add
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Complexity
|
||||
|
||||
Amortized constant.
|
||||
@@ -33,6 +37,13 @@ Amortized constant.
|
||||
--8<-- "examples/json_pointer__push_back.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [back](back.md) return last reference token
|
||||
- [pop_back](pop_back.md) remove the last reference token
|
||||
- [operator/=](operator_slasheq.md) append to the end of the JSON pointer
|
||||
- [operator/](operator_slash.md) create JSON Pointer by appending
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.6.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -12,6 +12,10 @@ Append an unescaped token at the end of the reference pointer.
|
||||
|
||||
`token` (in) : token to add
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Complexity
|
||||
|
||||
Amortized constant.
|
||||
@@ -55,6 +59,13 @@ Output:
|
||||
"/foo/0/bar"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [back](https://json.nlohmann.me/api/json_pointer/back/index.md) return last reference token
|
||||
- [pop_back](https://json.nlohmann.me/api/json_pointer/pop_back/index.md) remove the last reference token
|
||||
- [operator/=](https://json.nlohmann.me/api/json_pointer/operator_slasheq/index.md) append to the end of the JSON pointer
|
||||
- [operator/](https://json.nlohmann.me/api/json_pointer/operator_slash/index.md) create JSON Pointer by appending
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.6.0.
|
||||
|
||||
@@ -13,6 +13,11 @@ Append an unescaped token at the start of the reference pointer.
|
||||
`token` (in)
|
||||
: token to add
|
||||
|
||||
## Exception safety
|
||||
|
||||
Basic guarantee: if an exception is thrown (for instance, if copying the reference token fails), the JSON pointer is
|
||||
left in a valid state, but its reference tokens may have changed.
|
||||
|
||||
## Complexity
|
||||
|
||||
Linear in the number of reference tokens in the `json_pointer`.
|
||||
@@ -33,6 +38,11 @@ Linear in the number of reference tokens in the `json_pointer`.
|
||||
--8<-- "examples/json_pointer__push_front.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [front](front.md) return first reference token
|
||||
- [pop_front](pop_front.md) remove the first reference token
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.13.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -12,6 +12,10 @@ Append an unescaped token at the start of the reference pointer.
|
||||
|
||||
`token` (in) : token to add
|
||||
|
||||
## Exception safety
|
||||
|
||||
Basic guarantee: if an exception is thrown (for instance, if copying the reference token fails), the JSON pointer is left in a valid state, but its reference tokens may have changed.
|
||||
|
||||
## Complexity
|
||||
|
||||
Linear in the number of reference tokens in the `json_pointer`.
|
||||
@@ -55,6 +59,11 @@ Output:
|
||||
"/bar/0/foo"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [front](https://json.nlohmann.me/api/json_pointer/front/index.md) return first reference token
|
||||
- [pop_front](https://json.nlohmann.me/api/json_pointer/pop_front/index.md) remove the first reference token
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.13.0.
|
||||
- Added in version 3.13.0 unreleased.
|
||||
|
||||
@@ -23,6 +23,11 @@ See [`basic_json::string_t`](../basic_json/string_t.md) for more information.
|
||||
--8<-- "examples/json_pointer__string_t.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [basic_json::string_t](../basic_json/string_t.md) type used to store JSON strings
|
||||
- [to_string](to_string.md) return a string representation of the JSON pointer
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.11.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -37,6 +37,11 @@ This is a string.
|
||||
true
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [basic_json::string_t](https://json.nlohmann.me/api/basic_json/string_t/index.md) type used to store JSON strings
|
||||
- [to_string](https://json.nlohmann.me/api/json_pointer/to_string/index.md) return a string representation of the JSON pointer
|
||||
|
||||
## Version history
|
||||
|
||||
- Added in version 3.11.0.
|
||||
|
||||
@@ -10,6 +10,14 @@ Return a string representation of the JSON pointer.
|
||||
|
||||
A string representation of the JSON pointer
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Complexity
|
||||
|
||||
Linear in the total length of the reference tokens.
|
||||
|
||||
## Notes
|
||||
|
||||
For each JSON pointer `ptr`, it holds:
|
||||
@@ -34,6 +42,11 @@ ptr == json_pointer(ptr.to_string());
|
||||
--8<-- "examples/json_pointer__to_string.output"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator string_t](operator_string_t.md) return a string representation of the JSON pointer (deprecated)
|
||||
- [operator<<](../operator_ltlt.md) write a JSON pointer to a stream
|
||||
|
||||
## Version history
|
||||
|
||||
- Since version 2.0.0.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -10,6 +10,14 @@ Return a string representation of the JSON pointer.
|
||||
|
||||
A string representation of the JSON pointer
|
||||
|
||||
## Exception safety
|
||||
|
||||
Strong exception safety: if an exception occurs, the original value stays intact.
|
||||
|
||||
## Complexity
|
||||
|
||||
Linear in the total length of the reference tokens.
|
||||
|
||||
## Notes
|
||||
|
||||
For each JSON pointer `ptr`, it holds:
|
||||
@@ -78,6 +86,11 @@ Output:
|
||||
"/m~0n"
|
||||
```
|
||||
|
||||
## See also
|
||||
|
||||
- [operator string_t](https://json.nlohmann.me/api/json_pointer/operator_string_t/index.md) return a string representation of the JSON pointer (deprecated)
|
||||
- [operator\<<](https://json.nlohmann.me/api/operator_ltlt/index.md) write a JSON pointer to a stream
|
||||
|
||||
## Version history
|
||||
|
||||
- Since version 2.0.0.
|
||||
|
||||
Reference in New Issue
Block a user