# Renderd7-nightly: nlohmann::detail Namespace Reference

nlohmann::detail Namespace Reference

detail namespace with internal helper functions More...

## Namespaces

| dtoa_impl
| implements the Grisu2 algorithm for binary to decimal floating-point conversion.

## Classes

class | binary_reader
| deserialization of CBOR, MessagePack, and UBJSON values More...
class | binary_writer
| serialization to CBOR and MessagePack values More...
class | exception
| general exception of the basic_json class More...
class | file_input_adapter
class | input_stream_adapter
struct | internal_iterator
| an iterator value More...
class | invalid_iterator
| exception indicating errors with iterators More...
class | iter_impl
| a template for a bidirectional iterator for the basic_json class This class implements a both iterators (iterator and const_iterator) for the basic_json class. More...
class | iteration_proxy
| proxy class for the items() function More...
class | json_reverse_iterator
| a template for a reverse iterator class More...
class | json_sax_dom_parser
| SAX implementation to create a JSON value from SAX events. More...
class | lexer
| lexical analysis More...
class | other_error
| exception indicating other library errors More...
class | out_of_range
| exception indicating access out of the defined range More...
struct | output_adapter_protocol
| abstract output adapter interface More...
class | output_stream_adapter
| output adapter for output streams More...
class | output_string_adapter
| output adapter for basic_string More...
class | output_vector_adapter
| output adapter for byte vectors More...
class | parse_error
| exception indicating a parse error More...
class | parser
| syntax analysis More...
struct | position_t
| struct to capture the start position of the current token More...
class | type_error
| exception indicating executing a member function with a wrong type More...

## Typedefs

template<typename CharType >
using | output_adapter_t = std::shared_ptr< output_adapter_protocol< CharType > >
| a type to simplify interfaces

## Enumerations

enum | value_t : std::uint8_t { value_t::null, value_t::object, value_t::array, value_t::string, value_t::boolean, value_t::number_integer, value_t::number_unsigned, value_t::number_float, value_t::binary, value_t::discarded }
| the JSON type enumeration More...
enum | input_format_t
| the supported input formats
enum | cbor_tag_handler_t { cbor_tag_handler_t::error, cbor_tag_handler_t::ignore }
| how to treat CBOR tags More...
enum | parse_event_t : uint8_t { parse_event_t::object_start, parse_event_t::object_end, parse_event_t::array_start, parse_event_t::array_end, parse_event_t::key, parse_event_t::value }
enum | error_handler_t { error_handler_t::strict, error_handler_t::replace, error_handler_t::ignore }
| how to treat decoding errors More...

## Functions

bool | operator< (const value_t lhs, const value_t rhs) noexcept
| comparison operator for JSON types More...
template<typename BasicJsonType >
std::size_t | hash (const BasicJsonType &j)
| hash a JSON value More...
template<typename FloatType >
JSON_HEDLEY_RETURNS_NON_NULL char * | to_chars (char *first, const char *last, FloatType value)
| generates a decimal representation of the floating-point number value in [first, last). More...

## Detailed Description

detail namespace with internal helper functions

This namespace collects functions that should not be exposed, implementations of some basic_json methods, and meta-programming helpers.

Since
  version 2.1.0

## Enumeration Type Documentation

## value_t

enum nlohmann::detail::value_t : std::uint8_t

strong

the JSON type enumeration

This enumeration collects the different JSON types. It is internally used to distinguish the stored values, and the functions basic_json::is_null(), basic_json::is_object(), basic_json::is_array(), basic_json::is_string(), basic_json::is_boolean(), basic_json::is_number() (with basic_json::is_number_integer(), basic_json::is_number_unsigned(), and basic_json::is_number_float()), basic_json::is_discarded(), basic_json::is_primitive(), and basic_json::is_structured() rely on it.

Note
  There are three enumeration entries (number_integer, number_unsigned, and number_float), because the library distinguishes these three types for numbers: basic_json::number_unsigned_t is used for unsigned integers, basic_json::number_integer_t is used for signed integers, and basic_json::number_float_t is used for floating-point numbers or to approximate integers which do not fit in the limits of their respective type.

See also
  basic_json::basic_json(const value_t value_type) – create a JSON value with the default value for a given type

Since
  version 1.0.0

Enumerator
null | null value
object | object (unordered set of name/value pairs)
array | array (ordered collection of values)
string | string value
boolean | boolean value
number_integer | number value (signed integer)
number_unsigned | number value (unsigned integer)
number_float | number value (floating-point)
binary | binary array (ordered collection of bytes)
discarded | discarded by the parser callback function

## cbor_tag_handler_t

enum nlohmann::detail::cbor_tag_handler_t

strong

how to treat CBOR tags

Enumerator
error | throw a parse_error exception in case of a tag
ignore | ignore tags

## parse_event_t

enum nlohmann::detail::parse_event_t : uint8_t

strong

Enumerator
object_start | the parser read `{` and started to process a JSON object
object_end | the parser read `}` and finished processing a JSON object
array_start | the parser read `[` and started to process a JSON array
array_end | the parser read `]` and finished processing a JSON array
key | the parser read a key of a value in an object
value | the parser finished reading a JSON value

## error_handler_t

enum nlohmann::detail::error_handler_t

strong

how to treat decoding errors

Enumerator
strict | throw a type_error exception in case of invalid UTF-8
replace | replace invalid UTF-8 sequences with U+FFFD
ignore | ignore invalid UTF-8 sequences

## Function Documentation

## operator<()

bool nlohmann::detail::operator< | ( | const value_t | lhs,
|  | const value_t | rhs
| ) |  |

inlinenoexcept

comparison operator for JSON types

Returns an ordering that is similar to Python:

- order: null < boolean < number < object < array < string < binary
- furthermore, each type is not smaller than itself
- discarded values are not comparable
- binary is represented as a b"" string in python and directly comparable to a string; however, making a binary array directly comparable with a string would be surprising behavior in a JSON file.

Since
  version 1.0.0

## hash()

template<typename BasicJsonType >

std::size_t nlohmann::detail::hash | ( | const BasicJsonType & | j | ) |

hash a JSON value

The hash function tries to rely on std::hash where possible. Furthermore, the type of the JSON value is taken into account to have different hash values for null, 0, 0U, and false, etc.

Template Parameters

  BasicJsonType | basic_json specialization

Parameters

  j | JSON value to hash

Returns
  hash value of j

## to_chars()

template<typename FloatType >

JSON_HEDLEY_RETURNS_NON_NULL char* nlohmann::detail::to_chars | ( | char * | first,
|  | const char * | last,
|  | FloatType | value
| ) |  |

generates a decimal representation of the floating-point number value in [first, last).

The format of the resulting decimal representation is similar to printf's g format. Returns an iterator pointing past-the-end of the decimal representation.

Note
  The input number must be finite, i.e. NaN's and Inf's are not supported.
  The buffer must be large enough.
  The result is NOT null-terminated.