DAW JSON Link
Classes | Namespaces | Typedefs
daw_json_link_types.h File Reference
#include "impl/version.h"
#include "impl/daw_json_link_types_fwd.h"
#include "impl/daw_json_serialize_impl.h"
#include "impl/daw_json_traits.h"
#include <daw/daw_attributes.h>
#include <daw/daw_fwd_pack_apply.h>
#include <daw/daw_string_view.h>
#include <daw/daw_traits.h>
#include <daw/daw_visit.h>
#include <daw/traits/daw_traits_conditional.h>
#include <daw/traits/daw_traits_first_type.h>
#include <daw/traits/daw_traits_identity.h>
#include <cstddef>
#include <daw/stdinc/integer_sequence.h>
#include <optional>
#include <string>
#include <tuple>
#include <type_traits>

Go to the source code of this file.

Classes

struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_array< Name, JsonElement, Container, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_array< JsonElement, Container, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_bool< T, Options, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_bool< Name, T, Options, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_class< Name, T, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_class< T, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_custom< Name, T, FromJsonConverter, ToJsonConverter, Options >
 Allow parsing of a type that does not fit. More...
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_custom< T, FromJsonConverter, ToJsonConverter, Options >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_data_contract< basic_json_value< PolicyFlags, Allocator > >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_data_contract< tuple_json_mapping< Members... > >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_date< Name, T, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_date< T, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_intrusive_variant< Variant, TagMember, Switcher, JsonElements, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_intrusive_variant< Name, T, TagMember, Switcher, JsonElements, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_key_value< Container, JsonValueType, JsonKeyType, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_key_value_array< Name, Container, JsonValueType, JsonKeyType, Constructor >
 Map a KV type json array [ {"key": ValueOfKeyType, "value": ValueOfValueType},... ] to a c++ class. needs to be constructable with a pointer, size. More...
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_key_value_array< Container, JsonValueType, JsonKeyType, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_member_list< JsonMembers >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_nullable< T, JsonMember, NullableType, Constructor >
 Mark a member as nullable. More...
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_nullable< Name, T, JsonMember, NullableType, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_number< Name, T, Options, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_number< T, Options, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_raw< Name, T, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_raw< T, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_sized_array< Name, JsonElement, SizeMember, Container, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_sized_array< JsonElement, SizeMember, Container, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_string< Name, String, Options, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_string< String, Options, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_string_raw< String, Options, Constructor >
 String - A raw string as is. Escapes are left in. More...
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_string_raw< Name, String, Options, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_submember_tagged_variant< TagMember, Switcher, JsonClasses >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_tagged_variant< Name, T, TagMember, Switcher, JsonElements, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_tagged_variant< T, TagMember, Switcher, JsonElements, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_tuple< Tuple, JsonTupleTypesList, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_tuple< Name, Tuple, JsonTupleTypesList, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_tuple_member< Index, JsonMember >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_tuple_member_list< JsonMembers >
 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  daw::json::anonymous_namespace{daw_json_link_types.h}::json_type_alias< JsonMember >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_variant< Name, Variant, JsonElements, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::json_base::json_variant< Variant, JsonElements, Constructor >
 
struct  daw::json::anonymous_namespace{daw_json_link_types.h}::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  daw::json::anonymous_namespace{daw_json_link_types.h}::tuple_json_mapping< Members >
 

Namespaces

 daw
 
 daw::json
 Customization point traits.
 
 
 

Typedefs

template<typename JsonElement , typename Container = use_default, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_array_no_name = json_base::json_array< JsonElement, Container, Constructor >
 
template<typename JsonElement , typename WrappedContainer , JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_bool_no_name = json_base::json_bool< T, Options, Constructor >
 
template<typename T = std::optional<bool>, json_options_t Options = bool_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_bool_null_no_name = json_base::json_nullable< T, json_base::json_bool< json_details::unwrapped_t< T >, Options >, NullableType, Constructor >
 
template<typename T = double, json_options_t Options = number_opts_def, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_checked_number_no_name = json_base::json_number< T, json_details::number_opts_set< Options, options::JsonRangeCheck::CheckForNarrowing >, Constructor >
 
template<typename T = std::optional<double>, json_options_t Options = number_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_class_no_name = json_base::json_class< T, Constructor >
 
template<typename T , JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_class_null_no_name = json_base::json_nullable< T, json_base::json_class< json_details::unwrapped_t< T > >, NullableType, Constructor >
 
template<typename T , typename FromJsonConverter = use_default, typename ToJsonConverter = use_default, json_options_t Options = json_custom_opts_def>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_custom_lit_no_name = json_base::json_custom< 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, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_custom_no_name = json_base::json_custom< T, FromJsonConverter, ToJsonConverter, Options >
 
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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_custom_null_no_name = json_base::json_nullable< T, json_base::json_custom< json_details::unwrapped_t< T >, FromJsonConverter, ToJsonConverter, Options >, NullableType, Constructor >
 
template<typename T , typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_date_no_name = json_base::json_date< T, Constructor >
 
template<typename T , JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_key_value_array_no_name = json_base::json_key_value_array< Container, JsonValueType, JsonKeyType, Constructor >
 
template<typename WrappedContainer , typename JsonValueType = use_default, typename JsonKeyType = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_key_value_no_name = json_base::json_key_value< Container, JsonValueType, JsonKeyType, 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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_number_no_name = json_base::json_number< T, Options, Constructor >
 
template<typename T = std::optional<double>, json_options_t Options = number_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_number_null_no_name = json_base::json_nullable< T, json_base::json_number< json_details::unwrapped_t< T >, Options >, NullableType, Constructor >
 
template<typename... JsonMembers>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_ordered_member_list = json_tuple_member_list< JsonMembers... >
 
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_pair = basic_json_pair<>
 
template<typename T = json_value, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_string_no_name = json_base::json_string< T, Options, Constructor >
 
template<typename T = std::optional<std::string>, json_options_t Options = string_opts_def, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_string_raw_no_name = json_base::json_string_raw< T, Options, 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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_tagged_variant_no_name = json_base::json_tagged_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 daw::json::anonymous_namespace{daw_json_link_types.h}::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 daw::json::anonymous_namespace{daw_json_link_types.h}::json_tagged_variant_type_list = json_variant_type_list< JsonElements... >
 
template<typename Tuple , typename Constructor = use_default, typename JsonTupleTypesList = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_tuple_no_name = json_base::json_tuple< Tuple, Constructor, JsonTupleTypesList >
 
template<typename WrappedTuple , typename JsonTupleTypesList = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_tuple_null_no_name = json_base::json_nullable< WrappedTuple, JsonTupleTypesList, NullableType, Constructor >
 
template<typename Variant , typename JsonElements = use_default, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_variant_no_name = json_base::json_variant< Variant, JsonElements, Constructor >
 
template<typename Variant , typename JsonElements = use_default, JsonNullable NullableType = JsonNullable::Nullable, typename Constructor = use_default>
using daw::json::anonymous_namespace{daw_json_link_types.h}::json_variant_null_no_name = json_base::json_nullable< Variant, json_base::json_variant< json_details::unwrapped_t< Variant >, JsonElements >, NullableType, Constructor >
 
template<std::size_t Index, typename JsonMember >
using daw::json::anonymous_namespace{daw_json_link_types.h}::ordered_json_member = json_tuple_member< Index, JsonMember >