Eclipse SUMO - Simulation of Urban MObility
nlohmann::detail Namespace Reference

detail namespace with internal helper functions More...

Namespaces

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

Data Structures

class  binary_reader
 deserialization of CBOR, MessagePack, and UBJSON values More...
 
class  binary_writer
 serialization to CBOR and MessagePack values More...
 
struct  conjunction
 
struct  conjunction< B1 >
 
struct  conjunction< B1, Bn... >
 
struct  detector
 
struct  detector< Default, void_t< Op< Args... > >, Op, Args... >
 
class  exception
 general exception of the basic_json class More...
 
struct  external_constructor
 
struct  external_constructor< value_t::array >
 
struct  external_constructor< value_t::binary >
 
struct  external_constructor< value_t::boolean >
 
struct  external_constructor< value_t::number_float >
 
struct  external_constructor< value_t::number_integer >
 
struct  external_constructor< value_t::number_unsigned >
 
struct  external_constructor< value_t::object >
 
struct  external_constructor< value_t::string >
 
class  file_input_adapter
 
struct  from_json_fn
 
struct  has_from_json
 
struct  has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >
 
struct  has_non_default_from_json
 
struct  has_non_default_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >
 
struct  has_to_json
 
struct  has_to_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >
 
struct  identity_tag
 
class  input_stream_adapter
 
struct  integer_sequence
 
struct  internal_iterator
 an iterator value More...
 
class  invalid_iterator
 exception indicating errors with iterators More...
 
struct  is_basic_json
 
struct  is_basic_json< NLOHMANN_BASIC_JSON_TPL >
 
struct  is_compatible_array_type
 
struct  is_compatible_array_type_impl
 
struct  is_compatible_array_type_impl< BasicJsonType, CompatibleArrayType, enable_if_t< is_detected< iterator_t, CompatibleArrayType >::value &&is_iterator_traits< iterator_traits< detected_t< iterator_t, CompatibleArrayType > > >::value &&!std::is_same< CompatibleArrayType, detected_t< range_value_t, CompatibleArrayType > >::value > >
 
struct  is_compatible_integer_type
 
struct  is_compatible_integer_type_impl
 
struct  is_compatible_integer_type_impl< RealIntegerType, CompatibleNumberIntegerType, enable_if_t< std::is_integral< RealIntegerType >::value &&std::is_integral< CompatibleNumberIntegerType >::value &&!std::is_same< bool, CompatibleNumberIntegerType >::value > >
 
struct  is_compatible_object_type
 
struct  is_compatible_object_type_impl
 
struct  is_compatible_object_type_impl< BasicJsonType, CompatibleObjectType, enable_if_t< is_detected< mapped_type_t, CompatibleObjectType >::value &&is_detected< key_type_t, CompatibleObjectType >::value > >
 
struct  is_compatible_string_type
 
struct  is_compatible_type
 
struct  is_compatible_type_impl
 
struct  is_compatible_type_impl< BasicJsonType, CompatibleType, enable_if_t< is_complete_type< CompatibleType >::value > >
 
struct  is_complete_type
 
struct  is_complete_type< T, decltype(void(sizeof(T)))>
 
struct  is_constructible
 
struct  is_constructible< const std::pair< T1, T2 > >
 
struct  is_constructible< const std::tuple< Ts... > >
 
struct  is_constructible< std::pair< T1, T2 > >
 
struct  is_constructible< std::tuple< Ts... > >
 
struct  is_constructible_array_type
 
struct  is_constructible_array_type_impl
 
struct  is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< !std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value &&!is_compatible_string_type< BasicJsonType, ConstructibleArrayType >::value &&is_default_constructible< ConstructibleArrayType >::value &&(std::is_move_assignable< ConstructibleArrayType >::value||std::is_copy_assignable< ConstructibleArrayType >::value)&&is_detected< iterator_t, ConstructibleArrayType >::value &&is_iterator_traits< iterator_traits< detected_t< iterator_t, ConstructibleArrayType > > >::value &&is_detected< range_value_t, ConstructibleArrayType >::value &&!std::is_same< ConstructibleArrayType, detected_t< range_value_t, ConstructibleArrayType > >::value &&is_complete_type< detected_t< range_value_t, ConstructibleArrayType > >::value > >
 
struct  is_constructible_array_type_impl< BasicJsonType, ConstructibleArrayType, enable_if_t< std::is_same< ConstructibleArrayType, typename BasicJsonType::value_type >::value > >
 
struct  is_constructible_object_type
 
struct  is_constructible_object_type_impl
 
struct  is_constructible_object_type_impl< BasicJsonType, ConstructibleObjectType, enable_if_t< is_detected< mapped_type_t, ConstructibleObjectType >::value &&is_detected< key_type_t, ConstructibleObjectType >::value > >
 
struct  is_constructible_string_type
 
struct  is_constructible_tuple
 
struct  is_constructible_tuple< T1, std::tuple< Args... > >
 
struct  is_default_constructible
 
struct  is_default_constructible< const std::pair< T1, T2 > >
 
struct  is_default_constructible< const std::tuple< Ts... > >
 
struct  is_default_constructible< std::pair< T1, T2 > >
 
struct  is_default_constructible< std::tuple< Ts... > >
 
struct  is_detected_lazy
 
struct  is_getable
 
struct  is_iterator_of_multibyte
 
struct  is_iterator_traits
 
struct  is_iterator_traits< iterator_traits< T > >
 
struct  is_json_ref
 
struct  is_json_ref< json_ref< T > >
 
struct  is_ordered_map
 
struct  is_range
 
struct  is_sax
 
struct  is_sax_static_asserts
 
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  iteration_proxy_value
 
class  iterator_input_adapter
 
struct  iterator_input_adapter_factory
 
struct  iterator_input_adapter_factory< IteratorType, enable_if_t< is_iterator_of_multibyte< IteratorType >::value > >
 
struct  iterator_traits
 
struct  iterator_traits< T *, enable_if_t< std::is_object< T >::value > >
 
struct  iterator_traits< T, enable_if_t< !std::is_pointer< T >::value > >
 
struct  iterator_types
 
struct  iterator_types< It, void_t< typename It::difference_type, typename It::value_type, typename It::pointer, typename It::reference, typename It::iterator_category > >
 
class  json_ref
 
class  json_reverse_iterator
 a template for a reverse iterator class More...
 
class  json_sax_acceptor
 
class  json_sax_dom_callback_parser
 
class  json_sax_dom_parser
 SAX implementation to create a JSON value from SAX events. More...
 
class  lexer
 lexical analysis More...
 
class  lexer_base
 
struct  make_void
 
struct  negation
 
struct  nonesuch
 
class  other_error
 exception indicating other library errors More...
 
class  out_of_range
 exception indicating access out of the defined range More...
 
class  output_adapter
 
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  primitive_iterator_t
 
struct  priority_tag
 
struct  priority_tag< 0 >
 
class  serializer
 
class  span_input_adapter
 
struct  static_const
 
struct  to_json_fn
 
class  type_error
 exception indicating executing a member function with a wrong type More...
 
class  wide_string_input_adapter
 
struct  wide_string_input_helper
 
struct  wide_string_input_helper< BaseInputAdapter, 2 >
 
struct  wide_string_input_helper< BaseInputAdapter, 4 >
 

Typedefs

template<typename T , typename Binary >
using binary_function_t = decltype(std::declval< T & >().binary(std::declval< Binary & >()))
 
template<typename T >
using boolean_function_t = decltype(std::declval< T & >().boolean(std::declval< bool >()))
 
using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval< const char * >(), std::declval< const char * >()))
 
template<class Default , template< class... > class Op, class... Args>
using detected_or = detector< Default, void, Op, Args... >
 
template<class Default , template< class... > class Op, class... Args>
using detected_or_t = typename detected_or< Default, Op, Args... >::type
 
template<template< class... > class Op, class... Args>
using detected_t = typename detector< nonesuch, void, Op, Args... >::type
 
template<typename T >
using difference_type_t = typename T::difference_type
 
template<bool B, typename T = void>
using enable_if_t = typename std::enable_if< B, T >::type
 
template<typename T >
using end_array_function_t = decltype(std::declval< T & >().end_array())
 
template<typename T >
using end_object_function_t = decltype(std::declval< T & >().end_object())
 
template<typename T , typename... Args>
using from_json_function = decltype(T::from_json(std::declval< Args >()...))
 
template<typename T , typename U >
using get_template_function = decltype(std::declval< T >().template get< U >())
 
template<size_t... Ints>
using index_sequence = integer_sequence< size_t, Ints... >
 
template<typename... Ts>
using index_sequence_for = make_index_sequence< sizeof...(Ts)>
 
template<template< class... > class Op, class... Args>
using is_detected = typename detector< nonesuch, void, Op, Args... >::value_t
 
template<class To , template< class... > class Op, class... Args>
using is_detected_convertible = std::is_convertible< detected_t< Op, Args... >, To >
 
template<class Expected , template< class... > class Op, class... Args>
using is_detected_exact = std::is_same< Expected, detected_t< Op, Args... > >
 
template<typename T >
using iterator_category_t = typename T::iterator_category
 
template<typename R >
using iterator_t = enable_if_t< is_range< R >::value, result_of_begin< decltype(std::declval< R & >())> >
 
template<typename T , typename String >
using key_function_t = decltype(std::declval< T & >().key(std::declval< String & >()))
 
template<typename T >
using key_type_t = typename T::key_type
 
template<size_t N>
using make_index_sequence = make_integer_sequence< size_t, N >
 
template<typename T , T N>
using make_integer_sequence = typename utility_internal::Gen< T, N >::type
 
template<typename T >
using mapped_type_t = typename T::mapped_type
 
template<typename T >
using null_function_t = decltype(std::declval< T & >().null())
 
template<typename T , typename Float , typename String >
using number_float_function_t = decltype(std::declval< T & >().number_float(std::declval< Float >(), std::declval< const String & >()))
 
template<typename T , typename Integer >
using number_integer_function_t = decltype(std::declval< T & >().number_integer(std::declval< Integer >()))
 
template<typename T , typename Unsigned >
using number_unsigned_function_t = decltype(std::declval< T & >().number_unsigned(std::declval< Unsigned >()))
 
template<typename CharType >
using output_adapter_t = std::shared_ptr< output_adapter_protocol< CharType > >
 a type to simplify interfaces More...
 
template<typename T , typename Exception >
using parse_error_function_t = decltype(std::declval< T & >().parse_error(std::declval< std::size_t >(), std::declval< const std::string & >(), std::declval< const Exception & >()))
 
template<typename BasicJsonType >
using parser_callback_t = std::function< bool(int, parse_event_t, BasicJsonType &)>
 
template<typename T >
using pointer_t = typename T::pointer
 
template<typename T >
using range_value_t = value_type_t< iterator_traits< iterator_t< T > >>
 
template<typename T >
using reference_t = typename T::reference
 
template<typename T >
using start_array_function_t = decltype(std::declval< T & >().start_array(std::declval< std::size_t >()))
 
template<typename T >
using start_object_function_t = decltype(std::declval< T & >().start_object(std::declval< std::size_t >()))
 
template<typename T , typename String >
using string_function_t = decltype(std::declval< T & >().string(std::declval< String & >()))
 
template<typename T , typename... Args>
using to_json_function = decltype(T::to_json(std::declval< Args >()...))
 
template<typename T >
using uncvref_t = typename std::remove_cv< typename std::remove_reference< T >::type >::type
 
template<typename T >
using value_type_t = typename T::value_type
 
template<typename ... Ts>
using void_t = typename make_void< Ts... >::type
 

Enumerations

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

Functions

std::size_t combine (std::size_t seed, std::size_t h) noexcept
 
template<typename T , typename U , enable_if_t< !std::is_same< T, U >::value, int > = 0>
conditional_static_cast (U value)
 
std::string escape (std::string s)
 string escaping as described in RFC 6901 (Sect. 4) More...
 
template<typename BasicJsonType , typename T , std::size_t N>
auto from_json (BasicJsonType &&j, identity_tag< std::array< T, N >> tag) -> decltype(from_json_inplace_array_impl(std::forward< BasicJsonType >(j), tag, make_index_sequence< N > {}))
 
template<typename BasicJsonType , typename TupleRelated >
auto from_json (BasicJsonType &&j, TupleRelated &&t) -> decltype(from_json_tuple_impl(std::forward< BasicJsonType >(j), std::forward< TupleRelated >(t), priority_tag< 3 > {}))
 
template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value &&!std::is_same< ArithmeticType, typename BasicJsonType::number_unsigned_t >::value &&!std::is_same< ArithmeticType, typename BasicJsonType::number_integer_t >::value &&!std::is_same< ArithmeticType, typename BasicJsonType::number_float_t >::value &&!std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
void from_json (const BasicJsonType &j, ArithmeticType &val)
 
template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< is_constructible_array_type< BasicJsonType, ConstructibleArrayType >::value &&!is_constructible_object_type< BasicJsonType, ConstructibleArrayType >::value &&!is_constructible_string_type< BasicJsonType, ConstructibleArrayType >::value &&!std::is_same< ConstructibleArrayType, typename BasicJsonType::binary_t >::value &&!is_basic_json< ConstructibleArrayType >::value, int > = 0>
auto from_json (const BasicJsonType &j, ConstructibleArrayType &arr) -> decltype(from_json_array_impl(j, arr, priority_tag< 3 > {}), j.template get< typename ConstructibleArrayType::value_type >(), void())
 
template<typename BasicJsonType , typename ConstructibleObjectType , enable_if_t< is_constructible_object_type< BasicJsonType, ConstructibleObjectType >::value, int > = 0>
void from_json (const BasicJsonType &j, ConstructibleObjectType &obj)
 
template<typename BasicJsonType , typename ConstructibleStringType , enable_if_t< is_constructible_string_type< BasicJsonType, ConstructibleStringType >::value &&!std::is_same< typename BasicJsonType::string_t, ConstructibleStringType >::value, int > = 0>
void from_json (const BasicJsonType &j, ConstructibleStringType &s)
 
template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void from_json (const BasicJsonType &j, EnumType &e)
 
template<typename BasicJsonType , typename T , typename Allocator , enable_if_t< is_getable< BasicJsonType, T >::value, int > = 0>
void from_json (const BasicJsonType &j, std::forward_list< T, Allocator > &l)
 
template<typename BasicJsonType , typename Key , typename Value , typename Compare , typename Allocator , typename = enable_if_t < !std::is_constructible < typename BasicJsonType::string_t, Key >::value >>
void from_json (const BasicJsonType &j, std::map< Key, Value, Compare, Allocator > &m)
 
template<typename BasicJsonType , typename Key , typename Value , typename Hash , typename KeyEqual , typename Allocator , typename = enable_if_t < !std::is_constructible < typename BasicJsonType::string_t, Key >::value >>
void from_json (const BasicJsonType &j, std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > &m)
 
template<typename BasicJsonType , typename T , enable_if_t< is_getable< BasicJsonType, T >::value, int > = 0>
void from_json (const BasicJsonType &j, std::valarray< T > &l)
 
template<typename BasicJsonType , typename T , std::size_t N>
auto from_json (const BasicJsonType &j, T(&arr)[N]) -> decltype(j.template get< T >(), void())
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, typename BasicJsonType::binary_t &bin)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, typename BasicJsonType::boolean_t &b)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, typename BasicJsonType::number_float_t &val)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, typename BasicJsonType::number_integer_t &val)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, typename BasicJsonType::number_unsigned_t &val)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, typename BasicJsonType::string_t &s)
 
template<typename BasicJsonType >
void from_json (const BasicJsonType &j, typename std::nullptr_t &n)
 
template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< std::is_assignable< ConstructibleArrayType &, ConstructibleArrayType >::value, int > = 0>
void from_json_array_impl (const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 0 >)
 
template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< std::is_assignable< ConstructibleArrayType &, ConstructibleArrayType >::value, int > = 0>
auto from_json_array_impl (const BasicJsonType &j, ConstructibleArrayType &arr, priority_tag< 1 >) -> decltype(arr.reserve(std::declval< typename ConstructibleArrayType::size_type >()), j.template get< typename ConstructibleArrayType::value_type >(), void())
 
template<typename BasicJsonType , typename T , std::size_t N>
auto from_json_array_impl (const BasicJsonType &j, std::array< T, N > &arr, priority_tag< 2 >) -> decltype(j.template get< T >(), void())
 
template<typename BasicJsonType >
void from_json_array_impl (const BasicJsonType &j, typename BasicJsonType::array_t &arr, priority_tag< 3 >)
 
template<typename BasicJsonType , typename T , std::size_t... Idx>
std::array< T, sizeof...(Idx)> from_json_inplace_array_impl (BasicJsonType &&j, identity_tag< std::array< T, sizeof...(Idx)>>, index_sequence< Idx... >)
 
template<typename BasicJsonType , class A1 , class A2 >
std::pair< A1, A2 > from_json_tuple_impl (BasicJsonType &&j, identity_tag< std::pair< A1, A2 >>, priority_tag< 0 >)
 
template<typename BasicJsonType , typename... Args>
std::tuple< Args... > from_json_tuple_impl (BasicJsonType &&j, identity_tag< std::tuple< Args... >>, priority_tag< 2 >)
 
template<typename BasicJsonType , typename A1 , typename A2 >
void from_json_tuple_impl (BasicJsonType &&j, std::pair< A1, A2 > &p, priority_tag< 1 >)
 
template<typename BasicJsonType , typename... Args>
void from_json_tuple_impl (BasicJsonType &&j, std::tuple< Args... > &t, priority_tag< 3 >)
 
template<typename BasicJsonType , typename... Args, std::size_t... Idx>
std::tuple< Args... > from_json_tuple_impl_base (BasicJsonType &&j, index_sequence< Idx... >)
 
template<std::size_t N, typename IteratorType , enable_if_t< N==0, int > = 0>
auto get (const nlohmann::detail::iteration_proxy_value< IteratorType > &i) -> decltype(i.key())
 
template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value &&!std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
void get_arithmetic_value (const BasicJsonType &j, ArithmeticType &val)
 
template<typename BasicJsonType >
std::size_t hash (const BasicJsonType &j)
 hash a JSON value More...
 
template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value &&!std::is_array< CharT >::value &&std::is_integral< typename std::remove_pointer< CharT >::type >::value &&sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
contiguous_bytes_input_adapter input_adapter (CharT b)
 
template<typename ContainerType >
container_input_adapter_factory_impl::container_input_adapter_factory< ContainerType >::adapter_type input_adapter (const ContainerType &container)
 
template<typename IteratorType >
iterator_input_adapter_factory< IteratorType >::adapter_type input_adapter (IteratorType first, IteratorType last)
 
file_input_adapter input_adapter (std::FILE *file)
 
input_stream_adapter input_adapter (std::istream &&stream)
 
input_stream_adapter input_adapter (std::istream &stream)
 
template<typename T , std::size_t N>
auto input_adapter (T(&array)[N]) -> decltype(input_adapter(array, array+N))
 
template<typename string_type >
void int_to_string (string_type &target, std::size_t value)
 
static bool little_endianness (int num=1) noexcept
 determine system byte order More...
 
bool operator< (const value_t lhs, const value_t rhs) noexcept
 comparison operator for JSON types More...
 
void replace_substring (std::string &s, const std::string &f, const std::string &t)
 replace all occurrences of a substring by another string 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...
 
template<typename BasicJsonType , typename CompatibleNumberIntegerType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType >::value, int > = 0>
void to_json (BasicJsonType &j, CompatibleNumberIntegerType val) noexcept
 
template<typename BasicJsonType , typename CompatibleNumberUnsignedType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType >::value, int > = 0>
void to_json (BasicJsonType &j, CompatibleNumberUnsignedType val) noexcept
 
template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< is_compatible_array_type< BasicJsonType, CompatibleArrayType >::value &&!is_compatible_object_type< BasicJsonType, CompatibleArrayType >::value &&!is_compatible_string_type< BasicJsonType, CompatibleArrayType >::value &&!std::is_same< typename BasicJsonType::binary_t, CompatibleArrayType >::value &&!is_basic_json< CompatibleArrayType >::value, int > = 0>
void to_json (BasicJsonType &j, const CompatibleArrayType &arr)
 
template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< is_compatible_object_type< BasicJsonType, CompatibleObjectType >::value &&!is_basic_json< CompatibleObjectType >::value, int > = 0>
void to_json (BasicJsonType &j, const CompatibleObjectType &obj)
 
template<typename BasicJsonType , typename CompatibleString , enable_if_t< std::is_constructible< typename BasicJsonType::string_t, CompatibleString >::value, int > = 0>
void to_json (BasicJsonType &j, const CompatibleString &s)
 
template<typename BasicJsonType , typename T1 , typename T2 , enable_if_t< std::is_constructible< BasicJsonType, T1 >::value &&std::is_constructible< BasicJsonType, T2 >::value, int > = 0>
void to_json (BasicJsonType &j, const std::pair< T1, T2 > &p)
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
void to_json (BasicJsonType &j, const std::valarray< T > &arr)
 
template<typename BasicJsonType >
void to_json (BasicJsonType &j, const std::vector< bool > &e)
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, iteration_proxy_value< typename BasicJsonType::iterator >>::value, int > = 0>
void to_json (BasicJsonType &j, const T &b)
 
template<typename BasicJsonType , typename T , std::size_t N, enable_if_t< !std::is_constructible< typename BasicJsonType::string_t, const T(&)[N]>::value, int > = 0>
void to_json (BasicJsonType &j, const T(&arr)[N])
 
template<typename BasicJsonType >
void to_json (BasicJsonType &j, const typename BasicJsonType::binary_t &bin)
 
template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void to_json (BasicJsonType &j, EnumType e) noexcept
 
template<typename BasicJsonType , typename FloatType , enable_if_t< std::is_floating_point< FloatType >::value, int > = 0>
void to_json (BasicJsonType &j, FloatType val) noexcept
 
template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, typename BasicJsonType::boolean_t >::value, int > = 0>
void to_json (BasicJsonType &j, T b) noexcept
 
template<typename BasicJsonType >
void to_json (BasicJsonType &j, typename BasicJsonType::array_t &&arr)
 
template<typename BasicJsonType >
void to_json (BasicJsonType &j, typename BasicJsonType::object_t &&obj)
 
template<typename BasicJsonType >
void to_json (BasicJsonType &j, typename BasicJsonType::string_t &&s)
 
template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
void to_json_tuple_impl (BasicJsonType &j, const Tuple &t, index_sequence< Idx... >)
 
static void unescape (std::string &s)
 string unescaping as described in RFC 6901 (Sect. 4) 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

Typedef Documentation

◆ binary_function_t

template<typename T , typename Binary >
using nlohmann::detail::binary_function_t = typedef decltype(std::declval<T&>().binary(std::declval<Binary&>()))

Definition at line 8077 of file json.hpp.

◆ boolean_function_t

template<typename T >
using nlohmann::detail::boolean_function_t = typedef decltype(std::declval<T&>().boolean(std::declval<bool>()))

Definition at line 8057 of file json.hpp.

◆ contiguous_bytes_input_adapter

using nlohmann::detail::contiguous_bytes_input_adapter = typedef decltype(input_adapter(std::declval<const char*>(), std::declval<const char*>()))

Definition at line 5636 of file json.hpp.

◆ detected_or

template<class Default , template< class... > class Op, class... Args>
using nlohmann::detail::detected_or = typedef detector<Default, void, Op, Args...>

Definition at line 2289 of file json.hpp.

◆ detected_or_t

template<class Default , template< class... > class Op, class... Args>
using nlohmann::detail::detected_or_t = typedef typename detected_or<Default, Op, Args...>::type

Definition at line 2292 of file json.hpp.

◆ detected_t

template<template< class... > class Op, class... Args>
using nlohmann::detail::detected_t = typedef typename detector<nonesuch, void, Op, Args...>::type

Definition at line 2286 of file json.hpp.

◆ difference_type_t

template<typename T >
using nlohmann::detail::difference_type_t = typedef typename T::difference_type

Definition at line 3410 of file json.hpp.

◆ enable_if_t

template<bool B, typename T = void>
using nlohmann::detail::enable_if_t = typedef typename std::enable_if<B, T>::type

Definition at line 3055 of file json.hpp.

◆ end_array_function_t

template<typename T >
using nlohmann::detail::end_array_function_t = typedef decltype(std::declval<T&>().end_array())

Definition at line 8096 of file json.hpp.

◆ end_object_function_t

template<typename T >
using nlohmann::detail::end_object_function_t = typedef decltype(std::declval<T&>().end_object())

Definition at line 8089 of file json.hpp.

◆ from_json_function

template<typename T , typename... Args>
using nlohmann::detail::from_json_function = typedef decltype(T::from_json(std::declval<Args>()...))

Definition at line 3425 of file json.hpp.

◆ get_template_function

template<typename T , typename U >
using nlohmann::detail::get_template_function = typedef decltype(std::declval<T>().template get<U>())

Definition at line 3428 of file json.hpp.

◆ index_sequence

template<size_t... Ints>
using nlohmann::detail::index_sequence = typedef integer_sequence<size_t, Ints...>

Definition at line 3097 of file json.hpp.

◆ index_sequence_for

template<typename... Ts>
using nlohmann::detail::index_sequence_for = typedef make_index_sequence<sizeof...(Ts)>

Definition at line 3159 of file json.hpp.

◆ is_detected

template<template< class... > class Op, class... Args>
using nlohmann::detail::is_detected = typedef typename detector<nonesuch, void, Op, Args...>::value_t

Definition at line 2280 of file json.hpp.

◆ is_detected_convertible

template<class To , template< class... > class Op, class... Args>
using nlohmann::detail::is_detected_convertible = typedef std::is_convertible<detected_t<Op, Args...>, To>

Definition at line 2298 of file json.hpp.

◆ is_detected_exact

template<class Expected , template< class... > class Op, class... Args>
using nlohmann::detail::is_detected_exact = typedef std::is_same<Expected, detected_t<Op, Args...> >

Definition at line 2295 of file json.hpp.

◆ iterator_category_t

template<typename T >
using nlohmann::detail::iterator_category_t = typedef typename T::iterator_category

Definition at line 3419 of file json.hpp.

◆ iterator_t

template<typename R >
using nlohmann::detail::iterator_t = typedef enable_if_t<is_range<R>::value, result_of_begin<decltype(std::declval<R&>())> >

Definition at line 3576 of file json.hpp.

◆ key_function_t

template<typename T , typename String >
using nlohmann::detail::key_function_t = typedef decltype(std::declval<T&>().key(std::declval<String&>()))

Definition at line 8085 of file json.hpp.

◆ key_type_t

template<typename T >
using nlohmann::detail::key_type_t = typedef typename T::key_type

Definition at line 3404 of file json.hpp.

◆ make_index_sequence

template<size_t N>
using nlohmann::detail::make_index_sequence = typedef make_integer_sequence<size_t, N>

Definition at line 3151 of file json.hpp.

◆ make_integer_sequence

template<typename T , T N>
using nlohmann::detail::make_integer_sequence = typedef typename utility_internal::Gen<T, N>::type

Definition at line 3143 of file json.hpp.

◆ mapped_type_t

template<typename T >
using nlohmann::detail::mapped_type_t = typedef typename T::mapped_type

Definition at line 3401 of file json.hpp.

◆ null_function_t

template<typename T >
using nlohmann::detail::null_function_t = typedef decltype(std::declval<T&>().null())

Definition at line 8054 of file json.hpp.

◆ number_float_function_t

template<typename T , typename Float , typename String >
using nlohmann::detail::number_float_function_t = typedef decltype(std::declval<T&>().number_float( std::declval<Float>(), std::declval<const String&>()))

Definition at line 8069 of file json.hpp.

◆ number_integer_function_t

template<typename T , typename Integer >
using nlohmann::detail::number_integer_function_t = typedef decltype(std::declval<T&>().number_integer(std::declval<Integer>()))

Definition at line 8061 of file json.hpp.

◆ number_unsigned_function_t

template<typename T , typename Unsigned >
using nlohmann::detail::number_unsigned_function_t = typedef decltype(std::declval<T&>().number_unsigned(std::declval<Unsigned>()))

Definition at line 8065 of file json.hpp.

◆ output_adapter_t

template<typename CharType >
using nlohmann::detail::output_adapter_t = typedef std::shared_ptr<output_adapter_protocol<CharType> >

a type to simplify interfaces

Definition at line 13198 of file json.hpp.

◆ parse_error_function_t

template<typename T , typename Exception >
using nlohmann::detail::parse_error_function_t = typedef decltype(std::declval<T&>().parse_error( std::declval<std::size_t>(), std::declval<const std::string&>(), std::declval<const Exception&>()))

Definition at line 8099 of file json.hpp.

◆ parser_callback_t

template<typename BasicJsonType >
using nlohmann::detail::parser_callback_t = typedef std::function<bool(int , parse_event_t , BasicJsonType& )>

Definition at line 10750 of file json.hpp.

◆ pointer_t

template<typename T >
using nlohmann::detail::pointer_t = typedef typename T::pointer

Definition at line 3413 of file json.hpp.

◆ range_value_t

template<typename T >
using nlohmann::detail::range_value_t = typedef value_type_t<iterator_traits<iterator_t<T> >>

Definition at line 3579 of file json.hpp.

◆ reference_t

template<typename T >
using nlohmann::detail::reference_t = typedef typename T::reference

Definition at line 3416 of file json.hpp.

◆ start_array_function_t

template<typename T >
using nlohmann::detail::start_array_function_t = typedef decltype(std::declval<T&>().start_array(std::declval<std::size_t>()))

Definition at line 8092 of file json.hpp.

◆ start_object_function_t

template<typename T >
using nlohmann::detail::start_object_function_t = typedef decltype(std::declval<T&>().start_object(std::declval<std::size_t>()))

Definition at line 8081 of file json.hpp.

◆ string_function_t

template<typename T , typename String >
using nlohmann::detail::string_function_t = typedef decltype(std::declval<T&>().string(std::declval<String&>()))

Definition at line 8073 of file json.hpp.

◆ to_json_function

template<typename T , typename... Args>
using nlohmann::detail::to_json_function = typedef decltype(T::to_json(std::declval<Args>()...))

Definition at line 3422 of file json.hpp.

◆ uncvref_t

template<typename T >
using nlohmann::detail::uncvref_t = typedef typename std::remove_cv<typename std::remove_reference<T>::type>::type

Definition at line 3041 of file json.hpp.

◆ value_type_t

template<typename T >
using nlohmann::detail::value_type_t = typedef typename T::value_type

Definition at line 3407 of file json.hpp.

◆ void_t

template<typename ... Ts>
using nlohmann::detail::void_t = typedef typename make_void<Ts...>::type

Definition at line 2242 of file json.hpp.

Enumeration Type Documentation

◆ cbor_tag_handler_t

how to treat CBOR tags

Enumerator
error 

throw a parse_error exception in case of a tag

ignore 

ignore tags

store 

store tags as binary type

Definition at line 8201 of file json.hpp.

◆ error_handler_t

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

Definition at line 16077 of file json.hpp.

◆ input_format_t

the supported input formats

Enumerator
json 
cbor 
msgpack 
ubjson 
bson 

Definition at line 5233 of file json.hpp.

◆ parse_event_t

enum nlohmann::detail::parse_event_t : std::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

Definition at line 10733 of file json.hpp.

◆ 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
see 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

Definition at line 129 of file json.hpp.

Function Documentation

◆ combine()

std::size_t nlohmann::detail::combine ( std::size_t  seed,
std::size_t  h 
)
inlinenoexcept

Definition at line 5079 of file json.hpp.

Referenced by hash().

Here is the caller graph for this function:

◆ conditional_static_cast()

template<typename T , typename U , enable_if_t< !std::is_same< T, U >::value, int > = 0>
T nlohmann::detail::conditional_static_cast ( value)

Definition at line 3798 of file json.hpp.

References value.

◆ escape()

std::string nlohmann::detail::escape ( std::string  s)
inline

string escaping as described in RFC 6901 (Sect. 4)

Parameters
[in]sstring to escape
Returns
escaped string

Note the order of escaping "~" to "~0" and "/" to "~1" is important.

Definition at line 2743 of file json.hpp.

References replace_substring().

Referenced by nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::diff(), and nlohmann::json_pointer< BasicJsonType >::flatten().

Here is the caller graph for this function:

◆ from_json() [1/19]

template<typename BasicJsonType , typename T , std::size_t N>
auto nlohmann::detail::from_json ( BasicJsonType &&  j,
identity_tag< std::array< T, N >>  tag 
) -> decltype(from_json_inplace_array_impl(std::forward<BasicJsonType>(j), tag, make_index_sequence<N> {}))

Definition at line 4079 of file json.hpp.

◆ from_json() [2/19]

template<typename BasicJsonType , typename TupleRelated >
auto nlohmann::detail::from_json ( BasicJsonType &&  j,
TupleRelated &&  t 
) -> decltype(from_json_tuple_impl(std::forward<BasicJsonType>(j), std::forward<TupleRelated>(t), priority_tag<3> {}))

Definition at line 4203 of file json.hpp.

◆ from_json() [3/19]

template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value &&!std::is_same< ArithmeticType, typename BasicJsonType::number_unsigned_t >::value &&!std::is_same< ArithmeticType, typename BasicJsonType::number_integer_t >::value &&!std::is_same< ArithmeticType, typename BasicJsonType::number_float_t >::value &&!std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
void nlohmann::detail::from_json ( const BasicJsonType &  j,
ArithmeticType &  val 
)

◆ from_json() [4/19]

template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< is_constructible_array_type< BasicJsonType, ConstructibleArrayType >::value &&!is_constructible_object_type< BasicJsonType, ConstructibleArrayType >::value &&!is_constructible_string_type< BasicJsonType, ConstructibleArrayType >::value &&!std::is_same< ConstructibleArrayType, typename BasicJsonType::binary_t >::value &&!is_basic_json< ConstructibleArrayType >::value, int > = 0>
auto nlohmann::detail::from_json ( const BasicJsonType &  j,
ConstructibleArrayType &  arr 
) -> decltype(from_json_array_impl(j, arr, priority_tag<3> {}), j.template get<typename ConstructibleArrayType::value_type>(), void())

Definition at line 4058 of file json.hpp.

◆ from_json() [5/19]

template<typename BasicJsonType , typename ConstructibleObjectType , enable_if_t< is_constructible_object_type< BasicJsonType, ConstructibleObjectType >::value, int > = 0>
void nlohmann::detail::from_json ( const BasicJsonType &  j,
ConstructibleObjectType &  obj 
)

◆ from_json() [6/19]

template<typename BasicJsonType , typename ConstructibleStringType , enable_if_t< is_constructible_string_type< BasicJsonType, ConstructibleStringType >::value &&!std::is_same< typename BasicJsonType::string_t, ConstructibleStringType >::value, int > = 0>
void nlohmann::detail::from_json ( const BasicJsonType &  j,
ConstructibleStringType &  s 
)

◆ from_json() [7/19]

template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void nlohmann::detail::from_json ( const BasicJsonType &  j,
EnumType &  e 
)

Definition at line 3937 of file json.hpp.

References get_arithmetic_value().

◆ from_json() [8/19]

template<typename BasicJsonType , typename T , typename Allocator , enable_if_t< is_getable< BasicJsonType, T >::value, int > = 0>
void nlohmann::detail::from_json ( const BasicJsonType &  j,
std::forward_list< T, Allocator > &  l 
)

◆ from_json() [9/19]

template<typename BasicJsonType , typename Key , typename Value , typename Compare , typename Allocator , typename = enable_if_t < !std::is_constructible < typename BasicJsonType::string_t, Key >::value >>
void nlohmann::detail::from_json ( const BasicJsonType &  j,
std::map< Key, Value, Compare, Allocator > &  m 
)

◆ from_json() [10/19]

template<typename BasicJsonType , typename Key , typename Value , typename Hash , typename KeyEqual , typename Allocator , typename = enable_if_t < !std::is_constructible < typename BasicJsonType::string_t, Key >::value >>
void nlohmann::detail::from_json ( const BasicJsonType &  j,
std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > &  m 
)

◆ from_json() [11/19]

template<typename BasicJsonType , typename T , enable_if_t< is_getable< BasicJsonType, T >::value, int > = 0>
void nlohmann::detail::from_json ( const BasicJsonType &  j,
std::valarray< T > &  l 
)

◆ from_json() [12/19]

template<typename BasicJsonType , typename T , std::size_t N>
auto nlohmann::detail::from_json ( const BasicJsonType &  j,
T(&)  arr[N] 
) -> decltype(j.template get<T>(), void())

Definition at line 3979 of file json.hpp.

◆ from_json() [13/19]

template<typename BasicJsonType >
void nlohmann::detail::from_json ( const BasicJsonType &  j,
typename BasicJsonType::binary_t &  bin 
)

◆ from_json() [14/19]

template<typename BasicJsonType >
void nlohmann::detail::from_json ( const BasicJsonType &  j,
typename BasicJsonType::boolean_t &  b 
)

◆ from_json() [15/19]

template<typename BasicJsonType >
void nlohmann::detail::from_json ( const BasicJsonType &  j,
typename BasicJsonType::number_float_t &  val 
)

Definition at line 3918 of file json.hpp.

References get_arithmetic_value().

◆ from_json() [16/19]

template<typename BasicJsonType >
void nlohmann::detail::from_json ( const BasicJsonType &  j,
typename BasicJsonType::number_integer_t &  val 
)

Definition at line 3930 of file json.hpp.

References get_arithmetic_value().

◆ from_json() [17/19]

template<typename BasicJsonType >
void nlohmann::detail::from_json ( const BasicJsonType &  j,
typename BasicJsonType::number_unsigned_t &  val 
)

Definition at line 3924 of file json.hpp.

References get_arithmetic_value().

◆ from_json() [18/19]

template<typename BasicJsonType >
void nlohmann::detail::from_json ( const BasicJsonType &  j,
typename BasicJsonType::string_t &  s 
)

◆ from_json() [19/19]

template<typename BasicJsonType >
void nlohmann::detail::from_json ( const BasicJsonType &  j,
typename std::nullptr_t &  n 
)

Definition at line 3834 of file json.hpp.

References nlohmann::detail::type_error::create(), JSON_HEDLEY_UNLIKELY, and JSON_THROW.

Referenced by nlohmann::detail::from_json_fn::operator()().

Here is the caller graph for this function:

◆ from_json_array_impl() [1/4]

template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< std::is_assignable< ConstructibleArrayType &, ConstructibleArrayType >::value, int > = 0>
void nlohmann::detail::from_json_array_impl ( const BasicJsonType &  j,
ConstructibleArrayType &  arr,
priority_tag< 0 >   
)

Definition at line 4033 of file json.hpp.

◆ from_json_array_impl() [2/4]

template<typename BasicJsonType , typename ConstructibleArrayType , enable_if_t< std::is_assignable< ConstructibleArrayType &, ConstructibleArrayType >::value, int > = 0>
auto nlohmann::detail::from_json_array_impl ( const BasicJsonType &  j,
ConstructibleArrayType &  arr,
priority_tag< 1 >   
) -> decltype( arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()), j.template get<typename ConstructibleArrayType::value_type>(), void())

Definition at line 4009 of file json.hpp.

◆ from_json_array_impl() [3/4]

template<typename BasicJsonType , typename T , std::size_t N>
auto nlohmann::detail::from_json_array_impl ( const BasicJsonType &  j,
std::array< T, N > &  arr,
priority_tag< 2 >   
) -> decltype(j.template get<T>(), void())

Definition at line 3995 of file json.hpp.

◆ from_json_array_impl() [4/4]

template<typename BasicJsonType >
void nlohmann::detail::from_json_array_impl ( const BasicJsonType &  j,
typename BasicJsonType::array_t &  arr,
priority_tag< 3 >   
)

Definition at line 3989 of file json.hpp.

◆ from_json_inplace_array_impl()

template<typename BasicJsonType , typename T , std::size_t... Idx>
std::array<T, sizeof...(Idx)> nlohmann::detail::from_json_inplace_array_impl ( BasicJsonType &&  j,
identity_tag< std::array< T, sizeof...(Idx)>>  ,
index_sequence< Idx... >   
)

Definition at line 4072 of file json.hpp.

◆ from_json_tuple_impl() [1/4]

template<typename BasicJsonType , class A1 , class A2 >
std::pair<A1, A2> nlohmann::detail::from_json_tuple_impl ( BasicJsonType &&  j,
identity_tag< std::pair< A1, A2 >>  ,
priority_tag< 0 >   
)

Definition at line 4178 of file json.hpp.

Referenced by from_json_tuple_impl().

Here is the caller graph for this function:

◆ from_json_tuple_impl() [2/4]

template<typename BasicJsonType , typename... Args>
std::tuple<Args...> nlohmann::detail::from_json_tuple_impl ( BasicJsonType &&  j,
identity_tag< std::tuple< Args... >>  ,
priority_tag< 2 >   
)

Definition at line 4191 of file json.hpp.

References from_json_tuple_impl_base().

◆ from_json_tuple_impl() [3/4]

template<typename BasicJsonType , typename A1 , typename A2 >
void nlohmann::detail::from_json_tuple_impl ( BasicJsonType &&  j,
std::pair< A1, A2 > &  p,
priority_tag< 1 >   
)

Definition at line 4185 of file json.hpp.

References from_json_tuple_impl().

◆ from_json_tuple_impl() [4/4]

template<typename BasicJsonType , typename... Args>
void nlohmann::detail::from_json_tuple_impl ( BasicJsonType &&  j,
std::tuple< Args... > &  t,
priority_tag< 3 >   
)

Definition at line 4197 of file json.hpp.

References from_json_tuple_impl_base().

◆ from_json_tuple_impl_base()

template<typename BasicJsonType , typename... Args, std::size_t... Idx>
std::tuple<Args...> nlohmann::detail::from_json_tuple_impl_base ( BasicJsonType &&  j,
index_sequence< Idx... >   
)

Definition at line 4172 of file json.hpp.

Referenced by from_json_tuple_impl().

Here is the caller graph for this function:

◆ get()

◆ get_arithmetic_value()

template<typename BasicJsonType , typename ArithmeticType , enable_if_t< std::is_arithmetic< ArithmeticType >::value &&!std::is_same< ArithmeticType, typename BasicJsonType::boolean_t >::value, int > = 0>
void nlohmann::detail::get_arithmetic_value ( const BasicJsonType &  j,
ArithmeticType &  val 
)

Definition at line 3848 of file json.hpp.

References array, binary, boolean, nlohmann::detail::type_error::create(), discarded, JSON_THROW, null, number_float, number_integer, number_unsigned, object, and string.

Referenced by from_json().

Here is the caller graph for this function:

◆ 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
BasicJsonTypebasic_json specialization
Parameters
jJSON value to hash
Returns
hash value of j

Definition at line 5097 of file json.hpp.

References combine(), and JSON_ASSERT.

Referenced by std::hash< nlohmann::NLOHMANN_BASIC_JSON_TPL >::operator()().

Here is the caller graph for this function:

◆ input_adapter() [1/7]

template<typename CharT , typename std::enable_if< std::is_pointer< CharT >::value &&!std::is_array< CharT >::value &&std::is_integral< typename std::remove_pointer< CharT >::type >::value &&sizeof(typename std::remove_pointer< CharT >::type)==1, int >::type = 0>
contiguous_bytes_input_adapter nlohmann::detail::input_adapter ( CharT  b)

Definition at line 5646 of file json.hpp.

References input_adapter().

◆ input_adapter() [2/7]

template<typename ContainerType >
container_input_adapter_factory_impl::container_input_adapter_factory<ContainerType>::adapter_type nlohmann::detail::input_adapter ( const ContainerType &  container)

Definition at line 5613 of file json.hpp.

◆ input_adapter() [3/7]

template<typename IteratorType >
iterator_input_adapter_factory<IteratorType>::adapter_type nlohmann::detail::input_adapter ( IteratorType  first,
IteratorType  last 
)

Definition at line 5579 of file json.hpp.

Referenced by nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::accept(), nlohmann::detail::container_input_adapter_factory_impl::container_input_adapter_factory< ContainerType, void_t< decltype(begin(std::declval< ContainerType >()), end(std::declval< ContainerType >()))> >::create(), nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::from_bson(), nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::from_cbor(), nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::from_msgpack(), nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::from_ubjson(), nlohmann::detail::binary_reader< BasicJsonType, InputAdapterType, SAX >::get_ubjson_high_precision_number(), input_adapter(), nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::parse(), and nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::sax_parse().

Here is the caller graph for this function:

◆ input_adapter() [4/7]

file_input_adapter nlohmann::detail::input_adapter ( std::FILE *  file)
inline

Definition at line 5620 of file json.hpp.

◆ input_adapter() [5/7]

input_stream_adapter nlohmann::detail::input_adapter ( std::istream &&  stream)
inline

Definition at line 5630 of file json.hpp.

◆ input_adapter() [6/7]

input_stream_adapter nlohmann::detail::input_adapter ( std::istream &  stream)
inline

Definition at line 5625 of file json.hpp.

◆ input_adapter() [7/7]

template<typename T , std::size_t N>
auto nlohmann::detail::input_adapter ( T(&)  array[N]) -> decltype(input_adapter(array, array + N))

Definition at line 5654 of file json.hpp.

References array, and input_adapter().

◆ int_to_string()

template<typename string_type >
void nlohmann::detail::int_to_string ( string_type &  target,
std::size_t  value 
)

Definition at line 4320 of file json.hpp.

References nlohmann::to_string(), and value.

Referenced by nlohmann::detail::iteration_proxy_value< IteratorType >::key().

Here is the caller graph for this function:

◆ little_endianness()

static bool nlohmann::detail::little_endianness ( int  num = 1)
inlinestaticnoexcept

determine system byte order

Returns
true if and only if system's byte order is little endian
Note
from https://stackoverflow.com/a/1001328/266378

Definition at line 8215 of file json.hpp.

◆ 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

Definition at line 156 of file json.hpp.

Referenced by std::less< ::nlohmann::detail::value_t >::operator()().

Here is the caller graph for this function:

◆ replace_substring()

void nlohmann::detail::replace_substring ( std::string &  s,
const std::string &  f,
const std::string &  t 
)
inline

replace all occurrences of a substring by another string

Parameters
[in,out]sthe string to manipulate; changed so that all occurrences of f are replaced with t
[in]fthe substring to replace with t
[in]tthe string to replace f
Precondition
The search string f must not be empty. This precondition is enforced with an assertion.
Since
version 2.0.0

Definition at line 2725 of file json.hpp.

References JSON_ASSERT.

Referenced by escape(), and unescape().

Here is the caller graph for this function:

◆ 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.

Definition at line 16000 of file json.hpp.

References nlohmann::detail::dtoa_impl::format_buffer(), nlohmann::detail::dtoa_impl::grisu2(), JSON_ASSERT, and value.

◆ to_json() [1/17]

template<typename BasicJsonType , typename CompatibleNumberIntegerType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_integer_t, CompatibleNumberIntegerType >::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
CompatibleNumberIntegerType  val 
)
noexcept

Definition at line 4787 of file json.hpp.

◆ to_json() [2/17]

template<typename BasicJsonType , typename CompatibleNumberUnsignedType , enable_if_t< is_compatible_integer_type< typename BasicJsonType::number_unsigned_t, CompatibleNumberUnsignedType >::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
CompatibleNumberUnsignedType  val 
)
noexcept

Definition at line 4780 of file json.hpp.

◆ to_json() [3/17]

template<typename BasicJsonType , typename CompatibleArrayType , enable_if_t< is_compatible_array_type< BasicJsonType, CompatibleArrayType >::value &&!is_compatible_object_type< BasicJsonType, CompatibleArrayType >::value &&!is_compatible_string_type< BasicJsonType, CompatibleArrayType >::value &&!std::is_same< typename BasicJsonType::binary_t, CompatibleArrayType >::value &&!is_basic_json< CompatibleArrayType >::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
const CompatibleArrayType &  arr 
)

Definition at line 4814 of file json.hpp.

◆ to_json() [4/17]

template<typename BasicJsonType , typename CompatibleObjectType , enable_if_t< is_compatible_object_type< BasicJsonType, CompatibleObjectType >::value &&!is_basic_json< CompatibleObjectType >::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
const CompatibleObjectType &  obj 
)

Definition at line 4840 of file json.hpp.

◆ to_json() [5/17]

template<typename BasicJsonType , typename CompatibleString , enable_if_t< std::is_constructible< typename BasicJsonType::string_t, CompatibleString >::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
const CompatibleString &  s 
)

Definition at line 4760 of file json.hpp.

◆ to_json() [6/17]

template<typename BasicJsonType , typename T1 , typename T2 , enable_if_t< std::is_constructible< BasicJsonType, T1 >::value &&std::is_constructible< BasicJsonType, T2 >::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
const std::pair< T1, T2 > &  p 
)

Definition at line 4862 of file json.hpp.

◆ to_json() [7/17]

template<typename BasicJsonType , typename T , enable_if_t< std::is_convertible< T, BasicJsonType >::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
const std::valarray< T > &  arr 
)

Definition at line 4827 of file json.hpp.

◆ to_json() [8/17]

template<typename BasicJsonType >
void nlohmann::detail::to_json ( BasicJsonType &  j,
const std::vector< bool > &  e 
)

Definition at line 4801 of file json.hpp.

◆ to_json() [9/17]

template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, iteration_proxy_value< typename BasicJsonType::iterator >>::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
const T &  b 
)

Definition at line 4870 of file json.hpp.

Referenced by nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType >::basic_json(), and nlohmann::adl_serializer< ValueType, typename >::to_json().

Here is the caller graph for this function:

◆ to_json() [10/17]

template<typename BasicJsonType , typename T , std::size_t N, enable_if_t< !std::is_constructible< typename BasicJsonType::string_t, const T(&)[N]>::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
const T(&)  arr[N] 
)

Definition at line 4856 of file json.hpp.

◆ to_json() [11/17]

template<typename BasicJsonType >
void nlohmann::detail::to_json ( BasicJsonType &  j,
const typename BasicJsonType::binary_t &  bin 
)

Definition at line 4820 of file json.hpp.

◆ to_json() [12/17]

template<typename BasicJsonType , typename EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
EnumType  e 
)
noexcept

Definition at line 4794 of file json.hpp.

◆ to_json() [13/17]

template<typename BasicJsonType , typename FloatType , enable_if_t< std::is_floating_point< FloatType >::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
FloatType  val 
)
noexcept

Definition at line 4773 of file json.hpp.

◆ to_json() [14/17]

template<typename BasicJsonType , typename T , enable_if_t< std::is_same< T, typename BasicJsonType::boolean_t >::value, int > = 0>
void nlohmann::detail::to_json ( BasicJsonType &  j,
b 
)
noexcept

Definition at line 4753 of file json.hpp.

Referenced by nlohmann::detail::to_json_fn::operator()().

Here is the caller graph for this function:

◆ to_json() [15/17]

template<typename BasicJsonType >
void nlohmann::detail::to_json ( BasicJsonType &  j,
typename BasicJsonType::array_t &&  arr 
)

Definition at line 4833 of file json.hpp.

◆ to_json() [16/17]

template<typename BasicJsonType >
void nlohmann::detail::to_json ( BasicJsonType &  j,
typename BasicJsonType::object_t &&  obj 
)

Definition at line 4846 of file json.hpp.

◆ to_json() [17/17]

template<typename BasicJsonType >
void nlohmann::detail::to_json ( BasicJsonType &  j,
typename BasicJsonType::string_t &&  s 
)

Definition at line 4766 of file json.hpp.

◆ to_json_tuple_impl()

template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
void nlohmann::detail::to_json_tuple_impl ( BasicJsonType &  j,
const Tuple &  t,
index_sequence< Idx... >   
)

Definition at line 4876 of file json.hpp.

◆ unescape()

static void nlohmann::detail::unescape ( std::string &  s)
static

string unescaping as described in RFC 6901 (Sect. 4)

Parameters
[in]sstring to unescape
Returns
unescaped string

Note the order of escaping "~1" to "/" and "~0" to "~" is important.

Definition at line 2757 of file json.hpp.

References replace_substring().

Referenced by nlohmann::json_pointer< BasicJsonType >::split().

Here is the caller graph for this function: