DAW JSON Link
|
Customization point traits. More...
Classes | |
struct | basic_appender |
struct | basic_json_pair |
A name/value pair of string_view/json_value. More... | |
struct | basic_json_value |
A non-owning container for arbitrary JSON values that allows movement/iteration through. More... | |
struct | basic_json_value_iterator |
Iterator for iterating over arbitrary JSON members and array elements. More... | |
struct | basic_json_value_iterator_range |
a rudimentary range object for holding basic_json_value_iterator More... | |
class | basic_stateful_json_value |
struct | BasicParsePolicy |
Handles the bounds and policy items for parsing execution and comments. More... | |
struct | constexpr_exec_tag |
struct | construct_from_iso8601_timestamp |
struct | construct_from_iso8601_timestamp< std::chrono::time_point< Clock, Duration > > |
class | CppCommentSkippingPolicy |
struct | default_constructor |
Default Constructor for a type. It accounts for aggregate types and uses brace construction for them. More... | |
struct | default_constructor< json_alt< T, I > > |
Default constructor for json_alt is to construct the base type. More... | |
struct | default_constructor< std::array< T, Sz > > |
Default constructor type for std::array and allows (Iterator, Iterator) construction. More... | |
struct | default_constructor< std::unordered_map< Key, T, Hash, CompareEqual, Alloc > > |
default constructor for std::unordered_map. Allows construction via (Iterator, Iterator, Allocator) More... | |
struct | default_constructor< std::vector< T, Alloc > > |
Default constructor type for std::vector. It will reserve up front for non-random iterators. More... | |
struct | default_from_json_converter_t |
struct | default_to_json_converter_t |
class | DefaultJsonEventParserStackPolicy |
struct | DefaultParsePolicy |
class | HashCommentSkippingPolicy |
struct | json_alt |
Allows for alternate/multiple mappings of types that already have mappings. More... | |
struct | json_array |
class | json_array_iterator_once |
Iterator for iterating over JSON array's. Requires that op op++ be called in that sequence one time until end is reached. More... | |
class | json_array_iterator_t |
struct | json_array_range |
A range of json_array_iterators. More... | |
struct | json_array_range_once |
A range of json_array_iterator_onces. Requires that op*/op++ be called in that sequence one time untl end is reached. More... | |
struct | json_bool |
struct | json_class |
struct | json_custom |
Allow parsing of a type that does not fit. More... | |
struct | json_data_contract |
Mapping class for JSON data structures to C++. It must be specialized in order to parse to a user class. More... | |
struct | json_data_contract< basic_json_value< PolicyFlags, Allocator > > |
struct | json_data_contract< T > |
struct | json_data_contract< tuple_json_mapping< Members... > > |
struct | json_date |
struct | json_intrusive_variant |
struct | json_key_value |
struct | json_key_value_array |
Map a KV type json array [ {"key": ValueOfKeyType, "value": ValueOfValueType},... ] to a c++ class. needs to be constructable with a pointer, size. More... | |
class | json_lines_iterator |
Iterator for iterating over JSON array's. More... | |
struct | json_lines_range |
A range of json_lines_iterators. More... | |
struct | json_member_list |
struct | json_member_name |
struct | json_nullable |
struct | json_number |
class | json_path_node |
struct | json_raw |
struct | json_sized_array |
struct | json_string |
struct | json_string_raw |
struct | json_submember_tagged_variant |
struct | json_tagged_variant |
struct | json_tuple |
struct | json_tuple_member |
struct | json_tuple_member_list |
Allow extracting elements from a JSON array and constructing from it. Members can be either normal C++ no_name members, or an ordered_member with a position. All ordered members must have a value greater than the previous. The first element in the list, unless it is specified as an ordered_member, is 0. A non-ordered_member item will be 1 more than the previous item in the list. All items must have an index greater than the previous. In Javascript these are also called tuples. More... | |
struct | json_tuple_types_list |
struct | json_type_alias |
struct | json_variant |
struct | json_variant_type_list |
struct | JsonEventParserStackValue |
struct | missing_json_data_contract_for_or_unknown_type |
This class is used as a way to indicate that a json_data_contract specialization has not been done for a user class. More... | |
struct | NoCommentSkippingPolicy |
struct | non_discriminated_variant_base_map |
struct | non_discriminated_variant_base_map< json_variant_type_list< JsonElements... > > |
This ensures that we only map to up to one of each of the basic JSON types(Number, Bool, String, Array, Class) plus being optionally nullable. More... | |
struct | nullable_constructor |
Default constructor for nullable types. Specializations must accept accept an operator( )( ) that signifies a JSON null. Any other arguments only need to be valid to construct the type. More... | |
struct | nullable_constructor< T DAW_JSON_ENABLEIF_S(concepts::is_nullable_value_v< T >)> |
Default constructor for readable nullable types. More... | |
struct | runtime_exec_tag |
struct | serialization_policy |
struct | simd_exec_tag |
struct | tuple_elements_pack |
Allow tuple like types to be used in json_tuple. More... | |
struct | tuple_elements_pack< daw::fwd_pack< Ts... > > |
struct | tuple_elements_pack< std::tuple< Ts... > > |
struct | tuple_json_mapping |
Typedefs | |
using | bool_opts_t = json_details::JsonOptionList< options::LiteralAsStringOpt > |
template<typename T > | |
using | can_single_allocation_string = std::bool_constant< can_single_allocation_string_v< T > > |
using | daw_json_error_handler_t = daw::not_null< void(*)(json_exception &&, void *)> |
using | default_exec_tag = constexpr_exec_tag |
template<json_options_t PolicyFlags = json_details::default_policy_flag, typename Allocator = json_details::NoAllocator> | |
using | GetParsePolicy = daw::conditional_t<(PolicyFlags==json_details::default_policy_flag and std::is_same_v< Allocator, json_details::NoAllocator >), DefaultParsePolicy, BasicParsePolicy< PolicyFlags, Allocator > > |
template<typename T > | |
using | is_zero_terminated_string = std::bool_constant< is_zero_terminated_string_v< T > > |
template<typename JsonElement , auto... PolicyFlags> | |
using | json_array_iterator = json_array_iterator_t< JsonElement, TryDefaultParsePolicy< BasicParsePolicy< options::details::make_parse_flags< PolicyFlags... >().value > >> |
template<typename JsonElement , typename Container = use_default, typename Constructor = use_default> | |
using | json_array_no_name = json_base::json_array< JsonElement, Container, Constructor > |
template<char const * Name, typename WrappedContainer , typename JsonElement = typename json_details::unwrapped_t<WrappedContainer>::value_type, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_array_null = json_nullable< Name, WrappedContainer, json_base::json_array< JsonElement, json_details::unwrapped_t< WrappedContainer > >, NullableType, Constructor > |
template<typename JsonElement , typename WrappedContainer , JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_array_null_no_name = json_base::json_nullable< WrappedContainer, json_base::json_array< JsonElement, json_details::unwrapped_t< WrappedContainer > >, NullableType, Constructor > |
template<typename T = bool, json_options_t Options = bool_opts_def, typename Constructor = use_default> | |
using | json_bool_no_name = json_base::json_bool< T, Options, Constructor > |
template<char const * Name, typename T = std::optional<bool>, json_options_t Options = bool_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_bool_null = json_nullable< Name, T, json_base::json_bool< json_details::unwrapped_t< T >, Options >, NullableType, Constructor > |
template<typename T = std::optional<bool>, json_options_t Options = bool_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_bool_null_no_name = json_base::json_nullable< T, json_base::json_bool< json_details::unwrapped_t< T >, Options >, NullableType, Constructor > |
template<char const * Name, typename T = double, json_options_t Options = number_opts_def, typename Constructor = use_default> | |
using | json_checked_number = json_number< Name, T, json_details::number_opts_set< Options, options::JsonRangeCheck::CheckForNarrowing >, Constructor > |
template<typename T = double, json_options_t Options = number_opts_def, typename Constructor = use_default> | |
using | json_checked_number_no_name = json_base::json_number< T, json_details::number_opts_set< Options, options::JsonRangeCheck::CheckForNarrowing >, Constructor > |
template<char const * Name, typename T = std::optional<double>, json_options_t Options = number_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_checked_number_null = json_nullable< Name, T, json_base::json_number< json_details::unwrapped_t< T >, json_details::number_opts_set< Options, options::JsonRangeCheck::CheckForNarrowing > >, NullableType, Constructor > |
template<typename T = std::optional<double>, json_options_t Options = number_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_checked_number_null_no_name = json_base::json_nullable< T, json_base::json_number< json_details::unwrapped_t< T >, json_details::number_opts_set< Options, options::JsonRangeCheck::CheckForNarrowing > >, NullableType, Constructor > |
template<typename T , typename Constructor = use_default> | |
using | json_class_no_name = json_base::json_class< T, Constructor > |
template<char const * Name, typename T , JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_class_null = json_nullable< Name, T, json_base::json_class< json_details::unwrapped_t< T > >, NullableType, Constructor > |
template<typename T , JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_class_null_no_name = json_base::json_nullable< T, json_base::json_class< json_details::unwrapped_t< T > >, NullableType, Constructor > |
template<char const * Name, typename T , typename FromJsonConverter = use_default, typename ToJsonConverter = use_default, json_options_t Options = json_custom_opts_def> | |
using | json_custom_lit = json_custom< Name, T, FromJsonConverter, ToJsonConverter, json_details::json_custom_opts_set< Options, options::JsonCustomTypes::Literal > > |
template<typename T , typename FromJsonConverter = use_default, typename ToJsonConverter = use_default, json_options_t Options = json_custom_opts_def> | |
using | json_custom_lit_no_name = json_base::json_custom< T, FromJsonConverter, ToJsonConverter, json_details::json_custom_opts_set< Options, options::JsonCustomTypes::Literal > > |
template<char const * Name, typename WrappedT , typename FromJsonConverter = use_default, typename ToJsonConverter = use_default, json_options_t Options = json_custom_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_custom_lit_null = json_nullable< Name, WrappedT, json_base::json_custom< json_details::unwrapped_t< WrappedT >, FromJsonConverter, ToJsonConverter, json_details::json_custom_opts_set< Options, options::JsonCustomTypes::Literal > >, NullableType, Constructor > |
template<typename T , typename FromJsonConverter = use_default, typename ToJsonConverter = use_default, json_options_t Options = json_custom_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_custom_lit_null_no_name = json_base::json_nullable< T, json_base::json_custom< json_details::unwrapped_t< T >, FromJsonConverter, ToJsonConverter, json_details::json_custom_opts_set< Options, options::JsonCustomTypes::Literal > >, NullableType, Constructor > |
template<typename T , typename FromJsonConverter = use_default, typename ToJsonConverter = use_default, json_options_t Options = json_custom_opts_def> | |
using | json_custom_no_name = json_base::json_custom< T, FromJsonConverter, ToJsonConverter, Options > |
template<char const * Name, typename WrappedT , typename FromJsonConverter = use_default, typename ToJsonConverter = use_default, json_options_t Options = json_custom_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_custom_null = json_nullable< Name, WrappedT, json_base::json_custom< json_details::unwrapped_t< WrappedT >, FromJsonConverter, ToJsonConverter, Options >, NullableType, Constructor > |
template<typename T , typename FromJsonConverter = use_default, typename ToJsonConverter = use_default, json_options_t Options = json_custom_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_custom_null_no_name = json_base::json_nullable< T, json_base::json_custom< json_details::unwrapped_t< T >, FromJsonConverter, ToJsonConverter, Options >, NullableType, Constructor > |
using | json_custom_opts_t = json_details::JsonOptionList< options::JsonCustomTypes > |
template<typename T > | |
using | json_data_contract_trait_t = typename json_data_contract< T >::type |
This trait gets us the mapping type from the contract. More... | |
template<typename T , typename Constructor = use_default> | |
using | json_date_no_name = json_base::json_date< T, Constructor > |
template<char const * Name, typename T = std::optional<std::chrono::time_point< std::chrono::system_clock, std::chrono::milliseconds>>, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_date_null = json_nullable< Name, T, json_base::json_date< json_details::unwrapped_t< T > >, NullableType, Constructor > |
template<typename T , JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_date_null_no_name = json_base::json_nullable< T, json_base::json_date< json_details::unwrapped_t< T > >, NullableType, Constructor > |
template<char const * Name, typename T = json_value, typename Constructor = use_default, auto... > | |
using | json_delayed = json_raw< Name, T, Constructor > |
template<char const * Name, typename T = std::optional<json_value>, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_delayed_null = json_raw_null< Name, T, NullableType, Constructor > |
template<typename T , typename TagMember , typename Switcher , typename JsonElements = use_default, typename Constructor = use_default> | |
using | json_intrusive_variant_no_name = json_base::json_intrusive_variant< T, TagMember, Switcher, JsonElements, Constructor > |
template<typename T , typename TagMember , typename Switcher , typename JsonElements = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_intrusive_variant_null_no_name = json_base::json_nullable< T, json_base::json_intrusive_variant< json_details::unwrapped_t< T >, TagMember, Switcher, JsonElements >, NullableType, Constructor > |
template<typename Container , typename JsonValueType = use_default, typename JsonKeyType = use_default, typename Constructor = use_default> | |
using | json_key_value_array_no_name = json_base::json_key_value_array< Container, JsonValueType, JsonKeyType, Constructor > |
template<char const * Name, typename WrappedContainer , typename JsonValueType = use_default, typename JsonKeyType = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_key_value_array_null = json_nullable< Name, WrappedContainer, json_base::json_key_value_array< json_details::unwrapped_t< WrappedContainer >, JsonValueType, JsonKeyType >, NullableType, Constructor > |
template<typename WrappedContainer , typename JsonValueType = use_default, typename JsonKeyType = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_key_value_array_null_no_name = json_base::json_nullable< WrappedContainer, json_base::json_key_value_array< json_details::unwrapped_t< WrappedContainer >, JsonValueType, JsonKeyType >, NullableType, Constructor > |
template<typename Container , typename JsonValueType = typename Container::mapped_type, typename JsonKeyType = typename Container::key_type, typename Constructor = use_default> | |
using | json_key_value_no_name = json_base::json_key_value< Container, JsonValueType, JsonKeyType, Constructor > |
template<char const * Name, typename Container , typename JsonValueType = use_default, typename JsonKeyType = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_key_value_null = json_nullable< Name, Container, json_base::json_key_value< json_details::unwrapped_t< Container >, JsonValueType, JsonKeyType >, NullableType, Constructor > |
template<typename WrappedContainer , typename JsonValueType = typename json_details::unwrapped_t< WrappedContainer>::mapped_type, typename JsonKeyType = typename json_details::unwrapped_t<WrappedContainer>::key_type, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_key_value_null_no_name = json_base::json_nullable< WrappedContainer, json_base::json_key_value< json_details::unwrapped_t< WrappedContainer >, JsonValueType, JsonKeyType >, NullableType, Constructor > |
template<char const * Name, typename T > | |
using | json_link = typename json_details::ensure_mapped_t< json_details::json_deduced_type< T > >::template with_name< Name > |
Deduce the json type mapping based on common types and types already mapped. More... | |
template<typename T > | |
using | json_link_no_name = json_details::ensure_mapped_t< json_details::json_deduced_type< T > > |
Deduce the json type mapping based on common types and types already mapped. This version is for when a name is unneeded, such as array element types. More... | |
template<typename T = double, json_options_t Options = number_opts_def, typename Constructor = use_default> | |
using | json_number_no_name = json_base::json_number< T, Options, Constructor > |
template<char const * Name, typename T = std::optional<double>, json_options_t Options = number_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_number_null = json_nullable< Name, T, json_base::json_number< json_details::unwrapped_t< T >, Options >, NullableType, Constructor > |
template<typename T = std::optional<double>, json_options_t Options = number_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_number_null_no_name = json_base::json_nullable< T, json_base::json_number< json_details::unwrapped_t< T >, Options >, NullableType, Constructor > |
using | json_options_t = std::uint32_t |
template<typename... JsonMembers> | |
using | json_ordered_member_list = json_tuple_member_list< JsonMembers... > |
using | json_pair = basic_json_pair<> |
template<typename T = json_value, typename Constructor = use_default> | |
using | json_raw_no_name = json_base::json_raw< T, Constructor > |
template<char const * Name, typename T = std::optional<json_value>, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_raw_null = json_nullable< Name, T, json_base::json_raw< json_details::unwrapped_t< T > >, NullableType, Constructor > |
template<typename T = std::optional<json_value>, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_raw_null_no_name = json_base::json_nullable< T, json_base::json_raw< json_details::unwrapped_t< T > >, NullableType, Constructor > |
template<typename JsonElement , typename SizeMember , typename Container = use_default, typename Constructor = use_default> | |
using | json_sized_array_no_name = json_base::json_sized_array< JsonElement, SizeMember, Container, Constructor > |
template<typename JsonElement , typename SizeMember , typename WrappedContainer , JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_sized_array_null_no_name = json_base::json_nullable< WrappedContainer, json_base::json_sized_array< JsonElement, SizeMember, json_details::unwrapped_t< WrappedContainer > >, NullableType, Constructor > |
template<typename T = std::string, json_options_t Options = string_opts_def, typename Constructor = use_default> | |
using | json_string_no_name = json_base::json_string< T, Options, Constructor > |
template<char const * Name, typename T = std::optional<std::string>, json_options_t Options = string_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_string_null = json_nullable< Name, T, json_base::json_string< json_details::unwrapped_t< T >, Options >, NullableType, Constructor > |
template<typename T = std::optional<std::string>, json_options_t Options = string_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_string_null_no_name = json_base::json_nullable< T, json_base::json_string< json_details::unwrapped_t< T >, Options >, NullableType, Constructor > |
template<typename T = std::string, json_options_t Options = string_raw_opts_def, typename Constructor = use_default> | |
using | json_string_raw_no_name = json_base::json_string_raw< T, Options, Constructor > |
template<char const * Name, typename T = std::optional<std::string>, json_options_t Options = string_raw_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_string_raw_null = json_nullable< Name, T, json_base::json_string_raw< json_details::unwrapped_t< T >, Options >, NullableType, Constructor > |
template<typename T = std::optional<std::string>, json_options_t Options = string_raw_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_string_raw_null_no_name = json_base::json_nullable< T, json_base::json_string_raw< json_details::unwrapped_t< T >, Options >, NullableType, Constructor > |
template<typename T , typename TagMember , typename Switcher , typename JsonElements = use_default, typename Constructor = use_default> | |
using | json_tagged_variant_no_name = json_base::json_tagged_variant< T, TagMember, Switcher, JsonElements, Constructor > |
template<char const * Name, typename WrappedVariant , typename TagMember , typename Switcher , typename JsonElements = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_tagged_variant_null = json_nullable< Name, WrappedVariant, json_base::json_tagged_variant< json_details::unwrapped_t< WrappedVariant >, TagMember, Switcher, JsonElements >, NullableType, Constructor > |
template<typename T , typename TagMember , typename Switcher , typename JsonElements = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_tagged_variant_null_no_name = json_base::json_nullable< T, json_base::json_tagged_variant< json_details::unwrapped_t< T >, TagMember, Switcher, JsonElements >, NullableType, Constructor > |
template<typename... JsonElements> | |
using | json_tagged_variant_type_list = json_variant_type_list< JsonElements... > |
template<typename Tuple , typename Constructor = use_default, typename JsonTupleTypesList = use_default> | |
using | json_tuple_no_name = json_base::json_tuple< Tuple, Constructor, JsonTupleTypesList > |
template<char const * Name, typename WrappedTuple , typename JsonTupleTypesList = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_tuple_null = json_nullable< Name, WrappedTuple, json_base::json_tuple< json_details::unwrapped_t< WrappedTuple >, JsonTupleTypesList >, NullableType, Constructor > |
template<typename WrappedTuple , typename JsonTupleTypesList = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_tuple_null_no_name = json_base::json_nullable< WrappedTuple, JsonTupleTypesList, NullableType, Constructor > |
using | json_value = basic_json_value<> |
An untyped JSON value. More... | |
using | json_value_state = basic_stateful_json_value<> |
template<typename Variant , typename JsonElements = use_default, typename Constructor = use_default> | |
using | json_variant_no_name = json_base::json_variant< Variant, JsonElements, Constructor > |
template<char const * Name, typename WrappedVariant , typename JsonElements = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_variant_null = json_nullable< Name, WrappedVariant, json_base::json_variant< json_details::unwrapped_t< WrappedVariant >, JsonElements >, NullableType, Constructor > |
template<typename Variant , typename JsonElements = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default> | |
using | json_variant_null_no_name = json_base::json_nullable< Variant, json_base::json_variant< json_details::unwrapped_t< Variant >, JsonElements >, NullableType, Constructor > |
using | number_opts_t = json_details::JsonOptionList< options::LiteralAsStringOpt, options::JsonRangeCheck, options::JsonNumberErrors, options::FPOutputFormat > |
template<std::size_t Index, typename JsonMember > | |
using | ordered_json_member = json_tuple_member< Index, JsonMember > |
template<JsonParseTypes v> | |
using | ParseTag = daw::constant< v > |
using | string_opts_t = json_details::JsonOptionList< options::EightBitModes > |
using | string_raw_opts_t = json_details::JsonOptionList< options::EightBitModes, options::AllowEscapeCharacter > |
template<typename ParsePolicy > | |
using | TryDefaultParsePolicy = daw::conditional_t< ParsePolicy::is_default_parse_policy, DefaultParsePolicy, ParsePolicy > |
Enumerations | |
enum | json_parse_handler_result { Continue , SkipClassArray , Complete } |
enum class | JsonBaseParseTypes : std::uint_fast8_t { Number , Bool , String , Class , Array , Null , None } |
The fundamental JSON types. More... | |
enum class | JsonNullable : unsigned { Nullable , NullVisible } |
Control how json_nullable members are serialized. More... | |
enum class | JsonParseTypes : std::uint_fast8_t { Real , Signed , Unsigned , Bool , StringRaw , StringEscaped , Date , Class , Array , SizedArray , Null , KeyValue , KeyValueArray , Custom , Variant , VariantTagged , VariantIntrusive , Tuple , Unknown } |
The tags used by the parser to determine what parser to call. More... | |
enum class | StackParseStateType { Class , Array } |
Functions | |
template<typename Result , json_options_t PolicyFlags, typename Allocator > | |
constexpr Result | as (basic_json_value< PolicyFlags, Allocator > const &jv) |
template<json_options_t PolicyFlags, typename Allocator > | |
basic_json_value (BasicParsePolicy< PolicyFlags, Allocator >) -> basic_json_value< PolicyFlags, Allocator > | |
basic_json_value (char const *first, char const *last) -> basic_json_value<> | |
basic_json_value (char const *first, std::size_t sz) -> basic_json_value<> | |
basic_json_value (daw::string_view) -> basic_json_value<> | |
template<json_options_t PolicyFlags, typename Allocator > | |
basic_json_value_iterator (basic_json_value< PolicyFlags, Allocator > const &) -> basic_json_value_iterator< PolicyFlags, Allocator > | |
template<json_options_t PolicyFlags, typename Allocator > | |
basic_json_value_iterator (BasicParsePolicy< PolicyFlags, Allocator > const &) -> basic_json_value_iterator< PolicyFlags, Allocator > | |
basic_json_value_iterator (daw::string_view) -> basic_json_value_iterator<> | |
template<typename Allocator > | |
basic_json_value_iterator (daw::string_view, Allocator const &) -> basic_json_value_iterator< daw::json::json_details::default_policy_flag, Allocator > | |
template<json_options_t PolicyFlags, typename Allocator > | |
basic_json_value_iterator_range (basic_json_value_iterator< PolicyFlags, Allocator >, basic_json_value_iterator< PolicyFlags, Allocator >) -> basic_json_value_iterator_range< PolicyFlags, Allocator > | |
basic_stateful_json_value () -> basic_stateful_json_value<> | |
template<json_options_t PolicyFlags, typename Allocator > | |
basic_stateful_json_value (basic_json_value< PolicyFlags, Allocator >) -> basic_stateful_json_value< PolicyFlags, Allocator > | |
basic_stateful_json_value (daw::string_view) -> basic_stateful_json_value<> | |
BasicParsePolicy () -> BasicParsePolicy<> | |
BasicParsePolicy (char const *, char const *) -> BasicParsePolicy<> | |
template<typename Allocator > | |
BasicParsePolicy (char const *, char const *, Allocator const &) -> BasicParsePolicy< json_details::default_policy_flag, Allocator > | |
BasicParsePolicy (char const *, char const *, char const *, char const *) -> BasicParsePolicy<> | |
template<typename Allocator > | |
BasicParsePolicy (char const *, char const *, char const *, char const *, Allocator const &) -> BasicParsePolicy< json_details::default_policy_flag, Allocator > | |
DAW_ATTRIB_NOINLINE void | daw_json_error (ErrorReason reason) |
template<typename ParseState > | |
DAW_ATTRIB_NOINLINE void | daw_json_error (ErrorReason reason, ParseState const &location) |
DAW_ATTRIB_NOINLINE void | daw_json_error (json_details::missing_member reason) |
template<typename ParseState > | |
DAW_ATTRIB_NOINLINE void | daw_json_error (json_details::missing_member reason, ParseState const &location) |
DAW_ATTRIB_NOINLINE void | daw_json_error (json_details::missing_token reason) |
template<typename ParseState > | |
DAW_ATTRIB_NOINLINE void | daw_json_error (json_details::missing_token reason, ParseState const &location) |
DAW_JSON_MAKE_REQ_TYPE_ALIAS_TRAIT (ignore_unknown_members_v, json_data_contract< T >::ignore_unknown_members) | |
DAW_JSON_MAKE_REQ_TYPE_ALIAS_TRAIT (is_exact_class_mapping_v, json_data_contract< T >::exact_class_mapping) | |
template<typename T > | |
DAW_JSON_REQUIRES (boost::describe::has_describe_members< T >::value and use_boost_describe_v< T >) struct json_data_contract< T > | |
template<typename JsonClass , typename Value , typename WritableType , auto... PolicyFlags DAW_JSON_ENABLEIF2> | |
DAW_JSON_REQUIRES (concepts::is_writable_output_type_v< daw::remove_cvref_t< WritableType >>) const expr daw | |
DAW_ATTRIB_NOINLINE void | default_error_handler_terminating (json_exception &&jex, void *) |
constexpr std::size_t | find_column_number_of (char const *doc_pos, char const *doc_start) |
constexpr std::size_t | find_column_number_of (json_path_node const &node, char const *doc_start) |
std::vector< json_path_node > | find_json_path_stack_to (char const *parse_location, char const *doc_start) |
Get the json_path_nodes representing the path to the nearest value's position in the document. More... | |
std::vector< json_path_node > | find_json_path_stack_to (json_exception const &jex, char const *doc_start) |
std::string | find_json_path_to (char const *parse_location, char const *doc_start) |
std::string | find_json_path_to (json_exception const &jex, char const *doc_start) |
constexpr std::size_t | find_line_number_of (char const *doc_pos, char const *doc_start) |
constexpr std::size_t | find_line_number_of (json_path_node const &node, char const *doc_start) |
template<typename JsonMember , bool KnownBounds = false, json_options_t P, typename A > | |
constexpr auto | from_json (basic_json_value< P, A > value) |
Parse a value from a json_value. More... | |
template<typename JsonMember , bool KnownBounds = false, json_options_t P, typename A , auto... PolicyFlags> | |
constexpr auto | from_json (basic_json_value< P, A > value, options::parse_flags_t< PolicyFlags... >) |
Parse a value from a json_value. More... | |
template<typename JsonMember , bool KnownBounds, json_options_t P, typename A > | |
constexpr auto | from_json (basic_json_value< P, A > value, std::string_view member_path) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds = false, json_options_t P, typename A , auto... PolicyFlags> | |
constexpr auto | from_json (basic_json_value< P, A > value, std::string_view member_path, options::parse_flags_t< PolicyFlags... >) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds, json_options_t P, typename Allocator , auto... PolicyFlags> | |
constexpr auto | from_json (basic_json_value< P, Allocator > value, options::parse_flags_t< PolicyFlags... >) |
Parse a value from a json_value. More... | |
template<typename JsonMember , bool KnownBounds, json_options_t P, typename Allocator , auto... PolicyFlags> | |
constexpr auto | from_json (basic_json_value< P, Allocator > value, std::string_view member_path, options::parse_flags_t< PolicyFlags... >) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds, json_options_t PolicyFlags, typename Allocator > | |
constexpr auto | from_json (basic_json_value< PolicyFlags > value, std::string_view member_path) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds, json_options_t PolicyFlags, typename Allocator > | |
constexpr auto | from_json (basic_json_value< PolicyFlags, Allocator > value) |
Parse a value from a json_value. More... | |
template<typename JsonMember , bool KnownBounds, typename String > | |
constexpr auto | from_json (String &&json_data) |
Construct the JSONMember from the JSON document argument. More... | |
template<typename JsonMember , bool KnownBounds = false, typename String > | |
constexpr auto | from_json (String &&json_data) |
Construct the JSONMember from the JSON document argument. More... | |
template<typename JsonMember , bool KnownBounds, typename String , auto... PolicyFlags> | |
constexpr auto | from_json (String &&json_data, options::parse_flags_t< PolicyFlags... >) |
Construct the JSONMember from the JSON document argument. More... | |
template<typename JsonMember , bool KnownBounds = false, typename String , auto... PolicyFlags> | |
constexpr auto | from_json (String &&json_data, options::parse_flags_t< PolicyFlags... >) |
template<typename JsonMember , bool KnownBounds, typename String > | |
constexpr auto | from_json (String &&json_data, std::string_view member_path) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds = false, typename String > | |
constexpr auto | from_json (String &&json_data, std::string_view member_path) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds, typename String , auto... PolicyFlags> | |
constexpr auto | from_json (String &&json_data, std::string_view member_path, options::parse_flags_t< PolicyFlags... >) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds = false, typename String , auto... PolicyFlags> | |
constexpr auto | from_json (String &&json_data, std::string_view member_path, options::parse_flags_t< PolicyFlags... >) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds, typename String , typename Allocator > | |
constexpr auto | from_json_alloc (String &&json_data, Allocator const &alloc) |
Construct the JSONMember from the JSON document argument. More... | |
template<typename JsonMember , bool KnownBounds = false, typename String , typename Allocator > | |
constexpr auto | from_json_alloc (String &&json_data, Allocator const &alloc) |
Construct the JSONMember from the JSON document argument. More... | |
template<typename JsonMember , bool KnownBounds, typename String , typename Allocator , auto... PolicyFlags> | |
constexpr auto | from_json_alloc (String &&json_data, Allocator const &alloc, options::parse_flags_t< PolicyFlags... >) |
Construct the JSONMember from the JSON document argument. More... | |
template<typename JsonMember , bool KnownBounds = false, typename String , typename Allocator , auto... PolicyFlags> | |
constexpr auto | from_json_alloc (String &&json_data, Allocator const &alloc, options::parse_flags_t< PolicyFlags... >) |
Construct the JSONMember from the JSON document argument. More... | |
template<typename JsonMember , bool KnownBounds, typename String , typename Allocator > | |
constexpr auto | from_json_alloc (String &&json_data, std::string_view member_path, Allocator const &alloc) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds = false, typename String , typename Allocator > | |
constexpr auto | from_json_alloc (String &&json_data, std::string_view member_path, Allocator const &alloc) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds, typename String , typename Allocator , auto... PolicyFlags> | |
constexpr auto | from_json_alloc (String &&json_data, std::string_view member_path, Allocator const &alloc, options::parse_flags_t< PolicyFlags... >) |
Parse a JSON Member from the json_data starting at member_path. More... | |
template<typename JsonMember , bool KnownBounds = false, typename String , typename Allocator , auto... PolicyFlags> | |
constexpr auto | from_json_alloc (String &&json_data, std::string_view member_path, Allocator const &alloc, options::parse_flags_t< PolicyFlags... >) |
Parse a JSONMember from the json_data starting at member_path. More... | |
template<typename JsonElement , typename Container , typename Constructor , bool KnownBounds, typename String > | |
constexpr Container | from_json_array (String &&json_data) |
Parse JSON data where the root item is an array. More... | |
template<typename JsonElement , typename Container = std::vector<json_details::from_json_result_t<JsonElement>>, typename Constructor = use_default, bool KnownBounds = false, typename String > | |
constexpr Container | from_json_array (String &&json_data) |
Parse JSON data where the root item is an array. More... | |
template<typename JsonElement , typename Container , typename Constructor , bool KnownBounds, typename String , auto... PolicyFlags> | |
constexpr Container | from_json_array (String &&json_data, options::parse_flags_t< PolicyFlags... >) |
Parse JSON data where the root item is an array. More... | |
template<typename JsonElement , typename Container = std::vector<json_details::from_json_result_t<JsonElement>>, typename Constructor = use_default, bool KnownBounds = false, typename String , auto... PolicyFlags> | |
constexpr Container | from_json_array (String &&json_data, options::parse_flags_t< PolicyFlags... >) |
Parse JSON data where the root item is an array. More... | |
template<typename JsonElement , typename Container , typename Constructor , bool KnownBounds, typename String > | |
constexpr Container | from_json_array (String &&json_data, std::string_view member_path) |
Parse JSON data where the root item is an array. More... | |
template<typename JsonElement , typename Container = std::vector<json_details::from_json_result_t<JsonElement>>, typename Constructor = use_default, bool KnownBounds = false, typename String > | |
constexpr Container | from_json_array (String &&json_data, std::string_view member_path) |
Parse JSON data where the root item is an array. More... | |
template<typename JsonElement , typename Container , typename Constructor , bool KnownBounds, typename String , auto... PolicyFlags> | |
constexpr Container | from_json_array (String &&json_data, std::string_view member_path, options::parse_flags_t< PolicyFlags... >) |
Parse JSON data where the root item is an array. More... | |
template<typename JsonElement , typename Container = std::vector<json_details::from_json_result_t<JsonElement>>, typename Constructor = use_default, bool KnownBounds = false, typename String , auto... PolicyFlags> | |
constexpr Container | from_json_array (String &&json_data, std::string_view member_path, options::parse_flags_t< PolicyFlags... >) |
Parse JSON data where the root item is an array. More... | |
template<std::size_t Idx, json_options_t PolicyFlags, typename Allocator > | |
constexpr decltype(auto) | get (basic_json_pair< PolicyFlags, Allocator > &&parse_state) |
template<std::size_t Idx, json_options_t PolicyFlags, typename Allocator > | |
constexpr decltype(auto) | get (basic_json_pair< PolicyFlags, Allocator > &parse_state) |
template<std::size_t Idx, json_options_t PolicyFlags, typename Allocator > | |
constexpr decltype(auto) | get (basic_json_pair< PolicyFlags, Allocator > const &parse_state) |
template<typename Signature = use_default, typename String , typename Callable DAW_JSON_ENABLEIF> | |
constexpr auto | json_apply (String &&json_doc, Callable &&callable) |
Parse to parameters specified in signature and pass them to Callable for evaluation. This is similar to std::apply but using JSON documents instead of tuples. More... | |
template<typename Signature = use_default, typename String , auto... PolicyFlags, typename Callable DAW_JSON_ENABLEIF> | |
constexpr auto | json_apply (String &&json_doc, daw::json::options::parse_flags_t< PolicyFlags... > flags, Callable &&callable) |
Parse to parameters specified in signature and pass them to Callable for evaluation. This is similar to std::apply but using JSON documents instead of tuples. More... | |
template<typename Signature = use_default, typename String , typename Callable DAW_JSON_ENABLEIF> | |
constexpr auto | json_apply (String &&json_doc, std::string_view json_path, Callable &&callable) |
Parse to parameters specified in signature and pass them to Callable for evaluation. This is similar to std::apply but using JSON documents instead of tuples. More... | |
template<typename Signature = use_default, typename String , auto... PolicyFlags, typename Callable DAW_JSON_ENABLEIF> | |
constexpr auto | json_apply (String &&json_doc, std::string_view json_path, daw::json::options::parse_flags_t< PolicyFlags... > flags, Callable &&callable) |
Parse to parameters specified in signature and pass them to Callable for evaluation. This is similar to std::apply but using JSON documents instead of tuples. More... | |
template<json_options_t P, typename A , typename StackContainerPolicy = use_default, typename Handler > | |
constexpr DAW_ATTRIB_INLINE void | json_event_parser (basic_json_value< P, A > bjv, Handler &&handler) |
template<json_options_t P, typename A , typename StackContainerPolicy = use_default, typename Handler , auto... ParseFlags> | |
constexpr void | json_event_parser (basic_json_value< P, A > bjv, Handler &&handler, options::parse_flags_t< ParseFlags... >) |
template<typename Handler > | |
DAW_ATTRIB_INLINE void | json_event_parser (daw::string_view json_document, Handler &&handler) |
template<typename Handler , auto... ParseFlags> | |
DAW_ATTRIB_INLINE void | json_event_parser (daw::string_view json_document, Handler &&handler, options::parse_flags_t< ParseFlags... > pflags) |
json_lines_iterator (daw::string_view) -> json_lines_iterator<> | |
json_lines_range (daw::string_view) -> json_lines_range<> | |
template<typename JsonElement , auto... PolicyFlags> | |
json_lines_range (json_lines_iterator< JsonElement, PolicyFlags... >, json_lines_iterator< JsonElement, PolicyFlags... >) -> json_lines_range< JsonElement, PolicyFlags... > | |
DAW_CONSTEVAL std::string_view | json_link_version () |
template<typename JsonElement = json_value, auto... ParsePolicies> | |
std::vector< json_lines_range< JsonElement, ParsePolicies... > > | partition_jsonl_document (std::size_t num_partitions, daw::string_view jsonl_doc) |
parition the jsonl/nbjson document into num_partition non overlapping sub-ranges. This can be used to parallelize json lines parsing More... | |
template<typename WritableOutput , typename CharT > | |
constexpr WritableOutput & | put_output (WritableOutput &out, CharT c) |
template<typename T > | |
requires (std::is_aggregate_v< T > and std::is_class_v< T > and not std::is_empty_v< T >) inline const expr bool use_boost_pfr | |
Enable Boost PFR mappings for a type. More... | |
template<typename... Policies> | |
constexpr json_options_t | serialize_options (Policies... policies) |
template<typename JsonClass , typename Value , auto... PolicyFlags> | |
std::string | to_json (Value const &value, options::output_flags_t< PolicyFlags... > flgs) |
template<typename JsonClass = use_default, typename Value , auto... PolicyFlags> | |
DAW_JSON_REQUIRES(concepts::is_writable_output_type_v< daw::remove_cvref_t< WritableType >>) const expr daw std::string | to_json (Value const &value, options::output_flags_t< PolicyFlags... >) |
Serialize a value to JSON. Some types(std::string, string_view, integer's and floating point numbers do not need a mapping setup). For user classes, a json_data_contract specialization is needed. More... | |
template<typename JsonElement , typename Container , auto... PolicyFlags> | |
std::string | to_json_array (Container const &c, options::output_flags_t< PolicyFlags... > flgs) |
template<typename JsonElement = use_default, typename Container , auto... PolicyFlags> | |
DAW_JSON_REQUIRES(concepts::is_writable_output_type_v< daw::remove_cvref_t< WritableType >>) const expr daw std::string | to_json_array (Container const &c, options::output_flags_t< PolicyFlags... >=options::output_flags<>) |
DAW_ATTRIB_NOINLINE std::string | to_json_path_string (std::vector< json_path_node > const &path_stack) |
Convert a json_path_node stack to a JSON Path string. More... | |
constexpr std::string_view | to_string (JsonBaseParseTypes pt) |
template<typename WritableOutput , typename... StringViews> | |
constexpr WritableOutput & | write_output (WritableOutput &out, StringViews const &...svs) |
Variables | |
constexpr auto | bool_opts = bool_opts_t{ } |
constexpr json_options_t | bool_opts_def |
template<typename > | |
constexpr bool | can_single_allocation_string_v = false |
Can use the fast, pseudo random string iterators. They are InputIterators with an operator- that allows for O(1) distance calculations as we often know the length but cannot provide random access. For types that only use InputIterator operations and last - first for distance calc. More... | |
constexpr auto | ConformancePolicy |
static thread_local daw_json_error_handler_t | daw_json_error_handler |
static thread_local void * | daw_json_error_handler_data = nullptr |
constexpr char const | default_key_name [] = "key" |
constexpr char const | default_value_name [] = "value" |
template<typename T > | |
constexpr bool | force_aggregate_construction_v |
template<typename > | |
constexpr bool | is_a_basic_json_value = false |
template<json_options_t PolicyFlags, typename Allocator > | |
constexpr bool | is_a_basic_json_value< basic_json_value< PolicyFlags, Allocator > > = true |
template<typename... Ts> | |
constexpr bool | is_empty_pack_v = sizeof...( Ts ) == 0 |
template<typename T > | |
constexpr bool | is_missing_data_contract_or_unknown_type_v = false |
template<typename T > | |
constexpr bool | is_missing_data_contract_or_unknown_type_v< missing_json_data_contract_for_or_unknown_type< T > > = true |
template<> | |
constexpr bool | is_missing_data_contract_or_unknown_type_v< void > |
template<typename T > | |
constexpr bool | is_pinned_type_v |
Is the type pinned in memory and unable to be copied/moved after construction(e.g. std::mutex). These types require using RVO in order to be used but that can have a penalty as std::current_exceptions( ) must be checked which is quite noticeable on MSVC. More... | |
template<typename T > | |
constexpr bool | is_pointer_like_v |
template<typename , typename... > | |
constexpr bool | is_serialization_policy_v = false |
template<typename OutputIterator , json_options_t PolicyFlags> | |
constexpr bool | is_serialization_policy_v< serialization_policy< OutputIterator, PolicyFlags > > = true |
template<typename > | |
constexpr bool | is_zero_terminated_string_v = false |
constexpr auto | json_custom_opts = json_custom_opts_t{ } |
constexpr json_options_t | json_custom_opts_def |
constexpr auto | number_opts = number_opts_t{ } |
constexpr json_options_t | number_opts_def |
template<typename Constructor , typename T , typename ParseState > | |
constexpr bool | should_construct_explicitly_v |
constexpr auto | string_opts = string_opts_t{ } |
constexpr json_options_t | string_opts_def |
constexpr auto | string_raw_opts = string_raw_opts_t{ } |
constexpr json_options_t | string_raw_opts_def |
template<typename , typename = void> | |
constexpr bool | use_boost_describe_v = true |
Types that use Boost.Describe need to specialize use_boost_describe_v for their type with a bool value of true. This defaults to on, all described structs, but can be opted-out of if one wants to do a custom mapping of a Boost.Described struct. More... | |
constexpr bool | use_daw_json_exceptions_v = false |
Customization point traits.
using daw::json::daw_json_error_handler_t = typedef daw::not_null<void ( * )( json_exception &&, void * )> |
Definition at line 54 of file daw_json_assert.h.
daw::json::DAW_JSON_REQUIRES | ( | boost::describe::has_describe_members< T >::value and use_boost_describe_v< T > | ) |
Definition at line 66 of file daw_json_link_describe.h.
|
inline |
Definition at line 45 of file daw_json_assert.h.
daw::json::requires | ( | std::is_aggregate_v< T > and std::is_class_v< T > and not std::is_empty_v< T > | ) | const |
Enable Boost PFR mappings for a type.
T |
|
static |
Definition at line 61 of file daw_json_assert.h.
|
static |
Definition at line 35 of file daw_json_assert.h.
|
inlineconstexpr |
Types that use Boost.Describe need to specialize use_boost_describe_v for their type with a bool value of true. This defaults to on, all described structs, but can be opted-out of if one wants to do a custom mapping of a Boost.Described struct.
Definition at line 32 of file daw_json_link_describe.h.
|
inlineconstexpr |
Definition at line 32 of file daw_json_assert.h.