Project

General

Profile

Template
detail Namespace Reference

detail namespace with internal helper functions More...

Namespaces

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

Classes

struct  actual_object_comparator
 
class  binary_reader
 deserialization of CBOR, MessagePack, and UBJSON values More...
 
struct  conjunction
 
struct  conjunction< B >
 
struct  conjunction< B, 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 >
 
struct  has_from_json
 
struct  has_from_json< BasicJsonType, T, enable_if_t< !is_basic_json< T >::value > >
 
struct  has_key_compare
 
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  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_basic_json_context
 
struct  is_c_string
 
struct  is_comparable
 
struct  is_comparable< Compare, A, B, void_t< decltype(std::declval< Compare >()(std::declval< A >(), std::declval< B >())), decltype(std::declval< Compare >()(std::declval< B >(), std::declval< A >()))> >
 
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_traits
 
struct  is_iterator_traits< iterator_traits< T > >
 
struct  is_json_iterator_of
 
struct  is_json_iterator_of< BasicJsonType, typename BasicJsonType::const_iterator >
 
struct  is_json_iterator_of< BasicJsonType, typename BasicJsonType::iterator >
 
struct  is_json_ref
 
struct  is_json_ref< json_ref< T > >
 
struct  is_ordered_map
 
struct  is_range
 
struct  is_specialization_of
 
struct  is_specialization_of< Primary, Primary< Args... > >
 
struct  is_transparent
 
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
 
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 > >
 
struct  json_default_base
 Default base class of the basic_json class. More...
 
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  parse_error
 exception indicating a parse error More...
 
struct  position_t
 struct to capture the start position of the current token More...
 
struct  priority_tag
 
struct  priority_tag< 0 >
 
class  serializer
 
struct  static_const
 
struct  to_json_fn
 
class  type_error
 exception indicating executing a member function with a wrong type More...
 
struct  value_in_range_of_impl1
 
struct  value_in_range_of_impl1< OfType, T, false >
 
struct  value_in_range_of_impl1< OfType, T, true >
 
struct  value_in_range_of_impl2
 
struct  value_in_range_of_impl2< OfType, T, false, false >
 
struct  value_in_range_of_impl2< OfType, T, false, true >
 
struct  value_in_range_of_impl2< OfType, T, true, false >
 
struct  value_in_range_of_impl2< OfType, T, true, true >
 

Typedefs

template<typename ... Ts>
using void_t = typename make_void< Ts... >::type
 
template<template< class... > class Op, class... Args>
using is_detected = typename detector< nonesuch, void, Op, Args... >::value_t
 
template<template< class... > class Op, class... Args>
using detected_t = typename detector< nonesuch, void, Op, Args... >::type
 
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<class Expected , template< class... > class Op, class... Args>
using is_detected_exact = std::is_same< Expected, detected_t< Op, Args... > >
 
template<class To , template< class... > class Op, class... Args>
using is_detected_convertible = std::is_convertible< detected_t< Op, Args... >, To >
 
template<typename T >
using uncvref_t = typename std::remove_cv< typename std::remove_reference< T >::type >::type
 
template<bool B, typename T = void>
using enable_if_t = typename std::enable_if< B, T >::type
 
template<size_t... Ints>
using index_sequence = integer_sequence< size_t, Ints... >
 
template<typename T , T N>
using make_integer_sequence = typename utility_internal::Gen< T, N >::type
 
template<size_t N>
using make_index_sequence = make_integer_sequence< size_t, N >
 
template<typename... Ts>
using index_sequence_for = make_index_sequence< sizeof...(Ts)>
 
template<typename T >
using mapped_type_t = typename T::mapped_type
 
template<typename T >
using key_type_t = typename T::key_type
 
template<typename T >
using value_type_t = typename T::value_type
 
template<typename T >
using difference_type_t = typename T::difference_type
 
template<typename T >
using pointer_t = typename T::pointer
 
template<typename T >
using reference_t = typename T::reference
 
template<typename T >
using iterator_category_t = typename T::iterator_category
 
template<typename T , typename... Args>
using to_json_function = decltype(T::to_json(std::declval< Args >()...))
 
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<typename T >
using detect_key_compare = typename T::key_compare
 
template<typename BasicJsonType >
using actual_object_comparator_t = typename actual_object_comparator< BasicJsonType >::type
 
template<typename R >
using iterator_t = enable_if_t< is_range< R >::value, result_of_begin< decltype(std::declval< R & >())> >
 
template<typename T >
using range_value_t = value_type_t< iterator_traits< iterator_t< T > > >
 
template<typename T >
using is_json_pointer = is_specialization_of<::nlohmann::json_pointer, uncvref_t< T > >
 
template<typename T >
using detect_is_transparent = typename T::is_transparent
 
template<typename Comparator , typename ObjectKeyType , typename KeyTypeCVRef , bool RequireTransparentComparator = true, bool ExcludeObjectKeyType = RequireTransparentComparator, typename KeyType = uncvref_t<KeyTypeCVRef>>
using is_usable_as_key_type = typename std::conditional< is_comparable< Comparator, ObjectKeyType, KeyTypeCVRef >::value &&!(ExcludeObjectKeyType &&std::is_same< KeyType, ObjectKeyType >::value) &&(!RequireTransparentComparator||is_detected< detect_is_transparent, Comparator >::value) &&!is_json_pointer< KeyType >::value, std::true_type, std::false_type >::type
 
template<typename BasicJsonType , typename KeyTypeCVRef , bool RequireTransparentComparator = true, bool ExcludeObjectKeyType = RequireTransparentComparator, typename KeyType = uncvref_t<KeyTypeCVRef>>
using is_usable_as_basic_json_key_type = typename std::conditional< is_usable_as_key_type< typename BasicJsonType::object_comparator_t, typename BasicJsonType::object_t::key_type, KeyTypeCVRef, RequireTransparentComparator, ExcludeObjectKeyType >::value &&!is_json_iterator_of< BasicJsonType, KeyType >::value, std::true_type, std::false_type >::type
 
template<typename ObjectType , typename KeyType >
using detect_erase_with_key_type = decltype(std::declval< ObjectType & >().erase(std::declval< KeyType >()))
 
template<typename BasicJsonType , typename KeyType >
using has_erase_with_key_type = typename std::conditional< is_detected< detect_erase_with_key_type, typename BasicJsonType::object_t, KeyType >::value, std::true_type, std::false_type >::type
 
template<typename... Types>
using all_integral = conjunction< std::is_integral< Types >... >
 
template<typename... Types>
using all_signed = conjunction< std::is_signed< Types >... >
 
template<typename... Types>
using all_unsigned = conjunction< std::is_unsigned< Types >... >
 
template<typename... Types>
using same_sign = std::integral_constant< bool, all_signed< Types... >::value||all_unsigned< Types... >::value >
 
template<typename OfType , typename T >
using never_out_of_range = std::integral_constant< bool,(std::is_signed< OfType >::value &&(sizeof(T)< sizeof(OfType)))||(same_sign< OfType, T >::value &&sizeof(OfType)==sizeof(T)) >
 
template<bool Value>
using bool_constant = std::integral_constant< bool, Value >
 
template<typename T >
using is_c_string_uncvref = is_c_string< uncvref_t< T > >
 
template<typename StringType , typename Arg >
using string_can_append = decltype(std::declval< StringType & >().append(std::declval< Arg && >()))
 
template<typename StringType , typename Arg >
using detect_string_can_append = is_detected< string_can_append, StringType, Arg >
 
template<typename StringType , typename Arg >
using string_can_append_op = decltype(std::declval< StringType & >()+=std::declval< Arg && >())
 
template<typename StringType , typename Arg >
using detect_string_can_append_op = is_detected< string_can_append_op, StringType, Arg >
 
template<typename StringType , typename Arg >
using string_can_append_iter = decltype(std::declval< StringType & >().append(std::declval< const Arg & >().begin(), std::declval< const Arg & >().end()))
 
template<typename StringType , typename Arg >
using detect_string_can_append_iter = is_detected< string_can_append_iter, StringType, Arg >
 
template<typename StringType , typename Arg >
using string_can_append_data = decltype(std::declval< StringType & >().append(std::declval< const Arg & >().data(), std::declval< const Arg & >().size()))
 
template<typename StringType , typename Arg >
using detect_string_can_append_data = is_detected< string_can_append_data, StringType, Arg >
 
template<class T >
using json_base_class = typename std::conditional< std::is_same< T, void >::value, json_default_base, T >::type
 

Enumerations

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

Functions

bool operator< (const value_t lhs, const value_t rhs) noexcept
 comparison operator for JSON types
 
template<typename StringType >
void replace_substring (StringType &s, const StringType &f, const StringType &t)
 replace all occurrences of a substring by another string
 
template<typename StringType >
StringType escape (StringType s)
 string escaping as described in RFC 6901 (Sect. 4)
 
template<typename T , typename... Args>
constexpr std::array< T, sizeof...(Args)> make_array (Args &&... args)
 
template<typename T , typename U , enable_if_t< !std::is_same< T, U >::value, int > = 0>
conditional_static_cast (U value)
 
template<typename OfType , typename T >
constexpr bool value_in_range_of (T val)
 
std::size_t concat_length ()
 
template<typename... Args>
std::size_t concat_length (const char *cstr, const Args &... rest)
 
template<typename StringType , typename... Args>
std::size_t concat_length (const StringType &str, const Args &... rest)
 
template<typename... Args>
std::size_t concat_length (const char, const Args &... rest)
 
template<typename OutStringType >
void concat_into (OutStringType &)
 
template<typename OutStringType , typename Arg , typename... Args, enable_if_t< !detect_string_can_append< OutStringType, Arg >::value &&detect_string_can_append_op< OutStringType, Arg >::value, int > = 0>
void concat_into (OutStringType &out, Arg &&arg, Args &&... rest)
 
template<typename OutStringType , typename Arg , typename... Args, enable_if_t< !detect_string_can_append< OutStringType, Arg >::value &&!detect_string_can_append_op< OutStringType, Arg >::value &&detect_string_can_append_iter< OutStringType, Arg >::value, int > = 0>
void concat_into (OutStringType &out, const Arg &arg, Args &&... rest)
 
template<typename OutStringType = std::string, typename... Args>
OutStringType concat (Args &&... args)
 
template<typename string_type >
void int_to_string (string_type &target, std::size_t value)
 
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 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 , typename BoolRef , enable_if_t<((std::is_same< std::vector< bool >::reference, BoolRef >::value &&!std::is_same< std::vector< bool >::reference, typename BasicJsonType::boolean_t & >::value)||(std::is_same< std::vector< bool >::const_reference, BoolRef >::value &&!std::is_same< detail::uncvref_t< std::vector< bool >::const_reference >, typename BasicJsonType::boolean_t >::value)) &&std::is_convertible< const BoolRef &, typename BasicJsonType::boolean_t >::value, int > = 0>
void to_json (BasicJsonType &j, const BoolRef &b) noexcept
 
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 >
void to_json (BasicJsonType &j, typename BasicJsonType::string_t &&s)
 
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 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 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 EnumType , enable_if_t< std::is_enum< EnumType >::value, int > = 0>
void to_json (BasicJsonType &j, EnumType e) noexcept
 
template<typename BasicJsonType >
void to_json (BasicJsonType &j, const std::vector< bool > &e)
 
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 >
void to_json (BasicJsonType &j, const typename BasicJsonType::binary_t &bin)
 
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, typename BasicJsonType::array_t &&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 >
void to_json (BasicJsonType &j, typename BasicJsonType::object_t &&obj)
 
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 , 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_same< T, iteration_proxy_value< typename BasicJsonType::iterator > >::value, int > = 0>
void to_json (BasicJsonType &j, const T &b)
 
template<typename BasicJsonType , typename Tuple , std::size_t... Idx>
void to_json_tuple_impl (BasicJsonType &j, const Tuple &t, index_sequence< Idx... >)
 

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

◆ actual_object_comparator_t

template<typename BasicJsonType >
using detail::actual_object_comparator_t = typedef typename actual_object_comparator<BasicJsonType>::type

Definition at line 3582 of file json.hpp.

◆ all_integral

template<typename... Types>
using detail::all_integral = typedef conjunction<std::is_integral<Types>...>

Definition at line 3993 of file json.hpp.

◆ all_signed

template<typename... Types>
using detail::all_signed = typedef conjunction<std::is_signed<Types>...>

Definition at line 3996 of file json.hpp.

◆ all_unsigned

template<typename... Types>
using detail::all_unsigned = typedef conjunction<std::is_unsigned<Types>...>

Definition at line 3999 of file json.hpp.

◆ bool_constant

template<bool Value>
using detail::bool_constant = typedef std::integral_constant<bool, Value>

Definition at line 4088 of file json.hpp.

◆ detect_erase_with_key_type

template<typename ObjectType , typename KeyType >
using detail::detect_erase_with_key_type = typedef decltype(std::declval<ObjectType&>().erase(std::declval<KeyType>()))

Definition at line 3950 of file json.hpp.

◆ detect_is_transparent

template<typename T >
using detail::detect_is_transparent = typedef typename T::is_transparent

Definition at line 3917 of file json.hpp.

◆ detect_key_compare

template<typename T >
using detail::detect_key_compare = typedef typename T::key_compare

Definition at line 3566 of file json.hpp.

◆ detect_string_can_append

template<typename StringType , typename Arg >
using detail::detect_string_can_append = typedef is_detected<string_can_append, StringType, Arg>

Definition at line 4204 of file json.hpp.

◆ detect_string_can_append_data

template<typename StringType , typename Arg >
using detail::detect_string_can_append_data = typedef is_detected<string_can_append_data, StringType, Arg>

Definition at line 4222 of file json.hpp.

◆ detect_string_can_append_iter

template<typename StringType , typename Arg >
using detail::detect_string_can_append_iter = typedef is_detected<string_can_append_iter, StringType, Arg>

Definition at line 4216 of file json.hpp.

◆ detect_string_can_append_op

template<typename StringType , typename Arg >
using detail::detect_string_can_append_op = typedef is_detected<string_can_append_op, StringType, Arg>

Definition at line 4210 of file json.hpp.

◆ detected_or

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

Definition at line 303 of file json.hpp.

◆ detected_or_t

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

Definition at line 306 of file json.hpp.

◆ detected_t

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

Definition at line 300 of file json.hpp.

◆ difference_type_t

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

Definition at line 3491 of file json.hpp.

◆ enable_if_t

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

Definition at line 3082 of file json.hpp.

◆ from_json_function

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

Definition at line 3506 of file json.hpp.

◆ get_template_function

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

Definition at line 3509 of file json.hpp.

◆ has_erase_with_key_type

template<typename BasicJsonType , typename KeyType >
using detail::has_erase_with_key_type = typedef typename std::conditional < is_detected < detect_erase_with_key_type, typename BasicJsonType::object_t, KeyType >::value, std::true_type, std::false_type >::type

Definition at line 3954 of file json.hpp.

◆ index_sequence

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

Definition at line 3124 of file json.hpp.

◆ index_sequence_for

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

Definition at line 3186 of file json.hpp.

◆ is_c_string_uncvref

template<typename T >
using detail::is_c_string_uncvref = typedef is_c_string<uncvref_t<T> >

Definition at line 4116 of file json.hpp.

◆ is_detected

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

Definition at line 294 of file json.hpp.

◆ is_detected_convertible

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

Definition at line 312 of file json.hpp.

◆ is_detected_exact

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

Definition at line 309 of file json.hpp.

◆ is_json_pointer

template<typename T >
using detail::is_json_pointer = typedef is_specialization_of<::nlohmann::json_pointer, uncvref_t<T> >

Definition at line 3904 of file json.hpp.

◆ is_usable_as_basic_json_key_type

template<typename BasicJsonType , typename KeyTypeCVRef , bool RequireTransparentComparator = true, bool ExcludeObjectKeyType = RequireTransparentComparator, typename KeyType = uncvref_t<KeyTypeCVRef>>
using detail::is_usable_as_basic_json_key_type = typedef typename std::conditional < is_usable_as_key_type<typename BasicJsonType::object_comparator_t, typename BasicJsonType::object_t::key_type, KeyTypeCVRef, RequireTransparentComparator, ExcludeObjectKeyType>::value && !is_json_iterator_of<BasicJsonType, KeyType>::value, std::true_type, std::false_type >::type

Definition at line 3941 of file json.hpp.

◆ is_usable_as_key_type

template<typename Comparator , typename ObjectKeyType , typename KeyTypeCVRef , bool RequireTransparentComparator = true, bool ExcludeObjectKeyType = RequireTransparentComparator, typename KeyType = uncvref_t<KeyTypeCVRef>>
using detail::is_usable_as_key_type = typedef typename std::conditional < is_comparable<Comparator, ObjectKeyType, KeyTypeCVRef>::value && !(ExcludeObjectKeyType && std::is_same<KeyType, ObjectKeyType>::value) && (!RequireTransparentComparator || is_detected <detect_is_transparent, Comparator>::value) && !is_json_pointer<KeyType>::value, std::true_type, std::false_type >::type

Definition at line 3923 of file json.hpp.

◆ iterator_category_t

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

Definition at line 3500 of file json.hpp.

◆ iterator_t

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

Definition at line 3675 of file json.hpp.

◆ json_base_class

template<class T >
using detail::json_base_class = typedef typename std::conditional < std::is_same<T, void>::value, json_default_base, T >::type

Definition at line 13705 of file json.hpp.

◆ key_type_t

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

Definition at line 3485 of file json.hpp.

◆ make_index_sequence

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

Definition at line 3178 of file json.hpp.

◆ make_integer_sequence

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

Definition at line 3170 of file json.hpp.

◆ mapped_type_t

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

Definition at line 3482 of file json.hpp.

◆ never_out_of_range

template<typename OfType , typename T >
using detail::never_out_of_range = typedef std::integral_constant < bool, (std::is_signed<OfType>::value && (sizeof(T) < sizeof(OfType))) || (same_sign<OfType, T>::value && sizeof(OfType) == sizeof(T)) >

Definition at line 4007 of file json.hpp.

◆ pointer_t

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

Definition at line 3494 of file json.hpp.

◆ range_value_t

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

Definition at line 3678 of file json.hpp.

◆ reference_t

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

Definition at line 3497 of file json.hpp.

◆ same_sign

template<typename... Types>
using detail::same_sign = typedef std::integral_constant < bool, all_signed<Types...>::value || all_unsigned<Types...>::value >

Definition at line 4003 of file json.hpp.

◆ string_can_append

template<typename StringType , typename Arg >
using detail::string_can_append = typedef decltype(std::declval<StringType&>().append(std::declval < Arg && > ()))

Definition at line 4201 of file json.hpp.

◆ string_can_append_data

template<typename StringType , typename Arg >
using detail::string_can_append_data = typedef decltype(std::declval<StringType&>().append(std::declval<const Arg&>().data(), std::declval<const Arg&>().size()))

Definition at line 4219 of file json.hpp.

◆ string_can_append_iter

template<typename StringType , typename Arg >
using detail::string_can_append_iter = typedef decltype(std::declval<StringType&>().append(std::declval<const Arg&>().begin(), std::declval<const Arg&>().end()))

Definition at line 4213 of file json.hpp.

◆ string_can_append_op

template<typename StringType , typename Arg >
using detail::string_can_append_op = typedef decltype(std::declval<StringType&>() += std::declval < Arg && > ())

Definition at line 4207 of file json.hpp.

◆ to_json_function

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

Definition at line 3503 of file json.hpp.

◆ uncvref_t

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

Definition at line 3068 of file json.hpp.

◆ value_type_t

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

Definition at line 3488 of file json.hpp.

◆ void_t

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

Definition at line 255 of file json.hpp.

Enumeration Type Documentation

◆ cbor_tag_handler_t

enum class 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

store 

store tags as binary type

Definition at line 9117 of file json.hpp.

◆ error_handler_t

enum class 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

Definition at line 17965 of file json.hpp.

◆ value_t

enum class 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 2859 of file json.hpp.

Function Documentation

◆ concat()

template<typename OutStringType = std::string, typename... Args>
OutStringType detail::concat ( Args &&...  args)
inline

Definition at line 4281 of file json.hpp.

◆ concat_into() [1/3]

template<typename OutStringType >
void detail::concat_into ( OutStringType &  )
inline

Definition at line 4197 of file json.hpp.

◆ concat_into() [2/3]

template<typename OutStringType , typename Arg , typename... Args, enable_if_t< !detect_string_can_append< OutStringType, Arg >::value &&detect_string_can_append_op< OutStringType, Arg >::value, int > = 0>
void detail::concat_into ( OutStringType &  out,
Arg &&  arg,
Args &&...  rest 
)
inline

Definition at line 4244 of file json.hpp.

◆ concat_into() [3/3]

template<typename OutStringType , typename Arg , typename... Args, enable_if_t< !detect_string_can_append< OutStringType, Arg >::value &&!detect_string_can_append_op< OutStringType, Arg >::value &&detect_string_can_append_iter< OutStringType, Arg >::value, int > = 0>
void detail::concat_into ( OutStringType &  out,
const Arg &  arg,
Args &&...  rest 
)
inline

Definition at line 4263 of file json.hpp.

◆ concat_length() [1/4]

std::size_t detail::concat_length ( )
inline

Definition at line 4166 of file json.hpp.

◆ concat_length() [2/4]

template<typename... Args>
std::size_t detail::concat_length ( const char *  cstr,
const Args &...  rest 
)
inline

Definition at line 4184 of file json.hpp.

◆ concat_length() [3/4]

template<typename... Args>
std::size_t detail::concat_length ( const char  ,
const Args &...  rest 
)
inline

Definition at line 4178 of file json.hpp.

◆ concat_length() [4/4]

template<typename StringType , typename... Args>
std::size_t detail::concat_length ( const StringType &  str,
const Args &...  rest 
)
inline

Definition at line 4191 of file json.hpp.

◆ conditional_static_cast()

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

Definition at line 3981 of file json.hpp.

◆ escape()

template<typename StringType >
StringType detail::escape ( StringType  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 2977 of file json.hpp.

◆ get()

template<std::size_t N, typename IteratorType , enable_if_t< N==0, int > = 0>
auto detail::get ( const nlohmann::detail::iteration_proxy_value< IteratorType > &  i) -> decltype(i.key())

Definition at line 5275 of file json.hpp.

◆ int_to_string()

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

Definition at line 5112 of file json.hpp.

◆ make_array()

template<typename T , typename... Args>
constexpr std::array< T, sizeof...(Args)> detail::make_array ( Args &&...  args)
inlineconstexpr

Definition at line 3209 of file json.hpp.

◆ operator<()

bool 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 2889 of file json.hpp.

◆ replace_substring()

template<typename StringType >
void detail::replace_substring ( StringType &  s,
const StringType &  f,
const StringType &  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 2958 of file json.hpp.

◆ to_json() [1/18]

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

Definition at line 5622 of file json.hpp.

◆ to_json() [2/18]

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

Definition at line 5615 of file json.hpp.

◆ to_json() [3/18]

template<typename BasicJsonType , typename BoolRef , enable_if_t<((std::is_same< std::vector< bool >::reference, BoolRef >::value &&!std::is_same< std::vector< bool >::reference, typename BasicJsonType::boolean_t & >::value)||(std::is_same< std::vector< bool >::const_reference, BoolRef >::value &&!std::is_same< detail::uncvref_t< std::vector< bool >::const_reference >, typename BasicJsonType::boolean_t >::value)) &&std::is_convertible< const BoolRef &, typename BasicJsonType::boolean_t >::value, int > = 0>
void detail::to_json ( BasicJsonType &  j,
const BoolRef &  b 
)
inlinenoexcept

Definition at line 5588 of file json.hpp.

◆ to_json() [4/18]

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 detail::to_json ( BasicJsonType &  j,
const CompatibleArrayType &  arr 
)
inline

Definition at line 5651 of file json.hpp.

◆ to_json() [5/18]

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

Definition at line 5677 of file json.hpp.

◆ to_json() [6/18]

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

Definition at line 5595 of file json.hpp.

◆ to_json() [7/18]

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 detail::to_json ( BasicJsonType &  j,
const std::pair< T1, T2 > &  p 
)
inline

Definition at line 5699 of file json.hpp.

◆ to_json() [8/18]

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

Definition at line 5664 of file json.hpp.

◆ to_json() [9/18]

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

Definition at line 5638 of file json.hpp.

◆ to_json() [10/18]

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

Definition at line 5707 of file json.hpp.

◆ to_json() [11/18]

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 detail::to_json ( BasicJsonType &  j,
const T(&)  arr[N] 
)
inline

Definition at line 5693 of file json.hpp.

◆ to_json() [12/18]

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

Definition at line 5657 of file json.hpp.

◆ to_json() [13/18]

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

Definition at line 5630 of file json.hpp.

◆ to_json() [14/18]

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

Definition at line 5608 of file json.hpp.

◆ to_json() [15/18]

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

Definition at line 5575 of file json.hpp.

◆ to_json() [16/18]

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

Definition at line 5670 of file json.hpp.

◆ to_json() [17/18]

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

Definition at line 5683 of file json.hpp.

◆ to_json() [18/18]

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

Definition at line 5601 of file json.hpp.

◆ to_json_tuple_impl()

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

Definition at line 5713 of file json.hpp.

◆ value_in_range_of()

template<typename OfType , typename T >
constexpr bool detail::value_in_range_of ( val)
inlineconstexpr

Definition at line 4082 of file json.hpp.