indentation cleanup
This commit is contained in:
parent
0e0ecb2c14
commit
0a393b8374
10 changed files with 464 additions and 452 deletions
|
@ -1 +1 @@
|
|||
<a target="_blank" href="http://melpon.org/wandbox/permlink/dGjf71qpuaptNhpP"><b>online</b></a>
|
||||
<a target="_blank" href="http://melpon.org/wandbox/permlink/NDSjglHZIjIZ0Uxg"><b>online</b></a>
|
|
@ -1 +1 @@
|
|||
<a target="_blank" href="http://melpon.org/wandbox/permlink/O1Jx8KXGu0EqkwFg"><b>online</b></a>
|
||||
<a target="_blank" href="http://melpon.org/wandbox/permlink/OuLYiMJ3pgyOHupb"><b>online</b></a>
|
|
@ -1 +1 @@
|
|||
<a target="_blank" href="http://melpon.org/wandbox/permlink/lUltfC5TlmxeUq5X"><b>online</b></a>
|
||||
<a target="_blank" href="http://melpon.org/wandbox/permlink/VzSqLszbnoWE92dD"><b>online</b></a>
|
|
@ -1 +1 @@
|
|||
<a target="_blank" href="http://melpon.org/wandbox/permlink/OZG9sHcJCXsScNiy"><b>online</b></a>
|
||||
<a target="_blank" href="http://melpon.org/wandbox/permlink/cdQa6jE0N2LyqFJe"><b>online</b></a>
|
|
@ -1 +1 @@
|
|||
<a target="_blank" href="http://melpon.org/wandbox/permlink/9OR6xQ1rRZDA0W94"><b>online</b></a>
|
||||
<a target="_blank" href="http://melpon.org/wandbox/permlink/WM2WWKnXdmdw17Wu"><b>online</b></a>
|
|
@ -1 +1 @@
|
|||
<a target="_blank" href="http://melpon.org/wandbox/permlink/6oeNnra3wjPijLSr"><b>online</b></a>
|
||||
<a target="_blank" href="http://melpon.org/wandbox/permlink/xzFX3E4gYBXFwd04"><b>online</b></a>
|
|
@ -1 +1 @@
|
|||
<a target="_blank" href="http://melpon.org/wandbox/permlink/YmjwNAhsoeMXw5Ve"><b>online</b></a>
|
||||
<a target="_blank" href="http://melpon.org/wandbox/permlink/IKpbJkMdcocVdlRd"><b>online</b></a>
|
|
@ -1 +1 @@
|
|||
<a target="_blank" href="http://melpon.org/wandbox/permlink/m2UmItixDxnYs1Se"><b>online</b></a>
|
||||
<a target="_blank" href="http://melpon.org/wandbox/permlink/PFBoQVT7RG0e0Wua"><b>online</b></a>
|
450
src/json.hpp
450
src/json.hpp
|
@ -271,8 +271,8 @@ class basic_json
|
|||
|
||||
@tparam ObjectType the container to store objects (e.g., `std::map` or
|
||||
`std::unordered_map`)
|
||||
@tparam StringType the type of the keys or names (e.g., `std::string`). The
|
||||
comparison function `std::less<StringType>` is used to order elements
|
||||
@tparam StringType the type of the keys or names (e.g., `std::string`).
|
||||
The comparison function `std::less<StringType>` is used to order elements
|
||||
inside the container.
|
||||
@tparam AllocatorType the allocator to use for objects (e.g.,
|
||||
`std::allocator`)
|
||||
|
@ -280,8 +280,8 @@ class basic_json
|
|||
#### Default type
|
||||
|
||||
With the default values for @a ObjectType (`std::map`), @a StringType
|
||||
(`std::string`), and @a AllocatorType (`std::allocator`), the default value
|
||||
for @a object_t is:
|
||||
(`std::string`), and @a AllocatorType (`std::allocator`), the default
|
||||
value for @a object_t is:
|
||||
|
||||
@code {.cpp}
|
||||
std::map<
|
||||
|
@ -298,16 +298,16 @@ class basic_json
|
|||
the default type, objects have the following behavior:
|
||||
|
||||
- When all names are unique, objects will be interoperable in the sense
|
||||
that all software implementations receiving that object will agree on the
|
||||
name-value mappings.
|
||||
that all software implementations receiving that object will agree on
|
||||
the name-value mappings.
|
||||
- When the names within an object are not unique, later stored name/value
|
||||
pairs overwrite previously stored name/value pairs, leaving the used
|
||||
names unique. For instance, `{"key": 1}` and `{"key": 2, "key": 1}` will
|
||||
be treated as equal and both stored as `{"key": 1}`.
|
||||
- Internally, name/value pairs are stored in lexicographical order of the
|
||||
names. Objects will also be serialized (see @ref dump) in this order. For
|
||||
instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored and
|
||||
serialized as `{"a": 2, "b": 1}`.
|
||||
names. Objects will also be serialized (see @ref dump) in this order.
|
||||
For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored
|
||||
and serialized as `{"a": 2, "b": 1}`.
|
||||
- When comparing objects, the order of the name/value pairs is irrelevant.
|
||||
This makes objects interoperable in the sense that they will not be
|
||||
affected by these differences. For instance, `{"b": 1, "a": 2}` and
|
||||
|
@ -320,23 +320,24 @@ class basic_json
|
|||
|
||||
In this class, the object's limit of nesting is not constraint explicitly.
|
||||
However, a maximum depth of nesting may be introduced by the compiler or
|
||||
runtime environment. A theoretical limit can be queried by calling the @ref
|
||||
max_size function of a JSON object.
|
||||
runtime environment. A theoretical limit can be queried by calling the
|
||||
@ref max_size function of a JSON object.
|
||||
|
||||
#### Storage
|
||||
|
||||
Objects are stored as pointers in a @ref basic_json type. That is, for any
|
||||
access to object values, a pointer of type `object_t*` must be dereferenced.
|
||||
access to object values, a pointer of type `object_t*` must be
|
||||
dereferenced.
|
||||
|
||||
@sa @ref array_t -- type for an array value
|
||||
|
||||
@since version 1.0.0
|
||||
|
||||
@note The order name/value pairs are added to the object is *not* preserved
|
||||
by the library. Therefore, iterating an object may return name/value pairs
|
||||
in a different order than they were originally stored. In fact, keys will
|
||||
be traversed in alphabetical order as `std::map` with `std::less` is used
|
||||
by default. Please note this behavior conforms to [RFC
|
||||
@note The order name/value pairs are added to the object is *not*
|
||||
preserved by the library. Therefore, iterating an object may return
|
||||
name/value pairs in a different order than they were originally stored. In
|
||||
fact, keys will be traversed in alphabetical order as `std::map` with
|
||||
`std::less` is used by default. Please note this behavior conforms to [RFC
|
||||
7159](http://rfc7159.net/rfc7159), because any order implements the
|
||||
specified "unordered" nature of JSON objects.
|
||||
*/
|
||||
|
@ -378,8 +379,8 @@ class basic_json
|
|||
|
||||
In this class, the array's limit of nesting is not constraint explicitly.
|
||||
However, a maximum depth of nesting may be introduced by the compiler or
|
||||
runtime environment. A theoretical limit can be queried by calling the @ref
|
||||
max_size function of a JSON array.
|
||||
runtime environment. A theoretical limit can be queried by calling the
|
||||
@ref max_size function of a JSON array.
|
||||
|
||||
#### Storage
|
||||
|
||||
|
@ -399,8 +400,8 @@ class basic_json
|
|||
> A string is a sequence of zero or more Unicode characters.
|
||||
|
||||
To store objects in C++, a type is defined by the template parameter
|
||||
described below. Unicode values are split by the JSON class into byte-sized
|
||||
characters during deserialization.
|
||||
described below. Unicode values are split by the JSON class into
|
||||
byte-sized characters during deserialization.
|
||||
|
||||
@tparam StringType the container to store strings (e.g., `std::string`).
|
||||
Note this container is used for keys/names in objects, see @ref object_t.
|
||||
|
@ -469,19 +470,19 @@ class basic_json
|
|||
@brief a type for a number (integer)
|
||||
|
||||
[RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
|
||||
> The representation of numbers is similar to that used in most programming
|
||||
> languages. A number is represented in base 10 using decimal digits. It
|
||||
> contains an integer component that may be prefixed with an optional minus
|
||||
> sign, which may be followed by a fraction part and/or an exponent part.
|
||||
> Leading zeros are not allowed. (...) Numeric values that cannot be
|
||||
> represented in the grammar below (such as Infinity and NaN) are not
|
||||
> permitted.
|
||||
> The representation of numbers is similar to that used in most
|
||||
> programming languages. A number is represented in base 10 using decimal
|
||||
> digits. It contains an integer component that may be prefixed with an
|
||||
> optional minus sign, which may be followed by a fraction part and/or an
|
||||
> exponent part. Leading zeros are not allowed. (...) Numeric values that
|
||||
> cannot be represented in the grammar below (such as Infinity and NaN)
|
||||
> are not permitted.
|
||||
|
||||
This description includes both integer and floating-point numbers. However,
|
||||
C++ allows more precise storage if it is known whether the number is a
|
||||
signed integer, an unsigned integer or a floating-point number. Therefore,
|
||||
three different types, @ref number_integer_t, @ref number_unsigned_t and
|
||||
@ref number_float_t are used.
|
||||
This description includes both integer and floating-point numbers.
|
||||
However, C++ allows more precise storage if it is known whether the number
|
||||
is a signed integer, an unsigned integer or a floating-point number.
|
||||
Therefore, three different types, @ref number_integer_t, @ref
|
||||
number_unsigned_t and @ref number_float_t are used.
|
||||
|
||||
To store integer numbers in C++, a type is defined by the template
|
||||
parameter @a NumberIntegerType which chooses the type to use.
|
||||
|
@ -500,8 +501,8 @@ class basic_json
|
|||
- The restrictions about leading zeros is not enforced in C++. Instead,
|
||||
leading zeros in integer literals lead to an interpretation as octal
|
||||
number. Internally, the value will be stored as decimal number. For
|
||||
instance, the C++ integer literal `010` will be serialized to `8`. During
|
||||
deserialization, leading zeros yield an error.
|
||||
instance, the C++ integer literal `010` will be serialized to `8`.
|
||||
During deserialization, leading zeros yield an error.
|
||||
- Not-a-number (NaN) values will be serialized to `null`.
|
||||
|
||||
#### Limits
|
||||
|
@ -512,9 +513,10 @@ class basic_json
|
|||
When the default type is used, the maximal integer number that can be
|
||||
stored is `9223372036854775807` (INT64_MAX) and the minimal integer number
|
||||
that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers
|
||||
that are out of range will yield over/underflow when used in a constructor.
|
||||
During deserialization, too large or small integer numbers will be
|
||||
automatically be stored as @ref number_unsigned_t or @ref number_float_t.
|
||||
that are out of range will yield over/underflow when used in a
|
||||
constructor. During deserialization, too large or small integer numbers
|
||||
will be automatically be stored as @ref number_unsigned_t or @ref
|
||||
number_float_t.
|
||||
|
||||
[RFC 7159](http://rfc7159.net/rfc7159) further states:
|
||||
> Note that when such software is used, numbers that are integers and are
|
||||
|
@ -540,27 +542,27 @@ class basic_json
|
|||
@brief a type for a number (unsigned)
|
||||
|
||||
[RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
|
||||
> The representation of numbers is similar to that used in most programming
|
||||
> languages. A number is represented in base 10 using decimal digits. It
|
||||
> contains an integer component that may be prefixed with an optional minus
|
||||
> sign, which may be followed by a fraction part and/or an exponent part.
|
||||
> Leading zeros are not allowed. (...) Numeric values that cannot be
|
||||
> represented in the grammar below (such as Infinity and NaN) are not
|
||||
> permitted.
|
||||
> The representation of numbers is similar to that used in most
|
||||
> programming languages. A number is represented in base 10 using decimal
|
||||
> digits. It contains an integer component that may be prefixed with an
|
||||
> optional minus sign, which may be followed by a fraction part and/or an
|
||||
> exponent part. Leading zeros are not allowed. (...) Numeric values that
|
||||
> cannot be represented in the grammar below (such as Infinity and NaN)
|
||||
> are not permitted.
|
||||
|
||||
This description includes both integer and floating-point numbers. However,
|
||||
C++ allows more precise storage if it is known whether the number is a
|
||||
signed integer, an unsigned integer or a floating-point number. Therefore,
|
||||
three different types, @ref number_integer_t, @ref number_unsigned_t and
|
||||
@ref number_float_t are used.
|
||||
This description includes both integer and floating-point numbers.
|
||||
However, C++ allows more precise storage if it is known whether the number
|
||||
is a signed integer, an unsigned integer or a floating-point number.
|
||||
Therefore, three different types, @ref number_integer_t, @ref
|
||||
number_unsigned_t and @ref number_float_t are used.
|
||||
|
||||
To store unsigned integer numbers in C++, a type is defined by the template
|
||||
parameter @a NumberUnsignedType which chooses the type to use.
|
||||
To store unsigned integer numbers in C++, a type is defined by the
|
||||
template parameter @a NumberUnsignedType which chooses the type to use.
|
||||
|
||||
#### Default type
|
||||
|
||||
With the default values for @a NumberUnsignedType (`uint64_t`), the default
|
||||
value for @a number_unsigned_t is:
|
||||
With the default values for @a NumberUnsignedType (`uint64_t`), the
|
||||
default value for @a number_unsigned_t is:
|
||||
|
||||
@code {.cpp}
|
||||
uint64_t
|
||||
|
@ -571,8 +573,8 @@ class basic_json
|
|||
- The restrictions about leading zeros is not enforced in C++. Instead,
|
||||
leading zeros in integer literals lead to an interpretation as octal
|
||||
number. Internally, the value will be stored as decimal number. For
|
||||
instance, the C++ integer literal `010` will be serialized to `8`. During
|
||||
deserialization, leading zeros yield an error.
|
||||
instance, the C++ integer literal `010` will be serialized to `8`.
|
||||
During deserialization, leading zeros yield an error.
|
||||
- Not-a-number (NaN) values will be serialized to `null`.
|
||||
|
||||
#### Limits
|
||||
|
@ -612,19 +614,19 @@ class basic_json
|
|||
@brief a type for a number (floating-point)
|
||||
|
||||
[RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
|
||||
> The representation of numbers is similar to that used in most programming
|
||||
> languages. A number is represented in base 10 using decimal digits. It
|
||||
> contains an integer component that may be prefixed with an optional minus
|
||||
> sign, which may be followed by a fraction part and/or an exponent part.
|
||||
> Leading zeros are not allowed. (...) Numeric values that cannot be
|
||||
> represented in the grammar below (such as Infinity and NaN) are not
|
||||
> permitted.
|
||||
> The representation of numbers is similar to that used in most
|
||||
> programming languages. A number is represented in base 10 using decimal
|
||||
> digits. It contains an integer component that may be prefixed with an
|
||||
> optional minus sign, which may be followed by a fraction part and/or an
|
||||
> exponent part. Leading zeros are not allowed. (...) Numeric values that
|
||||
> cannot be represented in the grammar below (such as Infinity and NaN)
|
||||
> are not permitted.
|
||||
|
||||
This description includes both integer and floating-point numbers. However,
|
||||
C++ allows more precise storage if it is known whether the number is a
|
||||
signed integer, an unsigned integer or a floating-point number. Therefore,
|
||||
three different types, @ref number_integer_t, @ref number_unsigned_t and
|
||||
@ref number_float_t are used.
|
||||
This description includes both integer and floating-point numbers.
|
||||
However, C++ allows more precise storage if it is known whether the number
|
||||
is a signed integer, an unsigned integer or a floating-point number.
|
||||
Therefore, three different types, @ref number_integer_t, @ref
|
||||
number_unsigned_t and @ref number_float_t are used.
|
||||
|
||||
To store floating-point numbers in C++, a type is defined by the template
|
||||
parameter @a NumberFloatType which chooses the type to use.
|
||||
|
@ -641,8 +643,8 @@ class basic_json
|
|||
#### Default behavior
|
||||
|
||||
- The restrictions about leading zeros is not enforced in C++. Instead,
|
||||
leading zeros in floating-point literals will be ignored. Internally, the
|
||||
value will be stored as decimal number. For instance, the C++
|
||||
leading zeros in floating-point literals will be ignored. Internally,
|
||||
the value will be stored as decimal number. For instance, the C++
|
||||
floating-point literal `01.2` will be serialized to `1.2`. During
|
||||
deserialization, leading zeros yield an error.
|
||||
- Not-a-number (NaN) values will be serialized to `null`.
|
||||
|
@ -653,9 +655,9 @@ class basic_json
|
|||
> This specification allows implementations to set limits on the range and
|
||||
> precision of numbers accepted. Since software that implements IEEE
|
||||
> 754-2008 binary64 (double precision) numbers is generally available and
|
||||
> widely used, good interoperability can be achieved by implementations that
|
||||
> expect no more precision or range than these provide, in the sense that
|
||||
> implementations will approximate JSON numbers within the expected
|
||||
> widely used, good interoperability can be achieved by implementations
|
||||
> that expect no more precision or range than these provide, in the sense
|
||||
> that implementations will approximate JSON numbers within the expected
|
||||
> precision.
|
||||
|
||||
This implementation does exactly follow this approach, as it uses double
|
||||
|
@ -938,9 +940,9 @@ class basic_json
|
|||
influenced. When passed to @ref parse(std::istream&, parser_callback_t) or
|
||||
@ref parse(const string_t&, parser_callback_t), it is called on certain
|
||||
events (passed as @ref parse_event_t via parameter @a event) with a set
|
||||
recursion depth @a depth and context JSON value @a parsed. The return value
|
||||
of the callback function is a boolean indicating whether the element that
|
||||
emitted the callback shall be kept or not.
|
||||
recursion depth @a depth and context JSON value @a parsed. The return
|
||||
value of the callback function is a boolean indicating whether the element
|
||||
that emitted the callback shall be kept or not.
|
||||
|
||||
We distinguish six scenarios (determined by the event type) in which the
|
||||
callback function can be called. The following table describes the values
|
||||
|
@ -960,8 +962,8 @@ class basic_json
|
|||
|
||||
- Discarded values in structured types are skipped. That is, the parser
|
||||
will behave as if the discarded value was never read.
|
||||
- In case a value outside a structured type is skipped, it is replaced with
|
||||
`null`. This case happens if the top-level element is skipped.
|
||||
- In case a value outside a structured type is skipped, it is replaced
|
||||
with `null`. This case happens if the top-level element is skipped.
|
||||
|
||||
@param[in] depth the depth of the recursion during parsing
|
||||
|
||||
|
@ -1065,8 +1067,8 @@ class basic_json
|
|||
Create a `null` JSON value. This is the explicitly version of the `null`
|
||||
value constructor as it takes a null pointer as parameter. It allows to
|
||||
create `null` values by explicitly assigning a `nullptr` to a JSON value.
|
||||
The passed null pointer itself is not read -- it is only used to choose the
|
||||
right constructor.
|
||||
The passed null pointer itself is not read -- it is only used to choose
|
||||
the right constructor.
|
||||
|
||||
@complexity Constant.
|
||||
|
||||
|
@ -1096,8 +1098,8 @@ class basic_json
|
|||
|
||||
@throw std::bad_alloc if allocation for object value fails
|
||||
|
||||
@liveexample{The following code shows the constructor with an @ref object_t
|
||||
parameter.,basic_json__object_t}
|
||||
@liveexample{The following code shows the constructor with an @ref
|
||||
object_t parameter.,basic_json__object_t}
|
||||
|
||||
@sa @ref basic_json(const CompatibleObjectType&) -- create an object value
|
||||
from a compatible STL container
|
||||
|
@ -1177,11 +1179,11 @@ class basic_json
|
|||
any type @a CompatibleArrayType that can be used to construct values of
|
||||
type @ref array_t.
|
||||
|
||||
@tparam CompatibleArrayType An object type whose `value_type` is compatible
|
||||
to @ref array_t. Examples include `std::vector`, `std::deque`, `std::list`,
|
||||
`std::forward_list`, `std::array`, `std::set`, `std::unordered_set`,
|
||||
`std::multiset`, and `unordered_multiset` with a `value_type` from which a
|
||||
@ref basic_json value can be constructed.
|
||||
@tparam CompatibleArrayType An object type whose `value_type` is
|
||||
compatible to @ref array_t. Examples include `std::vector`, `std::deque`,
|
||||
`std::list`, `std::forward_list`, `std::array`, `std::set`,
|
||||
`std::unordered_set`, `std::multiset`, and `unordered_multiset` with a
|
||||
`value_type` from which a @ref basic_json value can be constructed.
|
||||
|
||||
@param[in] val a value for the array
|
||||
|
||||
|
@ -1225,8 +1227,8 @@ class basic_json
|
|||
|
||||
@throw std::bad_alloc if allocation for string value fails
|
||||
|
||||
@liveexample{The following code shows the constructor with an @ref string_t
|
||||
parameter.,basic_json__string_t}
|
||||
@liveexample{The following code shows the constructor with an @ref
|
||||
string_t parameter.,basic_json__string_t}
|
||||
|
||||
@sa @ref basic_json(const typename string_t::value_type*) -- create a
|
||||
string value from a character pointer
|
||||
|
@ -1318,9 +1320,9 @@ class basic_json
|
|||
Create an integer number JSON value with a given content.
|
||||
|
||||
@tparam T A helper type to remove this function via SFINAE in case @ref
|
||||
number_integer_t is the same as `int`. In this case, this constructor would
|
||||
have the same signature as @ref basic_json(const int value). Note the
|
||||
helper type @a T is not visible in this constructor's interface.
|
||||
number_integer_t is the same as `int`. In this case, this constructor
|
||||
would have the same signature as @ref basic_json(const int value). Note
|
||||
the helper type @a T is not visible in this constructor's interface.
|
||||
|
||||
@param[in] val an integer to create a JSON number from
|
||||
|
||||
|
@ -1355,8 +1357,8 @@ class basic_json
|
|||
@note This constructor allows to pass enums directly to a constructor. As
|
||||
C++ has no way of specifying the type of an anonymous enum explicitly, we
|
||||
can only rely on the fact that such values implicitly convert to int. As
|
||||
int may already be the same type of number_integer_t, we may need to switch
|
||||
off the constructor @ref basic_json(const number_integer_t).
|
||||
int may already be the same type of number_integer_t, we may need to
|
||||
switch off the constructor @ref basic_json(const number_integer_t).
|
||||
|
||||
@complexity Constant.
|
||||
|
||||
|
@ -1383,8 +1385,8 @@ class basic_json
|
|||
construct values of type @ref number_integer_t.
|
||||
|
||||
@tparam CompatibleNumberIntegerType An integer type which is compatible to
|
||||
@ref number_integer_t. Examples include the types `int`, `int32_t`, `long`,
|
||||
and `short`.
|
||||
@ref number_integer_t. Examples include the types `int`, `int32_t`,
|
||||
`long`, and `short`.
|
||||
|
||||
@param[in] val an integer to create a JSON number from
|
||||
|
||||
|
@ -1442,12 +1444,12 @@ class basic_json
|
|||
/*!
|
||||
@brief create an unsigned number (implicit)
|
||||
|
||||
Create an unsigned number JSON value with a given content. This constructor
|
||||
allows any type @a CompatibleNumberUnsignedType that can be used to
|
||||
construct values of type @ref number_unsigned_t.
|
||||
Create an unsigned number JSON value with a given content. This
|
||||
constructor allows any type @a CompatibleNumberUnsignedType that can be
|
||||
used to construct values of type @ref number_unsigned_t.
|
||||
|
||||
@tparam CompatibleNumberUnsignedType An integer type which is compatible to
|
||||
@ref number_unsigned_t. Examples may include the types `unsigned int`,
|
||||
@tparam CompatibleNumberUnsignedType An integer type which is compatible
|
||||
to @ref number_unsigned_t. Examples may include the types `unsigned int`,
|
||||
`uint32_t`, or `unsigned short`.
|
||||
|
||||
@param[in] val an unsigned integer to create a JSON number from
|
||||
|
@ -1480,8 +1482,8 @@ class basic_json
|
|||
|
||||
@note [RFC 7159](http://www.rfc-editor.org/rfc/rfc7159.txt), section 6
|
||||
disallows NaN values:
|
||||
> Numeric values that cannot be represented in the grammar below (such
|
||||
> as Infinity and NaN) are not permitted.
|
||||
> Numeric values that cannot be represented in the grammar below (such as
|
||||
> Infinity and NaN) are not permitted.
|
||||
In case the parameter @a val is not a number, a JSON null value is
|
||||
created instead.
|
||||
|
||||
|
@ -1513,15 +1515,16 @@ class basic_json
|
|||
constructor allows any type @a CompatibleNumberFloatType that can be used
|
||||
to construct values of type @ref number_float_t.
|
||||
|
||||
@tparam CompatibleNumberFloatType A floating-point type which is compatible
|
||||
to @ref number_float_t. Examples may include the types `float` or `double`.
|
||||
@tparam CompatibleNumberFloatType A floating-point type which is
|
||||
compatible to @ref number_float_t. Examples may include the types `float`
|
||||
or `double`.
|
||||
|
||||
@param[in] val a floating-point to create a JSON number from
|
||||
|
||||
@note [RFC 7159](http://www.rfc-editor.org/rfc/rfc7159.txt), section 6
|
||||
disallows NaN values:
|
||||
> Numeric values that cannot be represented in the grammar below (such
|
||||
> as Infinity and NaN) are not permitted.
|
||||
> Numeric values that cannot be represented in the grammar below (such as
|
||||
> Infinity and NaN) are not permitted.
|
||||
In case the parameter @a val is not a number, a JSON null value is
|
||||
created instead.
|
||||
|
||||
|
@ -1592,13 +1595,13 @@ class basic_json
|
|||
used by the functions @ref array(std::initializer_list<basic_json>) and
|
||||
@ref object(std::initializer_list<basic_json>).
|
||||
|
||||
@param[in] manual_type internal parameter; when @a type_deduction is set to
|
||||
`false`, the created JSON value will use the provided type (only @ref
|
||||
@param[in] manual_type internal parameter; when @a type_deduction is set
|
||||
to `false`, the created JSON value will use the provided type (only @ref
|
||||
value_t::array and @ref value_t::object are valid); when @a type_deduction
|
||||
is set to `true`, this parameter has no effect
|
||||
|
||||
@throw std::domain_error if @a type_deduction is `false`, @a manual_type is
|
||||
`value_t::object`, but @a init contains an element which is not a pair
|
||||
@throw std::domain_error if @a type_deduction is `false`, @a manual_type
|
||||
is `value_t::object`, but @a init contains an element which is not a pair
|
||||
whose first element is a string; example: `"cannot create object from
|
||||
initializer list"`
|
||||
|
||||
|
@ -1679,8 +1682,8 @@ class basic_json
|
|||
list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the
|
||||
initializer list is empty, the empty array `[]` is created.
|
||||
|
||||
@note This function is only needed to express two edge cases that cannot be
|
||||
realized with the initializer list constructor (@ref
|
||||
@note This function is only needed to express two edge cases that cannot
|
||||
be realized with the initializer list constructor (@ref
|
||||
basic_json(std::initializer_list<basic_json>, bool, value_t)). These cases
|
||||
are:
|
||||
1. creating an array whose elements are all pairs whose first element is a
|
||||
|
@ -1723,8 +1726,8 @@ class basic_json
|
|||
related function @ref array(std::initializer_list<basic_json>), there are
|
||||
no cases which can only be expressed by this function. That is, any
|
||||
initializer list @a init can also be passed to the initializer list
|
||||
constructor
|
||||
@ref basic_json(std::initializer_list<basic_json>, bool, value_t).
|
||||
constructor @ref basic_json(std::initializer_list<basic_json>, bool,
|
||||
value_t).
|
||||
|
||||
@param[in] init initializer list to create an object from (optional)
|
||||
|
||||
|
@ -1755,8 +1758,8 @@ class basic_json
|
|||
/*!
|
||||
@brief construct an array with count copies of given value
|
||||
|
||||
Constructs a JSON array value by creating @a cnt copies of a passed
|
||||
value. In case @a cnt is `0`, an empty array is created. As postcondition,
|
||||
Constructs a JSON array value by creating @a cnt copies of a passed value.
|
||||
In case @a cnt is `0`, an empty array is created. As postcondition,
|
||||
`std::distance(begin(),end()) == cnt` holds.
|
||||
|
||||
@param[in] cnt the number of JSON copies of @a val to create
|
||||
|
@ -1784,8 +1787,8 @@ class basic_json
|
|||
- In case of primitive types (number, boolean, or string), @a first must
|
||||
be `begin()` and @a last must be `end()`. In this case, the value is
|
||||
copied. Otherwise, std::out_of_range is thrown.
|
||||
- In case of structured types (array, object), the constructor behaves
|
||||
as similar versions for `std::vector`.
|
||||
- In case of structured types (array, object), the constructor behaves as
|
||||
similar versions for `std::vector`.
|
||||
- In case of a null type, std::domain_error is thrown.
|
||||
|
||||
@tparam InputIT an input iterator type (@ref iterator or @ref
|
||||
|
@ -1800,8 +1803,8 @@ class basic_json
|
|||
boolean, or string) where an out of range error can be detected easily;
|
||||
example: `"iterators out of range"`
|
||||
@throw std::bad_alloc if allocation for object, array, or string fails
|
||||
@throw std::domain_error if called with a null value; example: `"cannot use
|
||||
construct with iterators from null"`
|
||||
@throw std::domain_error if called with a null value; example: `"cannot
|
||||
use construct with iterators from null"`
|
||||
|
||||
@complexity Linear in distance between @a first and @a last.
|
||||
|
||||
|
@ -2042,8 +2045,8 @@ class basic_json
|
|||
@brief copy assignment
|
||||
|
||||
Copy assignment operator. Copies a JSON value via the "copy and swap"
|
||||
strategy: It is expressed in terms of the copy constructor, destructor, and
|
||||
the swap() member function.
|
||||
strategy: It is expressed in terms of the copy constructor, destructor,
|
||||
and the swap() member function.
|
||||
|
||||
@param[in] other value to copy from
|
||||
|
||||
|
@ -2143,8 +2146,8 @@ class basic_json
|
|||
parameter.
|
||||
|
||||
@param[in] indent if indent is nonnegative, then array elements and object
|
||||
members will be pretty-printed with that indent level. An indent level of 0
|
||||
will only insert newlines. -1 (the default) selects the most compact
|
||||
members will be pretty-printed with that indent level. An indent level of
|
||||
0 will only insert newlines. -1 (the default) selects the most compact
|
||||
representation
|
||||
|
||||
@return string containing the serialization of the JSON value
|
||||
|
@ -2976,8 +2979,8 @@ class basic_json
|
|||
/*!
|
||||
@brief get a reference value (implicit)
|
||||
|
||||
Implict reference access to the internally stored JSON value. No copies are
|
||||
made.
|
||||
Implict reference access to the internally stored JSON value. No copies
|
||||
are made.
|
||||
|
||||
@warning Writing data to the referee of the result yields an undefined
|
||||
state.
|
||||
|
@ -3027,14 +3030,14 @@ class basic_json
|
|||
/*!
|
||||
@brief get a value (implicit)
|
||||
|
||||
Implicit type conversion between the JSON value and a compatible value. The
|
||||
call is realized by calling @ref get() const.
|
||||
Implicit type conversion between the JSON value and a compatible value.
|
||||
The call is realized by calling @ref get() const.
|
||||
|
||||
@tparam ValueType non-pointer type compatible to the JSON value, for
|
||||
instance `int` for JSON integer numbers, `bool` for JSON booleans, or
|
||||
`std::vector` types for JSON arrays. The character type of @ref string_t as
|
||||
well as an initializer list of this type is excluded to avoid ambiguities
|
||||
as these types implicitly convert to `std::string`.
|
||||
`std::vector` types for JSON arrays. The character type of @ref string_t
|
||||
as well as an initializer list of this type is excluded to avoid
|
||||
ambiguities as these types implicitly convert to `std::string`.
|
||||
|
||||
@return copy of the JSON value, converted to type @a ValueType
|
||||
|
||||
|
@ -3123,8 +3126,8 @@ class basic_json
|
|||
/*!
|
||||
@brief access specified array element with bounds checking
|
||||
|
||||
Returns a const reference to the element at specified location @a idx, with
|
||||
bounds checking.
|
||||
Returns a const reference to the element at specified location @a idx,
|
||||
with bounds checking.
|
||||
|
||||
@param[in] idx index of the element to access
|
||||
|
||||
|
@ -3215,8 +3218,8 @@ class basic_json
|
|||
/*!
|
||||
@brief access specified object element with bounds checking
|
||||
|
||||
Returns a const reference to the element at with specified key @a key, with
|
||||
bounds checking.
|
||||
Returns a const reference to the element at with specified key @a key,
|
||||
with bounds checking.
|
||||
|
||||
@param[in] key key of the element to access
|
||||
|
||||
|
@ -3690,8 +3693,8 @@ class basic_json
|
|||
|
||||
@complexity Constant.
|
||||
|
||||
@pre The JSON value must not be `null` (would throw `std::out_of_range`) or
|
||||
an empty array or object (undefined behavior, guarded by assertions).
|
||||
@pre The JSON value must not be `null` (would throw `std::out_of_range`)
|
||||
or an empty array or object (undefined behavior, guarded by assertions).
|
||||
@post The JSON value remains unchanged.
|
||||
|
||||
@throw std::out_of_range when called on `null` value
|
||||
|
@ -3732,8 +3735,8 @@ class basic_json
|
|||
|
||||
@complexity Constant.
|
||||
|
||||
@pre The JSON value must not be `null` (would throw `std::out_of_range`) or
|
||||
an empty array or object (undefined behavior, guarded by assertions).
|
||||
@pre The JSON value must not be `null` (would throw `std::out_of_range`)
|
||||
or an empty array or object (undefined behavior, guarded by assertions).
|
||||
@post The JSON value remains unchanged.
|
||||
|
||||
@throw std::out_of_range when called on `null` value.
|
||||
|
@ -3772,16 +3775,16 @@ class basic_json
|
|||
will be `null`.
|
||||
|
||||
@param[in] pos iterator to the element to remove
|
||||
@return Iterator following the last removed element. If the iterator @a pos
|
||||
refers to the last element, the `end()` iterator is returned.
|
||||
@return Iterator following the last removed element. If the iterator @a
|
||||
pos refers to the last element, the `end()` iterator is returned.
|
||||
|
||||
@tparam InteratorType an @ref iterator or @ref const_iterator
|
||||
|
||||
@post Invalidates iterators and references at or after the point of the
|
||||
erase, including the `end()` iterator.
|
||||
|
||||
@throw std::domain_error if called on a `null` value; example: `"cannot use
|
||||
erase() with null"`
|
||||
@throw std::domain_error if called on a `null` value; example: `"cannot
|
||||
use erase() with null"`
|
||||
@throw std::domain_error if called on an iterator which does not belong to
|
||||
the current JSON value; example: `"iterator does not fit current value"`
|
||||
@throw std::out_of_range if called on a primitive type with invalid
|
||||
|
@ -3797,12 +3800,12 @@ class basic_json
|
|||
@liveexample{The example shows the result of `erase()` for different JSON
|
||||
types.,erase__IteratorType}
|
||||
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in the
|
||||
given range
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in
|
||||
the given range
|
||||
@sa @ref erase(const typename object_t::key_type&) -- removes the element
|
||||
from an object at the given key
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at the
|
||||
given index
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at
|
||||
the given index
|
||||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
|
@ -3871,9 +3874,9 @@ class basic_json
|
|||
/*!
|
||||
@brief remove elements given an iterator range
|
||||
|
||||
Removes the element specified by the range `[first; last)`. The iterator @a
|
||||
first does not need to be dereferenceable if `first == last`: erasing an
|
||||
empty range is a no-op.
|
||||
Removes the element specified by the range `[first; last)`. The iterator
|
||||
@a first does not need to be dereferenceable if `first == last`: erasing
|
||||
an empty range is a no-op.
|
||||
|
||||
If called on a primitive type other than `null`, the resulting JSON value
|
||||
will be `null`.
|
||||
|
@ -3888,8 +3891,8 @@ class basic_json
|
|||
@post Invalidates iterators and references at or after the point of the
|
||||
erase, including the `end()` iterator.
|
||||
|
||||
@throw std::domain_error if called on a `null` value; example: `"cannot use
|
||||
erase() with null"`
|
||||
@throw std::domain_error if called on a `null` value; example: `"cannot
|
||||
use erase() with null"`
|
||||
@throw std::domain_error if called on iterators which does not belong to
|
||||
the current JSON value; example: `"iterators do not fit current value"`
|
||||
@throw std::out_of_range if called on a primitive type with invalid
|
||||
|
@ -3909,8 +3912,8 @@ class basic_json
|
|||
@sa @ref erase(InteratorType) -- removes the element at a given position
|
||||
@sa @ref erase(const typename object_t::key_type&) -- removes the element
|
||||
from an object at the given key
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at the
|
||||
given index
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at
|
||||
the given index
|
||||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
|
@ -3986,8 +3989,8 @@ class basic_json
|
|||
@param[in] key value of the elements to remove
|
||||
|
||||
@return Number of elements removed. If @a ObjectType is the default
|
||||
`std::map` type, the return value will always be `0` (@a key was not found)
|
||||
or `1` (@a key was found).
|
||||
`std::map` type, the return value will always be `0` (@a key was not
|
||||
found) or `1` (@a key was found).
|
||||
|
||||
@post References and iterators to the erased elements are invalidated.
|
||||
Other references and iterators are not affected.
|
||||
|
@ -4000,10 +4003,10 @@ class basic_json
|
|||
@liveexample{The example shows the effect of `erase()`.,erase__key_type}
|
||||
|
||||
@sa @ref erase(InteratorType) -- removes the element at a given position
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in the
|
||||
given range
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at the
|
||||
given index
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in
|
||||
the given range
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at
|
||||
the given index
|
||||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
|
@ -4038,8 +4041,8 @@ class basic_json
|
|||
@liveexample{The example shows the effect of `erase()`.,erase__size_type}
|
||||
|
||||
@sa @ref erase(InteratorType) -- removes the element at a given position
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in the
|
||||
given range
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in
|
||||
the given range
|
||||
@sa @ref erase(const typename object_t::key_type&) -- removes the element
|
||||
from an object at the given key
|
||||
|
||||
|
@ -4078,7 +4081,8 @@ class basic_json
|
|||
@brief find an element in a JSON object
|
||||
|
||||
Finds an element in a JSON object with key equivalent to @a key. If the
|
||||
element is not found or the JSON value is not an object, end() is returned.
|
||||
element is not found or the JSON value is not an object, end() is
|
||||
returned.
|
||||
|
||||
@param[in] key key value of the element to search for
|
||||
|
||||
|
@ -4438,9 +4442,9 @@ class basic_json
|
|||
@brief wrapper to access iterator member functions in range-based for
|
||||
|
||||
This function allows to access @ref iterator::key() and @ref
|
||||
iterator::value() during range-based for loops. In these loops, a reference
|
||||
to the JSON values is returned, so there is no access to the underlying
|
||||
iterator.
|
||||
iterator::value() during range-based for loops. In these loops, a
|
||||
reference to the JSON values is returned, so there is no access to the
|
||||
underlying iterator.
|
||||
|
||||
@note The name of this function is not yet final and may change in the
|
||||
future.
|
||||
|
@ -4484,8 +4488,8 @@ class basic_json
|
|||
object | result of function `object_t::empty()`
|
||||
array | result of function `array_t::empty()`
|
||||
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy the
|
||||
Container concept; that is, their `empty()` functions have constant
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy
|
||||
the Container concept; that is, their `empty()` functions have constant
|
||||
complexity.
|
||||
|
||||
@requirement This function helps `basic_json` satisfying the
|
||||
|
@ -4547,8 +4551,9 @@ class basic_json
|
|||
object | result of function object_t::size()
|
||||
array | result of function array_t::size()
|
||||
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy the
|
||||
Container concept; that is, their size() functions have constant complexity.
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy
|
||||
the Container concept; that is, their size() functions have constant
|
||||
complexity.
|
||||
|
||||
@requirement This function helps `basic_json` satisfying the
|
||||
[Container](http://en.cppreference.com/w/cpp/concept/Container)
|
||||
|
@ -4612,8 +4617,8 @@ class basic_json
|
|||
object | result of function `object_t::max_size()`
|
||||
array | result of function `array_t::max_size()`
|
||||
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy the
|
||||
Container concept; that is, their `max_size()` functions have constant
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy
|
||||
the Container concept; that is, their `max_size()` functions have constant
|
||||
complexity.
|
||||
|
||||
@requirement This function helps `basic_json` satisfying the
|
||||
|
@ -4835,8 +4840,8 @@ class basic_json
|
|||
@brief add an object to an object
|
||||
|
||||
Inserts the given element @a val to the JSON object. If the function is
|
||||
called on a JSON null value, an empty object is created before inserting @a
|
||||
val.
|
||||
called on a JSON null value, an empty object is created before inserting
|
||||
@a val.
|
||||
|
||||
@param[in] val the value to add to the JSON object
|
||||
|
||||
|
@ -5111,8 +5116,8 @@ class basic_json
|
|||
@return iterator pointing to the first element inserted, or @a pos if
|
||||
`ilist` is empty
|
||||
|
||||
@complexity Linear in `ilist.size()` plus linear in the distance between @a
|
||||
pos and end of the container.
|
||||
@complexity Linear in `ilist.size()` plus linear in the distance between
|
||||
@a pos and end of the container.
|
||||
|
||||
@liveexample{The example shows how `insert()` is used.,insert__ilist}
|
||||
|
||||
|
@ -5757,8 +5762,8 @@ class basic_json
|
|||
|
||||
@note A UTF-8 byte order mark is silently ignored.
|
||||
|
||||
@liveexample{The example below demonstrates the `parse()` function with and
|
||||
without callback function.,parse__string__parser_callback_t}
|
||||
@liveexample{The example below demonstrates the `parse()` function with
|
||||
and without callback function.,parse__string__parser_callback_t}
|
||||
|
||||
@sa @ref parse(std::istream&, parser_callback_t) for a version that reads
|
||||
from an input stream
|
||||
|
@ -5786,11 +5791,11 @@ class basic_json
|
|||
|
||||
@note A UTF-8 byte order mark is silently ignored.
|
||||
|
||||
@liveexample{The example below demonstrates the `parse()` function with and
|
||||
without callback function.,parse__istream__parser_callback_t}
|
||||
@liveexample{The example below demonstrates the `parse()` function with
|
||||
and without callback function.,parse__istream__parser_callback_t}
|
||||
|
||||
@sa @ref parse(const string_t&, parser_callback_t) for a version that reads
|
||||
from a string
|
||||
@sa @ref parse(const string_t&, parser_callback_t) for a version that
|
||||
reads from a string
|
||||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
|
@ -5923,8 +5928,8 @@ class basic_json
|
|||
/*!
|
||||
@brief escape a string
|
||||
|
||||
Escape a string by replacing certain special characters by a sequence of an
|
||||
escape character (backslash) and another character and other control
|
||||
Escape a string by replacing certain special characters by a sequence of
|
||||
an escape character (backslash) and another character and other control
|
||||
characters by a sequence of "\u" followed by a four-digit hex
|
||||
representation.
|
||||
|
||||
|
@ -6046,8 +6051,8 @@ class basic_json
|
|||
|
||||
This function is called by the public member function dump and organizes
|
||||
the serialization internally. The indentation level is propagated as
|
||||
additional parameter. In case of arrays and objects, the function is called
|
||||
recursively. Note that
|
||||
additional parameter. In case of arrays and objects, the function is
|
||||
called recursively. Note that
|
||||
|
||||
- strings and object keys are escaped using `escape_string()`
|
||||
- integer numbers are converted implicitly via `operator<<`
|
||||
|
@ -6241,8 +6246,8 @@ class basic_json
|
|||
{
|
||||
// Otherwise 6, 15 or 16 digits of precision allows
|
||||
// round-trip IEEE 754 string->float->string,
|
||||
// string->double->string or string->long double->string;
|
||||
// to be safe, we read this value from
|
||||
// string->double->string or string->long
|
||||
// double->string; to be safe, we read this value from
|
||||
// std::numeric_limits<number_float_t>::digits10
|
||||
std::stringstream ss;
|
||||
ss.imbue(std::locale(std::locale(), new DecimalSeparator)); // fix locale problems
|
||||
|
@ -7262,8 +7267,8 @@ class basic_json
|
|||
@brief lexical analysis
|
||||
|
||||
This class organizes the lexical analysis during JSON deserialization. The
|
||||
core of it is a scanner generated by [re2c](http://re2c.org) that processes
|
||||
a buffer and recognizes tokens according to RFC 7159.
|
||||
core of it is a scanner generated by [re2c](http://re2c.org) that
|
||||
processes a buffer and recognizes tokens according to RFC 7159.
|
||||
*/
|
||||
class lexer
|
||||
{
|
||||
|
@ -8259,13 +8264,14 @@ basic_json_parser_63:
|
|||
|
||||
1. Escaped characters. In this case, a new character is constructed
|
||||
according to the nature of the escape. Some escapes create new
|
||||
characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied as
|
||||
is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape
|
||||
characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied
|
||||
as is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape
|
||||
`"\\uxxxx"` need special care. In this case, to_unicode takes care
|
||||
of the construction of the values.
|
||||
2. Unescaped characters are copied as is.
|
||||
|
||||
@return string value of current token without opening and closing quotes
|
||||
@return string value of current token without opening and closing
|
||||
quotes
|
||||
@throw std::out_of_range if to_unicode fails
|
||||
*/
|
||||
string_t get_string() const
|
||||
|
@ -8376,8 +8382,8 @@ basic_json_parser_63:
|
|||
|
||||
This function (and its overloads) serves to select the most approprate
|
||||
standard floating point number parsing function based on the type
|
||||
supplied via the first parameter. Set this to
|
||||
@a static_cast<number_float_t*>(nullptr).
|
||||
supplied via the first parameter. Set this to @a
|
||||
static_cast<number_float_t*>(nullptr).
|
||||
|
||||
@param[in] type the @ref number_float_t in use
|
||||
|
||||
|
@ -8401,8 +8407,8 @@ basic_json_parser_63:
|
|||
|
||||
This function (and its overloads) serves to select the most approprate
|
||||
standard floating point number parsing function based on the type
|
||||
supplied via the first parameter. Set this to
|
||||
@a static_cast<number_float_t*>(nullptr).
|
||||
supplied via the first parameter. Set this to @a
|
||||
static_cast<number_float_t*>(nullptr).
|
||||
|
||||
@param[in] type the @ref number_float_t in use
|
||||
|
||||
|
@ -8421,8 +8427,8 @@ basic_json_parser_63:
|
|||
|
||||
This function (and its overloads) serves to select the most approprate
|
||||
standard floating point number parsing function based on the type
|
||||
supplied via the first parameter. Set this to
|
||||
@a static_cast<number_float_t*>(nullptr).
|
||||
supplied via the first parameter. Set this to @a
|
||||
static_cast<number_float_t*>(nullptr).
|
||||
|
||||
@param[in] type the @ref number_float_t in use
|
||||
|
||||
|
@ -8446,13 +8452,13 @@ basic_json_parser_63:
|
|||
This function parses the integer component up to the radix point or
|
||||
exponent while collecting information about the 'floating point
|
||||
representation', which it stores in the result parameter. If there is
|
||||
no radix point or exponent, and the number can fit into a
|
||||
@ref number_integer_t or @ref number_unsigned_t then it sets the
|
||||
result parameter accordingly.
|
||||
no radix point or exponent, and the number can fit into a @ref
|
||||
number_integer_t or @ref number_unsigned_t then it sets the result
|
||||
parameter accordingly.
|
||||
|
||||
The 'floating point representation' includes the number of significant
|
||||
figures after the radix point, whether the number is in exponential
|
||||
or decimal form, the capitalization of the exponent marker, and if the
|
||||
figures after the radix point, whether the number is in exponential or
|
||||
decimal form, the capitalization of the exponent marker, and if the
|
||||
optional '+' is present in the exponent. This information is necessary
|
||||
to perform accurate round trips of floating point numbers.
|
||||
|
||||
|
@ -9415,11 +9421,11 @@ basic_json_parser_63:
|
|||
throw std::domain_error("values in object must be primitive");
|
||||
}
|
||||
|
||||
// assign value to reference pointed to by JSON pointer;
|
||||
// Note that if the JSON pointer is "" (i.e., points to the
|
||||
// whole value), function get_and_create returns a reference
|
||||
// to result itself. An assignment will then create a
|
||||
// primitive value.
|
||||
// assign value to reference pointed to by JSON pointer; Note
|
||||
// that if the JSON pointer is "" (i.e., points to the whole
|
||||
// value), function get_and_create returns a reference to
|
||||
// result itself. An assignment will then create a primitive
|
||||
// value.
|
||||
json_pointer(element.first).get_and_create(result) = element.second;
|
||||
}
|
||||
|
||||
|
@ -9442,9 +9448,9 @@ basic_json_parser_63:
|
|||
@brief access specified element via JSON Pointer
|
||||
|
||||
Uses a JSON pointer to retrieve a reference to the respective JSON value.
|
||||
No bound checking is performed. Similar to
|
||||
@ref operator[](const typename object_t::key_type&), `null` values
|
||||
are created in arrays and objects if necessary.
|
||||
No bound checking is performed. Similar to @ref operator[](const typename
|
||||
object_t::key_type&), `null` values are created in arrays and objects if
|
||||
necessary.
|
||||
|
||||
In particular:
|
||||
- If the JSON pointer points to an object key that does not exist, it
|
||||
|
@ -9531,8 +9537,8 @@ basic_json_parser_63:
|
|||
/*!
|
||||
@brief access specified element via JSON Pointer
|
||||
|
||||
Returns a const reference to the element at with specified JSON pointer
|
||||
@a ptr, with bounds checking.
|
||||
Returns a const reference to the element at with specified JSON pointer @a
|
||||
ptr, with bounds checking.
|
||||
|
||||
@param[in] ptr JSON pointer to the desired element
|
||||
|
||||
|
@ -9556,10 +9562,10 @@ basic_json_parser_63:
|
|||
/*!
|
||||
@brief return flattened JSON value
|
||||
|
||||
The function creates a JSON object whose keys are JSON pointers (see
|
||||
[RFC 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all
|
||||
primitive. The original JSON value can be restored using the
|
||||
@ref unflatten() function.
|
||||
The function creates a JSON object whose keys are JSON pointers (see [RFC
|
||||
6901](https://tools.ietf.org/html/rfc6901)) and whose values are all
|
||||
primitive. The original JSON value can be restored using the @ref
|
||||
unflatten() function.
|
||||
|
||||
@return an object that maps JSON pointers to primitve values
|
||||
|
||||
|
@ -9631,7 +9637,7 @@ basic_json_parser_63:
|
|||
this funcion, a JSON Patch is applied to the current JSON value by
|
||||
executing all operations from the patch.
|
||||
|
||||
@param[in] patch JSON patch document
|
||||
@param[in] json_patch JSON patch document
|
||||
@return patched document
|
||||
|
||||
@note The application of a patch is atomic: Either all operations succeed
|
||||
|
@ -10092,8 +10098,8 @@ basic_json_parser_63:
|
|||
/*!
|
||||
@brief default JSON class
|
||||
|
||||
This type is the default specialization of the @ref basic_json class which uses
|
||||
the standard template types.
|
||||
This type is the default specialization of the @ref basic_json class which
|
||||
uses the standard template types.
|
||||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
|
|
|
@ -271,8 +271,8 @@ class basic_json
|
|||
|
||||
@tparam ObjectType the container to store objects (e.g., `std::map` or
|
||||
`std::unordered_map`)
|
||||
@tparam StringType the type of the keys or names (e.g., `std::string`). The
|
||||
comparison function `std::less<StringType>` is used to order elements
|
||||
@tparam StringType the type of the keys or names (e.g., `std::string`).
|
||||
The comparison function `std::less<StringType>` is used to order elements
|
||||
inside the container.
|
||||
@tparam AllocatorType the allocator to use for objects (e.g.,
|
||||
`std::allocator`)
|
||||
|
@ -280,8 +280,8 @@ class basic_json
|
|||
#### Default type
|
||||
|
||||
With the default values for @a ObjectType (`std::map`), @a StringType
|
||||
(`std::string`), and @a AllocatorType (`std::allocator`), the default value
|
||||
for @a object_t is:
|
||||
(`std::string`), and @a AllocatorType (`std::allocator`), the default
|
||||
value for @a object_t is:
|
||||
|
||||
@code {.cpp}
|
||||
std::map<
|
||||
|
@ -298,16 +298,16 @@ class basic_json
|
|||
the default type, objects have the following behavior:
|
||||
|
||||
- When all names are unique, objects will be interoperable in the sense
|
||||
that all software implementations receiving that object will agree on the
|
||||
name-value mappings.
|
||||
that all software implementations receiving that object will agree on
|
||||
the name-value mappings.
|
||||
- When the names within an object are not unique, later stored name/value
|
||||
pairs overwrite previously stored name/value pairs, leaving the used
|
||||
names unique. For instance, `{"key": 1}` and `{"key": 2, "key": 1}` will
|
||||
be treated as equal and both stored as `{"key": 1}`.
|
||||
- Internally, name/value pairs are stored in lexicographical order of the
|
||||
names. Objects will also be serialized (see @ref dump) in this order. For
|
||||
instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored and
|
||||
serialized as `{"a": 2, "b": 1}`.
|
||||
names. Objects will also be serialized (see @ref dump) in this order.
|
||||
For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored
|
||||
and serialized as `{"a": 2, "b": 1}`.
|
||||
- When comparing objects, the order of the name/value pairs is irrelevant.
|
||||
This makes objects interoperable in the sense that they will not be
|
||||
affected by these differences. For instance, `{"b": 1, "a": 2}` and
|
||||
|
@ -320,23 +320,24 @@ class basic_json
|
|||
|
||||
In this class, the object's limit of nesting is not constraint explicitly.
|
||||
However, a maximum depth of nesting may be introduced by the compiler or
|
||||
runtime environment. A theoretical limit can be queried by calling the @ref
|
||||
max_size function of a JSON object.
|
||||
runtime environment. A theoretical limit can be queried by calling the
|
||||
@ref max_size function of a JSON object.
|
||||
|
||||
#### Storage
|
||||
|
||||
Objects are stored as pointers in a @ref basic_json type. That is, for any
|
||||
access to object values, a pointer of type `object_t*` must be dereferenced.
|
||||
access to object values, a pointer of type `object_t*` must be
|
||||
dereferenced.
|
||||
|
||||
@sa @ref array_t -- type for an array value
|
||||
|
||||
@since version 1.0.0
|
||||
|
||||
@note The order name/value pairs are added to the object is *not* preserved
|
||||
by the library. Therefore, iterating an object may return name/value pairs
|
||||
in a different order than they were originally stored. In fact, keys will
|
||||
be traversed in alphabetical order as `std::map` with `std::less` is used
|
||||
by default. Please note this behavior conforms to [RFC
|
||||
@note The order name/value pairs are added to the object is *not*
|
||||
preserved by the library. Therefore, iterating an object may return
|
||||
name/value pairs in a different order than they were originally stored. In
|
||||
fact, keys will be traversed in alphabetical order as `std::map` with
|
||||
`std::less` is used by default. Please note this behavior conforms to [RFC
|
||||
7159](http://rfc7159.net/rfc7159), because any order implements the
|
||||
specified "unordered" nature of JSON objects.
|
||||
*/
|
||||
|
@ -378,8 +379,8 @@ class basic_json
|
|||
|
||||
In this class, the array's limit of nesting is not constraint explicitly.
|
||||
However, a maximum depth of nesting may be introduced by the compiler or
|
||||
runtime environment. A theoretical limit can be queried by calling the @ref
|
||||
max_size function of a JSON array.
|
||||
runtime environment. A theoretical limit can be queried by calling the
|
||||
@ref max_size function of a JSON array.
|
||||
|
||||
#### Storage
|
||||
|
||||
|
@ -399,8 +400,8 @@ class basic_json
|
|||
> A string is a sequence of zero or more Unicode characters.
|
||||
|
||||
To store objects in C++, a type is defined by the template parameter
|
||||
described below. Unicode values are split by the JSON class into byte-sized
|
||||
characters during deserialization.
|
||||
described below. Unicode values are split by the JSON class into
|
||||
byte-sized characters during deserialization.
|
||||
|
||||
@tparam StringType the container to store strings (e.g., `std::string`).
|
||||
Note this container is used for keys/names in objects, see @ref object_t.
|
||||
|
@ -469,19 +470,19 @@ class basic_json
|
|||
@brief a type for a number (integer)
|
||||
|
||||
[RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
|
||||
> The representation of numbers is similar to that used in most programming
|
||||
> languages. A number is represented in base 10 using decimal digits. It
|
||||
> contains an integer component that may be prefixed with an optional minus
|
||||
> sign, which may be followed by a fraction part and/or an exponent part.
|
||||
> Leading zeros are not allowed. (...) Numeric values that cannot be
|
||||
> represented in the grammar below (such as Infinity and NaN) are not
|
||||
> permitted.
|
||||
> The representation of numbers is similar to that used in most
|
||||
> programming languages. A number is represented in base 10 using decimal
|
||||
> digits. It contains an integer component that may be prefixed with an
|
||||
> optional minus sign, which may be followed by a fraction part and/or an
|
||||
> exponent part. Leading zeros are not allowed. (...) Numeric values that
|
||||
> cannot be represented in the grammar below (such as Infinity and NaN)
|
||||
> are not permitted.
|
||||
|
||||
This description includes both integer and floating-point numbers. However,
|
||||
C++ allows more precise storage if it is known whether the number is a
|
||||
signed integer, an unsigned integer or a floating-point number. Therefore,
|
||||
three different types, @ref number_integer_t, @ref number_unsigned_t and
|
||||
@ref number_float_t are used.
|
||||
This description includes both integer and floating-point numbers.
|
||||
However, C++ allows more precise storage if it is known whether the number
|
||||
is a signed integer, an unsigned integer or a floating-point number.
|
||||
Therefore, three different types, @ref number_integer_t, @ref
|
||||
number_unsigned_t and @ref number_float_t are used.
|
||||
|
||||
To store integer numbers in C++, a type is defined by the template
|
||||
parameter @a NumberIntegerType which chooses the type to use.
|
||||
|
@ -500,8 +501,8 @@ class basic_json
|
|||
- The restrictions about leading zeros is not enforced in C++. Instead,
|
||||
leading zeros in integer literals lead to an interpretation as octal
|
||||
number. Internally, the value will be stored as decimal number. For
|
||||
instance, the C++ integer literal `010` will be serialized to `8`. During
|
||||
deserialization, leading zeros yield an error.
|
||||
instance, the C++ integer literal `010` will be serialized to `8`.
|
||||
During deserialization, leading zeros yield an error.
|
||||
- Not-a-number (NaN) values will be serialized to `null`.
|
||||
|
||||
#### Limits
|
||||
|
@ -512,9 +513,10 @@ class basic_json
|
|||
When the default type is used, the maximal integer number that can be
|
||||
stored is `9223372036854775807` (INT64_MAX) and the minimal integer number
|
||||
that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers
|
||||
that are out of range will yield over/underflow when used in a constructor.
|
||||
During deserialization, too large or small integer numbers will be
|
||||
automatically be stored as @ref number_unsigned_t or @ref number_float_t.
|
||||
that are out of range will yield over/underflow when used in a
|
||||
constructor. During deserialization, too large or small integer numbers
|
||||
will be automatically be stored as @ref number_unsigned_t or @ref
|
||||
number_float_t.
|
||||
|
||||
[RFC 7159](http://rfc7159.net/rfc7159) further states:
|
||||
> Note that when such software is used, numbers that are integers and are
|
||||
|
@ -540,27 +542,27 @@ class basic_json
|
|||
@brief a type for a number (unsigned)
|
||||
|
||||
[RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
|
||||
> The representation of numbers is similar to that used in most programming
|
||||
> languages. A number is represented in base 10 using decimal digits. It
|
||||
> contains an integer component that may be prefixed with an optional minus
|
||||
> sign, which may be followed by a fraction part and/or an exponent part.
|
||||
> Leading zeros are not allowed. (...) Numeric values that cannot be
|
||||
> represented in the grammar below (such as Infinity and NaN) are not
|
||||
> permitted.
|
||||
> The representation of numbers is similar to that used in most
|
||||
> programming languages. A number is represented in base 10 using decimal
|
||||
> digits. It contains an integer component that may be prefixed with an
|
||||
> optional minus sign, which may be followed by a fraction part and/or an
|
||||
> exponent part. Leading zeros are not allowed. (...) Numeric values that
|
||||
> cannot be represented in the grammar below (such as Infinity and NaN)
|
||||
> are not permitted.
|
||||
|
||||
This description includes both integer and floating-point numbers. However,
|
||||
C++ allows more precise storage if it is known whether the number is a
|
||||
signed integer, an unsigned integer or a floating-point number. Therefore,
|
||||
three different types, @ref number_integer_t, @ref number_unsigned_t and
|
||||
@ref number_float_t are used.
|
||||
This description includes both integer and floating-point numbers.
|
||||
However, C++ allows more precise storage if it is known whether the number
|
||||
is a signed integer, an unsigned integer or a floating-point number.
|
||||
Therefore, three different types, @ref number_integer_t, @ref
|
||||
number_unsigned_t and @ref number_float_t are used.
|
||||
|
||||
To store unsigned integer numbers in C++, a type is defined by the template
|
||||
parameter @a NumberUnsignedType which chooses the type to use.
|
||||
To store unsigned integer numbers in C++, a type is defined by the
|
||||
template parameter @a NumberUnsignedType which chooses the type to use.
|
||||
|
||||
#### Default type
|
||||
|
||||
With the default values for @a NumberUnsignedType (`uint64_t`), the default
|
||||
value for @a number_unsigned_t is:
|
||||
With the default values for @a NumberUnsignedType (`uint64_t`), the
|
||||
default value for @a number_unsigned_t is:
|
||||
|
||||
@code {.cpp}
|
||||
uint64_t
|
||||
|
@ -571,8 +573,8 @@ class basic_json
|
|||
- The restrictions about leading zeros is not enforced in C++. Instead,
|
||||
leading zeros in integer literals lead to an interpretation as octal
|
||||
number. Internally, the value will be stored as decimal number. For
|
||||
instance, the C++ integer literal `010` will be serialized to `8`. During
|
||||
deserialization, leading zeros yield an error.
|
||||
instance, the C++ integer literal `010` will be serialized to `8`.
|
||||
During deserialization, leading zeros yield an error.
|
||||
- Not-a-number (NaN) values will be serialized to `null`.
|
||||
|
||||
#### Limits
|
||||
|
@ -612,19 +614,19 @@ class basic_json
|
|||
@brief a type for a number (floating-point)
|
||||
|
||||
[RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows:
|
||||
> The representation of numbers is similar to that used in most programming
|
||||
> languages. A number is represented in base 10 using decimal digits. It
|
||||
> contains an integer component that may be prefixed with an optional minus
|
||||
> sign, which may be followed by a fraction part and/or an exponent part.
|
||||
> Leading zeros are not allowed. (...) Numeric values that cannot be
|
||||
> represented in the grammar below (such as Infinity and NaN) are not
|
||||
> permitted.
|
||||
> The representation of numbers is similar to that used in most
|
||||
> programming languages. A number is represented in base 10 using decimal
|
||||
> digits. It contains an integer component that may be prefixed with an
|
||||
> optional minus sign, which may be followed by a fraction part and/or an
|
||||
> exponent part. Leading zeros are not allowed. (...) Numeric values that
|
||||
> cannot be represented in the grammar below (such as Infinity and NaN)
|
||||
> are not permitted.
|
||||
|
||||
This description includes both integer and floating-point numbers. However,
|
||||
C++ allows more precise storage if it is known whether the number is a
|
||||
signed integer, an unsigned integer or a floating-point number. Therefore,
|
||||
three different types, @ref number_integer_t, @ref number_unsigned_t and
|
||||
@ref number_float_t are used.
|
||||
This description includes both integer and floating-point numbers.
|
||||
However, C++ allows more precise storage if it is known whether the number
|
||||
is a signed integer, an unsigned integer or a floating-point number.
|
||||
Therefore, three different types, @ref number_integer_t, @ref
|
||||
number_unsigned_t and @ref number_float_t are used.
|
||||
|
||||
To store floating-point numbers in C++, a type is defined by the template
|
||||
parameter @a NumberFloatType which chooses the type to use.
|
||||
|
@ -641,8 +643,8 @@ class basic_json
|
|||
#### Default behavior
|
||||
|
||||
- The restrictions about leading zeros is not enforced in C++. Instead,
|
||||
leading zeros in floating-point literals will be ignored. Internally, the
|
||||
value will be stored as decimal number. For instance, the C++
|
||||
leading zeros in floating-point literals will be ignored. Internally,
|
||||
the value will be stored as decimal number. For instance, the C++
|
||||
floating-point literal `01.2` will be serialized to `1.2`. During
|
||||
deserialization, leading zeros yield an error.
|
||||
- Not-a-number (NaN) values will be serialized to `null`.
|
||||
|
@ -653,9 +655,9 @@ class basic_json
|
|||
> This specification allows implementations to set limits on the range and
|
||||
> precision of numbers accepted. Since software that implements IEEE
|
||||
> 754-2008 binary64 (double precision) numbers is generally available and
|
||||
> widely used, good interoperability can be achieved by implementations that
|
||||
> expect no more precision or range than these provide, in the sense that
|
||||
> implementations will approximate JSON numbers within the expected
|
||||
> widely used, good interoperability can be achieved by implementations
|
||||
> that expect no more precision or range than these provide, in the sense
|
||||
> that implementations will approximate JSON numbers within the expected
|
||||
> precision.
|
||||
|
||||
This implementation does exactly follow this approach, as it uses double
|
||||
|
@ -938,9 +940,9 @@ class basic_json
|
|||
influenced. When passed to @ref parse(std::istream&, parser_callback_t) or
|
||||
@ref parse(const string_t&, parser_callback_t), it is called on certain
|
||||
events (passed as @ref parse_event_t via parameter @a event) with a set
|
||||
recursion depth @a depth and context JSON value @a parsed. The return value
|
||||
of the callback function is a boolean indicating whether the element that
|
||||
emitted the callback shall be kept or not.
|
||||
recursion depth @a depth and context JSON value @a parsed. The return
|
||||
value of the callback function is a boolean indicating whether the element
|
||||
that emitted the callback shall be kept or not.
|
||||
|
||||
We distinguish six scenarios (determined by the event type) in which the
|
||||
callback function can be called. The following table describes the values
|
||||
|
@ -960,8 +962,8 @@ class basic_json
|
|||
|
||||
- Discarded values in structured types are skipped. That is, the parser
|
||||
will behave as if the discarded value was never read.
|
||||
- In case a value outside a structured type is skipped, it is replaced with
|
||||
`null`. This case happens if the top-level element is skipped.
|
||||
- In case a value outside a structured type is skipped, it is replaced
|
||||
with `null`. This case happens if the top-level element is skipped.
|
||||
|
||||
@param[in] depth the depth of the recursion during parsing
|
||||
|
||||
|
@ -1065,8 +1067,8 @@ class basic_json
|
|||
Create a `null` JSON value. This is the explicitly version of the `null`
|
||||
value constructor as it takes a null pointer as parameter. It allows to
|
||||
create `null` values by explicitly assigning a `nullptr` to a JSON value.
|
||||
The passed null pointer itself is not read -- it is only used to choose the
|
||||
right constructor.
|
||||
The passed null pointer itself is not read -- it is only used to choose
|
||||
the right constructor.
|
||||
|
||||
@complexity Constant.
|
||||
|
||||
|
@ -1096,8 +1098,8 @@ class basic_json
|
|||
|
||||
@throw std::bad_alloc if allocation for object value fails
|
||||
|
||||
@liveexample{The following code shows the constructor with an @ref object_t
|
||||
parameter.,basic_json__object_t}
|
||||
@liveexample{The following code shows the constructor with an @ref
|
||||
object_t parameter.,basic_json__object_t}
|
||||
|
||||
@sa @ref basic_json(const CompatibleObjectType&) -- create an object value
|
||||
from a compatible STL container
|
||||
|
@ -1177,11 +1179,11 @@ class basic_json
|
|||
any type @a CompatibleArrayType that can be used to construct values of
|
||||
type @ref array_t.
|
||||
|
||||
@tparam CompatibleArrayType An object type whose `value_type` is compatible
|
||||
to @ref array_t. Examples include `std::vector`, `std::deque`, `std::list`,
|
||||
`std::forward_list`, `std::array`, `std::set`, `std::unordered_set`,
|
||||
`std::multiset`, and `unordered_multiset` with a `value_type` from which a
|
||||
@ref basic_json value can be constructed.
|
||||
@tparam CompatibleArrayType An object type whose `value_type` is
|
||||
compatible to @ref array_t. Examples include `std::vector`, `std::deque`,
|
||||
`std::list`, `std::forward_list`, `std::array`, `std::set`,
|
||||
`std::unordered_set`, `std::multiset`, and `unordered_multiset` with a
|
||||
`value_type` from which a @ref basic_json value can be constructed.
|
||||
|
||||
@param[in] val a value for the array
|
||||
|
||||
|
@ -1225,8 +1227,8 @@ class basic_json
|
|||
|
||||
@throw std::bad_alloc if allocation for string value fails
|
||||
|
||||
@liveexample{The following code shows the constructor with an @ref string_t
|
||||
parameter.,basic_json__string_t}
|
||||
@liveexample{The following code shows the constructor with an @ref
|
||||
string_t parameter.,basic_json__string_t}
|
||||
|
||||
@sa @ref basic_json(const typename string_t::value_type*) -- create a
|
||||
string value from a character pointer
|
||||
|
@ -1318,9 +1320,9 @@ class basic_json
|
|||
Create an integer number JSON value with a given content.
|
||||
|
||||
@tparam T A helper type to remove this function via SFINAE in case @ref
|
||||
number_integer_t is the same as `int`. In this case, this constructor would
|
||||
have the same signature as @ref basic_json(const int value). Note the
|
||||
helper type @a T is not visible in this constructor's interface.
|
||||
number_integer_t is the same as `int`. In this case, this constructor
|
||||
would have the same signature as @ref basic_json(const int value). Note
|
||||
the helper type @a T is not visible in this constructor's interface.
|
||||
|
||||
@param[in] val an integer to create a JSON number from
|
||||
|
||||
|
@ -1355,8 +1357,8 @@ class basic_json
|
|||
@note This constructor allows to pass enums directly to a constructor. As
|
||||
C++ has no way of specifying the type of an anonymous enum explicitly, we
|
||||
can only rely on the fact that such values implicitly convert to int. As
|
||||
int may already be the same type of number_integer_t, we may need to switch
|
||||
off the constructor @ref basic_json(const number_integer_t).
|
||||
int may already be the same type of number_integer_t, we may need to
|
||||
switch off the constructor @ref basic_json(const number_integer_t).
|
||||
|
||||
@complexity Constant.
|
||||
|
||||
|
@ -1383,8 +1385,8 @@ class basic_json
|
|||
construct values of type @ref number_integer_t.
|
||||
|
||||
@tparam CompatibleNumberIntegerType An integer type which is compatible to
|
||||
@ref number_integer_t. Examples include the types `int`, `int32_t`, `long`,
|
||||
and `short`.
|
||||
@ref number_integer_t. Examples include the types `int`, `int32_t`,
|
||||
`long`, and `short`.
|
||||
|
||||
@param[in] val an integer to create a JSON number from
|
||||
|
||||
|
@ -1442,12 +1444,12 @@ class basic_json
|
|||
/*!
|
||||
@brief create an unsigned number (implicit)
|
||||
|
||||
Create an unsigned number JSON value with a given content. This constructor
|
||||
allows any type @a CompatibleNumberUnsignedType that can be used to
|
||||
construct values of type @ref number_unsigned_t.
|
||||
Create an unsigned number JSON value with a given content. This
|
||||
constructor allows any type @a CompatibleNumberUnsignedType that can be
|
||||
used to construct values of type @ref number_unsigned_t.
|
||||
|
||||
@tparam CompatibleNumberUnsignedType An integer type which is compatible to
|
||||
@ref number_unsigned_t. Examples may include the types `unsigned int`,
|
||||
@tparam CompatibleNumberUnsignedType An integer type which is compatible
|
||||
to @ref number_unsigned_t. Examples may include the types `unsigned int`,
|
||||
`uint32_t`, or `unsigned short`.
|
||||
|
||||
@param[in] val an unsigned integer to create a JSON number from
|
||||
|
@ -1480,8 +1482,8 @@ class basic_json
|
|||
|
||||
@note [RFC 7159](http://www.rfc-editor.org/rfc/rfc7159.txt), section 6
|
||||
disallows NaN values:
|
||||
> Numeric values that cannot be represented in the grammar below (such
|
||||
> as Infinity and NaN) are not permitted.
|
||||
> Numeric values that cannot be represented in the grammar below (such as
|
||||
> Infinity and NaN) are not permitted.
|
||||
In case the parameter @a val is not a number, a JSON null value is
|
||||
created instead.
|
||||
|
||||
|
@ -1513,15 +1515,16 @@ class basic_json
|
|||
constructor allows any type @a CompatibleNumberFloatType that can be used
|
||||
to construct values of type @ref number_float_t.
|
||||
|
||||
@tparam CompatibleNumberFloatType A floating-point type which is compatible
|
||||
to @ref number_float_t. Examples may include the types `float` or `double`.
|
||||
@tparam CompatibleNumberFloatType A floating-point type which is
|
||||
compatible to @ref number_float_t. Examples may include the types `float`
|
||||
or `double`.
|
||||
|
||||
@param[in] val a floating-point to create a JSON number from
|
||||
|
||||
@note [RFC 7159](http://www.rfc-editor.org/rfc/rfc7159.txt), section 6
|
||||
disallows NaN values:
|
||||
> Numeric values that cannot be represented in the grammar below (such
|
||||
> as Infinity and NaN) are not permitted.
|
||||
> Numeric values that cannot be represented in the grammar below (such as
|
||||
> Infinity and NaN) are not permitted.
|
||||
In case the parameter @a val is not a number, a JSON null value is
|
||||
created instead.
|
||||
|
||||
|
@ -1592,13 +1595,13 @@ class basic_json
|
|||
used by the functions @ref array(std::initializer_list<basic_json>) and
|
||||
@ref object(std::initializer_list<basic_json>).
|
||||
|
||||
@param[in] manual_type internal parameter; when @a type_deduction is set to
|
||||
`false`, the created JSON value will use the provided type (only @ref
|
||||
@param[in] manual_type internal parameter; when @a type_deduction is set
|
||||
to `false`, the created JSON value will use the provided type (only @ref
|
||||
value_t::array and @ref value_t::object are valid); when @a type_deduction
|
||||
is set to `true`, this parameter has no effect
|
||||
|
||||
@throw std::domain_error if @a type_deduction is `false`, @a manual_type is
|
||||
`value_t::object`, but @a init contains an element which is not a pair
|
||||
@throw std::domain_error if @a type_deduction is `false`, @a manual_type
|
||||
is `value_t::object`, but @a init contains an element which is not a pair
|
||||
whose first element is a string; example: `"cannot create object from
|
||||
initializer list"`
|
||||
|
||||
|
@ -1679,8 +1682,8 @@ class basic_json
|
|||
list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the
|
||||
initializer list is empty, the empty array `[]` is created.
|
||||
|
||||
@note This function is only needed to express two edge cases that cannot be
|
||||
realized with the initializer list constructor (@ref
|
||||
@note This function is only needed to express two edge cases that cannot
|
||||
be realized with the initializer list constructor (@ref
|
||||
basic_json(std::initializer_list<basic_json>, bool, value_t)). These cases
|
||||
are:
|
||||
1. creating an array whose elements are all pairs whose first element is a
|
||||
|
@ -1723,8 +1726,8 @@ class basic_json
|
|||
related function @ref array(std::initializer_list<basic_json>), there are
|
||||
no cases which can only be expressed by this function. That is, any
|
||||
initializer list @a init can also be passed to the initializer list
|
||||
constructor
|
||||
@ref basic_json(std::initializer_list<basic_json>, bool, value_t).
|
||||
constructor @ref basic_json(std::initializer_list<basic_json>, bool,
|
||||
value_t).
|
||||
|
||||
@param[in] init initializer list to create an object from (optional)
|
||||
|
||||
|
@ -1755,8 +1758,8 @@ class basic_json
|
|||
/*!
|
||||
@brief construct an array with count copies of given value
|
||||
|
||||
Constructs a JSON array value by creating @a cnt copies of a passed
|
||||
value. In case @a cnt is `0`, an empty array is created. As postcondition,
|
||||
Constructs a JSON array value by creating @a cnt copies of a passed value.
|
||||
In case @a cnt is `0`, an empty array is created. As postcondition,
|
||||
`std::distance(begin(),end()) == cnt` holds.
|
||||
|
||||
@param[in] cnt the number of JSON copies of @a val to create
|
||||
|
@ -1784,8 +1787,8 @@ class basic_json
|
|||
- In case of primitive types (number, boolean, or string), @a first must
|
||||
be `begin()` and @a last must be `end()`. In this case, the value is
|
||||
copied. Otherwise, std::out_of_range is thrown.
|
||||
- In case of structured types (array, object), the constructor behaves
|
||||
as similar versions for `std::vector`.
|
||||
- In case of structured types (array, object), the constructor behaves as
|
||||
similar versions for `std::vector`.
|
||||
- In case of a null type, std::domain_error is thrown.
|
||||
|
||||
@tparam InputIT an input iterator type (@ref iterator or @ref
|
||||
|
@ -1800,8 +1803,8 @@ class basic_json
|
|||
boolean, or string) where an out of range error can be detected easily;
|
||||
example: `"iterators out of range"`
|
||||
@throw std::bad_alloc if allocation for object, array, or string fails
|
||||
@throw std::domain_error if called with a null value; example: `"cannot use
|
||||
construct with iterators from null"`
|
||||
@throw std::domain_error if called with a null value; example: `"cannot
|
||||
use construct with iterators from null"`
|
||||
|
||||
@complexity Linear in distance between @a first and @a last.
|
||||
|
||||
|
@ -2042,8 +2045,8 @@ class basic_json
|
|||
@brief copy assignment
|
||||
|
||||
Copy assignment operator. Copies a JSON value via the "copy and swap"
|
||||
strategy: It is expressed in terms of the copy constructor, destructor, and
|
||||
the swap() member function.
|
||||
strategy: It is expressed in terms of the copy constructor, destructor,
|
||||
and the swap() member function.
|
||||
|
||||
@param[in] other value to copy from
|
||||
|
||||
|
@ -2143,8 +2146,8 @@ class basic_json
|
|||
parameter.
|
||||
|
||||
@param[in] indent if indent is nonnegative, then array elements and object
|
||||
members will be pretty-printed with that indent level. An indent level of 0
|
||||
will only insert newlines. -1 (the default) selects the most compact
|
||||
members will be pretty-printed with that indent level. An indent level of
|
||||
0 will only insert newlines. -1 (the default) selects the most compact
|
||||
representation
|
||||
|
||||
@return string containing the serialization of the JSON value
|
||||
|
@ -2976,8 +2979,8 @@ class basic_json
|
|||
/*!
|
||||
@brief get a reference value (implicit)
|
||||
|
||||
Implict reference access to the internally stored JSON value. No copies are
|
||||
made.
|
||||
Implict reference access to the internally stored JSON value. No copies
|
||||
are made.
|
||||
|
||||
@warning Writing data to the referee of the result yields an undefined
|
||||
state.
|
||||
|
@ -3027,14 +3030,14 @@ class basic_json
|
|||
/*!
|
||||
@brief get a value (implicit)
|
||||
|
||||
Implicit type conversion between the JSON value and a compatible value. The
|
||||
call is realized by calling @ref get() const.
|
||||
Implicit type conversion between the JSON value and a compatible value.
|
||||
The call is realized by calling @ref get() const.
|
||||
|
||||
@tparam ValueType non-pointer type compatible to the JSON value, for
|
||||
instance `int` for JSON integer numbers, `bool` for JSON booleans, or
|
||||
`std::vector` types for JSON arrays. The character type of @ref string_t as
|
||||
well as an initializer list of this type is excluded to avoid ambiguities
|
||||
as these types implicitly convert to `std::string`.
|
||||
`std::vector` types for JSON arrays. The character type of @ref string_t
|
||||
as well as an initializer list of this type is excluded to avoid
|
||||
ambiguities as these types implicitly convert to `std::string`.
|
||||
|
||||
@return copy of the JSON value, converted to type @a ValueType
|
||||
|
||||
|
@ -3123,8 +3126,8 @@ class basic_json
|
|||
/*!
|
||||
@brief access specified array element with bounds checking
|
||||
|
||||
Returns a const reference to the element at specified location @a idx, with
|
||||
bounds checking.
|
||||
Returns a const reference to the element at specified location @a idx,
|
||||
with bounds checking.
|
||||
|
||||
@param[in] idx index of the element to access
|
||||
|
||||
|
@ -3215,8 +3218,8 @@ class basic_json
|
|||
/*!
|
||||
@brief access specified object element with bounds checking
|
||||
|
||||
Returns a const reference to the element at with specified key @a key, with
|
||||
bounds checking.
|
||||
Returns a const reference to the element at with specified key @a key,
|
||||
with bounds checking.
|
||||
|
||||
@param[in] key key of the element to access
|
||||
|
||||
|
@ -3690,8 +3693,8 @@ class basic_json
|
|||
|
||||
@complexity Constant.
|
||||
|
||||
@pre The JSON value must not be `null` (would throw `std::out_of_range`) or
|
||||
an empty array or object (undefined behavior, guarded by assertions).
|
||||
@pre The JSON value must not be `null` (would throw `std::out_of_range`)
|
||||
or an empty array or object (undefined behavior, guarded by assertions).
|
||||
@post The JSON value remains unchanged.
|
||||
|
||||
@throw std::out_of_range when called on `null` value
|
||||
|
@ -3732,8 +3735,8 @@ class basic_json
|
|||
|
||||
@complexity Constant.
|
||||
|
||||
@pre The JSON value must not be `null` (would throw `std::out_of_range`) or
|
||||
an empty array or object (undefined behavior, guarded by assertions).
|
||||
@pre The JSON value must not be `null` (would throw `std::out_of_range`)
|
||||
or an empty array or object (undefined behavior, guarded by assertions).
|
||||
@post The JSON value remains unchanged.
|
||||
|
||||
@throw std::out_of_range when called on `null` value.
|
||||
|
@ -3772,16 +3775,16 @@ class basic_json
|
|||
will be `null`.
|
||||
|
||||
@param[in] pos iterator to the element to remove
|
||||
@return Iterator following the last removed element. If the iterator @a pos
|
||||
refers to the last element, the `end()` iterator is returned.
|
||||
@return Iterator following the last removed element. If the iterator @a
|
||||
pos refers to the last element, the `end()` iterator is returned.
|
||||
|
||||
@tparam InteratorType an @ref iterator or @ref const_iterator
|
||||
|
||||
@post Invalidates iterators and references at or after the point of the
|
||||
erase, including the `end()` iterator.
|
||||
|
||||
@throw std::domain_error if called on a `null` value; example: `"cannot use
|
||||
erase() with null"`
|
||||
@throw std::domain_error if called on a `null` value; example: `"cannot
|
||||
use erase() with null"`
|
||||
@throw std::domain_error if called on an iterator which does not belong to
|
||||
the current JSON value; example: `"iterator does not fit current value"`
|
||||
@throw std::out_of_range if called on a primitive type with invalid
|
||||
|
@ -3797,12 +3800,12 @@ class basic_json
|
|||
@liveexample{The example shows the result of `erase()` for different JSON
|
||||
types.,erase__IteratorType}
|
||||
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in the
|
||||
given range
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in
|
||||
the given range
|
||||
@sa @ref erase(const typename object_t::key_type&) -- removes the element
|
||||
from an object at the given key
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at the
|
||||
given index
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at
|
||||
the given index
|
||||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
|
@ -3871,9 +3874,9 @@ class basic_json
|
|||
/*!
|
||||
@brief remove elements given an iterator range
|
||||
|
||||
Removes the element specified by the range `[first; last)`. The iterator @a
|
||||
first does not need to be dereferenceable if `first == last`: erasing an
|
||||
empty range is a no-op.
|
||||
Removes the element specified by the range `[first; last)`. The iterator
|
||||
@a first does not need to be dereferenceable if `first == last`: erasing
|
||||
an empty range is a no-op.
|
||||
|
||||
If called on a primitive type other than `null`, the resulting JSON value
|
||||
will be `null`.
|
||||
|
@ -3888,8 +3891,8 @@ class basic_json
|
|||
@post Invalidates iterators and references at or after the point of the
|
||||
erase, including the `end()` iterator.
|
||||
|
||||
@throw std::domain_error if called on a `null` value; example: `"cannot use
|
||||
erase() with null"`
|
||||
@throw std::domain_error if called on a `null` value; example: `"cannot
|
||||
use erase() with null"`
|
||||
@throw std::domain_error if called on iterators which does not belong to
|
||||
the current JSON value; example: `"iterators do not fit current value"`
|
||||
@throw std::out_of_range if called on a primitive type with invalid
|
||||
|
@ -3909,8 +3912,8 @@ class basic_json
|
|||
@sa @ref erase(InteratorType) -- removes the element at a given position
|
||||
@sa @ref erase(const typename object_t::key_type&) -- removes the element
|
||||
from an object at the given key
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at the
|
||||
given index
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at
|
||||
the given index
|
||||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
|
@ -3986,8 +3989,8 @@ class basic_json
|
|||
@param[in] key value of the elements to remove
|
||||
|
||||
@return Number of elements removed. If @a ObjectType is the default
|
||||
`std::map` type, the return value will always be `0` (@a key was not found)
|
||||
or `1` (@a key was found).
|
||||
`std::map` type, the return value will always be `0` (@a key was not
|
||||
found) or `1` (@a key was found).
|
||||
|
||||
@post References and iterators to the erased elements are invalidated.
|
||||
Other references and iterators are not affected.
|
||||
|
@ -4000,10 +4003,10 @@ class basic_json
|
|||
@liveexample{The example shows the effect of `erase()`.,erase__key_type}
|
||||
|
||||
@sa @ref erase(InteratorType) -- removes the element at a given position
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in the
|
||||
given range
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at the
|
||||
given index
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in
|
||||
the given range
|
||||
@sa @ref erase(const size_type) -- removes the element from an array at
|
||||
the given index
|
||||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
|
@ -4038,8 +4041,8 @@ class basic_json
|
|||
@liveexample{The example shows the effect of `erase()`.,erase__size_type}
|
||||
|
||||
@sa @ref erase(InteratorType) -- removes the element at a given position
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in the
|
||||
given range
|
||||
@sa @ref erase(InteratorType, InteratorType) -- removes the elements in
|
||||
the given range
|
||||
@sa @ref erase(const typename object_t::key_type&) -- removes the element
|
||||
from an object at the given key
|
||||
|
||||
|
@ -4078,7 +4081,8 @@ class basic_json
|
|||
@brief find an element in a JSON object
|
||||
|
||||
Finds an element in a JSON object with key equivalent to @a key. If the
|
||||
element is not found or the JSON value is not an object, end() is returned.
|
||||
element is not found or the JSON value is not an object, end() is
|
||||
returned.
|
||||
|
||||
@param[in] key key value of the element to search for
|
||||
|
||||
|
@ -4438,9 +4442,9 @@ class basic_json
|
|||
@brief wrapper to access iterator member functions in range-based for
|
||||
|
||||
This function allows to access @ref iterator::key() and @ref
|
||||
iterator::value() during range-based for loops. In these loops, a reference
|
||||
to the JSON values is returned, so there is no access to the underlying
|
||||
iterator.
|
||||
iterator::value() during range-based for loops. In these loops, a
|
||||
reference to the JSON values is returned, so there is no access to the
|
||||
underlying iterator.
|
||||
|
||||
@note The name of this function is not yet final and may change in the
|
||||
future.
|
||||
|
@ -4484,8 +4488,8 @@ class basic_json
|
|||
object | result of function `object_t::empty()`
|
||||
array | result of function `array_t::empty()`
|
||||
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy the
|
||||
Container concept; that is, their `empty()` functions have constant
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy
|
||||
the Container concept; that is, their `empty()` functions have constant
|
||||
complexity.
|
||||
|
||||
@requirement This function helps `basic_json` satisfying the
|
||||
|
@ -4547,8 +4551,9 @@ class basic_json
|
|||
object | result of function object_t::size()
|
||||
array | result of function array_t::size()
|
||||
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy the
|
||||
Container concept; that is, their size() functions have constant complexity.
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy
|
||||
the Container concept; that is, their size() functions have constant
|
||||
complexity.
|
||||
|
||||
@requirement This function helps `basic_json` satisfying the
|
||||
[Container](http://en.cppreference.com/w/cpp/concept/Container)
|
||||
|
@ -4612,8 +4617,8 @@ class basic_json
|
|||
object | result of function `object_t::max_size()`
|
||||
array | result of function `array_t::max_size()`
|
||||
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy the
|
||||
Container concept; that is, their `max_size()` functions have constant
|
||||
@complexity Constant, as long as @ref array_t and @ref object_t satisfy
|
||||
the Container concept; that is, their `max_size()` functions have constant
|
||||
complexity.
|
||||
|
||||
@requirement This function helps `basic_json` satisfying the
|
||||
|
@ -4835,8 +4840,8 @@ class basic_json
|
|||
@brief add an object to an object
|
||||
|
||||
Inserts the given element @a val to the JSON object. If the function is
|
||||
called on a JSON null value, an empty object is created before inserting @a
|
||||
val.
|
||||
called on a JSON null value, an empty object is created before inserting
|
||||
@a val.
|
||||
|
||||
@param[in] val the value to add to the JSON object
|
||||
|
||||
|
@ -5111,8 +5116,8 @@ class basic_json
|
|||
@return iterator pointing to the first element inserted, or @a pos if
|
||||
`ilist` is empty
|
||||
|
||||
@complexity Linear in `ilist.size()` plus linear in the distance between @a
|
||||
pos and end of the container.
|
||||
@complexity Linear in `ilist.size()` plus linear in the distance between
|
||||
@a pos and end of the container.
|
||||
|
||||
@liveexample{The example shows how `insert()` is used.,insert__ilist}
|
||||
|
||||
|
@ -5757,8 +5762,8 @@ class basic_json
|
|||
|
||||
@note A UTF-8 byte order mark is silently ignored.
|
||||
|
||||
@liveexample{The example below demonstrates the `parse()` function with and
|
||||
without callback function.,parse__string__parser_callback_t}
|
||||
@liveexample{The example below demonstrates the `parse()` function with
|
||||
and without callback function.,parse__string__parser_callback_t}
|
||||
|
||||
@sa @ref parse(std::istream&, parser_callback_t) for a version that reads
|
||||
from an input stream
|
||||
|
@ -5786,11 +5791,11 @@ class basic_json
|
|||
|
||||
@note A UTF-8 byte order mark is silently ignored.
|
||||
|
||||
@liveexample{The example below demonstrates the `parse()` function with and
|
||||
without callback function.,parse__istream__parser_callback_t}
|
||||
@liveexample{The example below demonstrates the `parse()` function with
|
||||
and without callback function.,parse__istream__parser_callback_t}
|
||||
|
||||
@sa @ref parse(const string_t&, parser_callback_t) for a version that reads
|
||||
from a string
|
||||
@sa @ref parse(const string_t&, parser_callback_t) for a version that
|
||||
reads from a string
|
||||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
|
@ -5923,8 +5928,8 @@ class basic_json
|
|||
/*!
|
||||
@brief escape a string
|
||||
|
||||
Escape a string by replacing certain special characters by a sequence of an
|
||||
escape character (backslash) and another character and other control
|
||||
Escape a string by replacing certain special characters by a sequence of
|
||||
an escape character (backslash) and another character and other control
|
||||
characters by a sequence of "\u" followed by a four-digit hex
|
||||
representation.
|
||||
|
||||
|
@ -6046,8 +6051,8 @@ class basic_json
|
|||
|
||||
This function is called by the public member function dump and organizes
|
||||
the serialization internally. The indentation level is propagated as
|
||||
additional parameter. In case of arrays and objects, the function is called
|
||||
recursively. Note that
|
||||
additional parameter. In case of arrays and objects, the function is
|
||||
called recursively. Note that
|
||||
|
||||
- strings and object keys are escaped using `escape_string()`
|
||||
- integer numbers are converted implicitly via `operator<<`
|
||||
|
@ -6241,8 +6246,8 @@ class basic_json
|
|||
{
|
||||
// Otherwise 6, 15 or 16 digits of precision allows
|
||||
// round-trip IEEE 754 string->float->string,
|
||||
// string->double->string or string->long double->string;
|
||||
// to be safe, we read this value from
|
||||
// string->double->string or string->long
|
||||
// double->string; to be safe, we read this value from
|
||||
// std::numeric_limits<number_float_t>::digits10
|
||||
std::stringstream ss;
|
||||
ss.imbue(std::locale(std::locale(), new DecimalSeparator)); // fix locale problems
|
||||
|
@ -7262,8 +7267,8 @@ class basic_json
|
|||
@brief lexical analysis
|
||||
|
||||
This class organizes the lexical analysis during JSON deserialization. The
|
||||
core of it is a scanner generated by [re2c](http://re2c.org) that processes
|
||||
a buffer and recognizes tokens according to RFC 7159.
|
||||
core of it is a scanner generated by [re2c](http://re2c.org) that
|
||||
processes a buffer and recognizes tokens according to RFC 7159.
|
||||
*/
|
||||
class lexer
|
||||
{
|
||||
|
@ -7569,13 +7574,14 @@ class basic_json
|
|||
|
||||
1. Escaped characters. In this case, a new character is constructed
|
||||
according to the nature of the escape. Some escapes create new
|
||||
characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied as
|
||||
is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape
|
||||
characters (e.g., `"\\n"` is replaced by `"\n"`), some are copied
|
||||
as is (e.g., `"\\\\"`). Furthermore, Unicode escapes of the shape
|
||||
`"\\uxxxx"` need special care. In this case, to_unicode takes care
|
||||
of the construction of the values.
|
||||
2. Unescaped characters are copied as is.
|
||||
|
||||
@return string value of current token without opening and closing quotes
|
||||
@return string value of current token without opening and closing
|
||||
quotes
|
||||
@throw std::out_of_range if to_unicode fails
|
||||
*/
|
||||
string_t get_string() const
|
||||
|
@ -7686,8 +7692,8 @@ class basic_json
|
|||
|
||||
This function (and its overloads) serves to select the most approprate
|
||||
standard floating point number parsing function based on the type
|
||||
supplied via the first parameter. Set this to
|
||||
@a static_cast<number_float_t*>(nullptr).
|
||||
supplied via the first parameter. Set this to @a
|
||||
static_cast<number_float_t*>(nullptr).
|
||||
|
||||
@param[in] type the @ref number_float_t in use
|
||||
|
||||
|
@ -7711,8 +7717,8 @@ class basic_json
|
|||
|
||||
This function (and its overloads) serves to select the most approprate
|
||||
standard floating point number parsing function based on the type
|
||||
supplied via the first parameter. Set this to
|
||||
@a static_cast<number_float_t*>(nullptr).
|
||||
supplied via the first parameter. Set this to @a
|
||||
static_cast<number_float_t*>(nullptr).
|
||||
|
||||
@param[in] type the @ref number_float_t in use
|
||||
|
||||
|
@ -7731,8 +7737,8 @@ class basic_json
|
|||
|
||||
This function (and its overloads) serves to select the most approprate
|
||||
standard floating point number parsing function based on the type
|
||||
supplied via the first parameter. Set this to
|
||||
@a static_cast<number_float_t*>(nullptr).
|
||||
supplied via the first parameter. Set this to @a
|
||||
static_cast<number_float_t*>(nullptr).
|
||||
|
||||
@param[in] type the @ref number_float_t in use
|
||||
|
||||
|
@ -7756,13 +7762,13 @@ class basic_json
|
|||
This function parses the integer component up to the radix point or
|
||||
exponent while collecting information about the 'floating point
|
||||
representation', which it stores in the result parameter. If there is
|
||||
no radix point or exponent, and the number can fit into a
|
||||
@ref number_integer_t or @ref number_unsigned_t then it sets the
|
||||
result parameter accordingly.
|
||||
no radix point or exponent, and the number can fit into a @ref
|
||||
number_integer_t or @ref number_unsigned_t then it sets the result
|
||||
parameter accordingly.
|
||||
|
||||
The 'floating point representation' includes the number of significant
|
||||
figures after the radix point, whether the number is in exponential
|
||||
or decimal form, the capitalization of the exponent marker, and if the
|
||||
figures after the radix point, whether the number is in exponential or
|
||||
decimal form, the capitalization of the exponent marker, and if the
|
||||
optional '+' is present in the exponent. This information is necessary
|
||||
to perform accurate round trips of floating point numbers.
|
||||
|
||||
|
@ -8725,11 +8731,11 @@ class basic_json
|
|||
throw std::domain_error("values in object must be primitive");
|
||||
}
|
||||
|
||||
// assign value to reference pointed to by JSON pointer;
|
||||
// Note that if the JSON pointer is "" (i.e., points to the
|
||||
// whole value), function get_and_create returns a reference
|
||||
// to result itself. An assignment will then create a
|
||||
// primitive value.
|
||||
// assign value to reference pointed to by JSON pointer; Note
|
||||
// that if the JSON pointer is "" (i.e., points to the whole
|
||||
// value), function get_and_create returns a reference to
|
||||
// result itself. An assignment will then create a primitive
|
||||
// value.
|
||||
json_pointer(element.first).get_and_create(result) = element.second;
|
||||
}
|
||||
|
||||
|
@ -8752,9 +8758,9 @@ class basic_json
|
|||
@brief access specified element via JSON Pointer
|
||||
|
||||
Uses a JSON pointer to retrieve a reference to the respective JSON value.
|
||||
No bound checking is performed. Similar to
|
||||
@ref operator[](const typename object_t::key_type&), `null` values
|
||||
are created in arrays and objects if necessary.
|
||||
No bound checking is performed. Similar to @ref operator[](const typename
|
||||
object_t::key_type&), `null` values are created in arrays and objects if
|
||||
necessary.
|
||||
|
||||
In particular:
|
||||
- If the JSON pointer points to an object key that does not exist, it
|
||||
|
@ -8841,8 +8847,8 @@ class basic_json
|
|||
/*!
|
||||
@brief access specified element via JSON Pointer
|
||||
|
||||
Returns a const reference to the element at with specified JSON pointer
|
||||
@a ptr, with bounds checking.
|
||||
Returns a const reference to the element at with specified JSON pointer @a
|
||||
ptr, with bounds checking.
|
||||
|
||||
@param[in] ptr JSON pointer to the desired element
|
||||
|
||||
|
@ -8866,10 +8872,10 @@ class basic_json
|
|||
/*!
|
||||
@brief return flattened JSON value
|
||||
|
||||
The function creates a JSON object whose keys are JSON pointers (see
|
||||
[RFC 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all
|
||||
primitive. The original JSON value can be restored using the
|
||||
@ref unflatten() function.
|
||||
The function creates a JSON object whose keys are JSON pointers (see [RFC
|
||||
6901](https://tools.ietf.org/html/rfc6901)) and whose values are all
|
||||
primitive. The original JSON value can be restored using the @ref
|
||||
unflatten() function.
|
||||
|
||||
@return an object that maps JSON pointers to primitve values
|
||||
|
||||
|
@ -8941,7 +8947,7 @@ class basic_json
|
|||
this funcion, a JSON Patch is applied to the current JSON value by
|
||||
executing all operations from the patch.
|
||||
|
||||
@param[in] patch JSON patch document
|
||||
@param[in] json_patch JSON patch document
|
||||
@return patched document
|
||||
|
||||
@note The application of a patch is atomic: Either all operations succeed
|
||||
|
@ -9402,8 +9408,8 @@ class basic_json
|
|||
/*!
|
||||
@brief default JSON class
|
||||
|
||||
This type is the default specialization of the @ref basic_json class which uses
|
||||
the standard template types.
|
||||
This type is the default specialization of the @ref basic_json class which
|
||||
uses the standard template types.
|
||||
|
||||
@since version 1.0.0
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue