DAW JSON Link
Public Types | Static Public Attributes | List of all members
daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable > Struct Template Reference

#include <daw_json_link_types.h>

Public Types

using base_type = json_details::unwrapped_t< Variant, nullable >
 
using constructor_t = json_details::json_class_constructor_t< Variant, Constructor >
 
using i_am_a_json_type = void
 
using i_am_a_tagged_variant = void
 
using json_container_type = std::conditional_t< std::disjunction_v< json_details::is_an_ordered_member< json_details::json_deduced_type< tag_submember > >, json_details::is_no_name< json_details::json_deduced_type< tag_submember > > >, json_tuple< std::tuple< typename json_details::json_deduced_type< tag_submember >::parse_to_t >, default_constructor< std::tuple< typename json_details::json_deduced_type< tag_submember >::parse_to_t > >, tuple_opts_def, json_tuple_types_list< tag_submember > >, tuple_json_mapping< tag_submember > >
 
using json_elements = typename std::conditional_t< std::is_same_v< AlternativeMappings, json_deduce_type >, json_details::determine_variant_element_types< nullable, Variant >, daw::traits::identity< AlternativeMappings > >::type
 
using parse_to_t = Variant
 
using switcher = Switcher
 
using tag_submember = typename std::conditional_t< json_details::is_an_ordered_member< TagMember >::value, daw::traits::identity< TagMember >, daw::traits::identity< json_details::json_deduced_type< TagMember > > >::type
 
using tag_submember_class_wrapper = std::conditional_t< json_details::is_an_ordered_member< tag_submember >::value, json_tuple< std::tuple< typename tag_submember::parse_to_t >, json_deduce_type, tuple_opts_def, json_tuple_types_list< tag_submember > >, json_details::json_deduced_type< tuple_json_mapping< tag_submember > > >
 
template<JSONNAMETYPE NewName>
using with_name = daw::json::json_intrusive_variant< NewName, Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >
 
using without_name = json_intrusive_variant
 
using wrapped_type = Variant
 

Static Public Attributes

static constexpr JsonParseTypes base_expected_type
 
static constexpr JsonParseTypes expected_type
 
static constexpr bool must_be_class_member = false
 
static constexpr daw::string_view name = no_name
 
static constexpr JsonNullable nullable = Nullable
 
static constexpr JsonBaseParseTypes underlying_json_type
 

Member Typedef Documentation

◆ base_type

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::base_type = json_details::unwrapped_t<Variant, nullable>

◆ constructor_t

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::constructor_t = json_details::json_class_constructor_t<Variant, Constructor>

◆ i_am_a_json_type

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::i_am_a_json_type = void

◆ i_am_a_tagged_variant

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::i_am_a_tagged_variant = void

◆ json_container_type

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::json_container_type = std::conditional_t< std::disjunction_v<json_details::is_an_ordered_member< json_details::json_deduced_type<tag_submember> >, json_details::is_no_name< json_details::json_deduced_type<tag_submember> >>, json_tuple<std::tuple<typename json_details::json_deduced_type< tag_submember>::parse_to_t>, default_constructor< std::tuple<typename json_details::json_deduced_type< tag_submember>::parse_to_t> >, tuple_opts_def, json_tuple_types_list<tag_submember> >, tuple_json_mapping<tag_submember> >

◆ json_elements

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::json_elements = typename std::conditional_t< std::is_same_v<AlternativeMappings, json_deduce_type>, json_details::determine_variant_element_types<nullable, Variant>, daw::traits::identity<AlternativeMappings> >::type

◆ parse_to_t

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::parse_to_t = Variant

◆ switcher

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::switcher = Switcher

◆ tag_submember

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::tag_submember = typename std::conditional_t< json_details::is_an_ordered_member<TagMember>::value, daw::traits::identity<TagMember>, daw::traits::identity<json_details::json_deduced_type<TagMember> >>:: type

◆ tag_submember_class_wrapper

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::tag_submember_class_wrapper = std::conditional_t< json_details::is_an_ordered_member<tag_submember>::value, json_tuple<std::tuple<typename tag_submember::parse_to_t>, json_deduce_type, tuple_opts_def, json_tuple_types_list<tag_submember> >, json_details::json_deduced_type<tuple_json_mapping<tag_submember> >>

◆ with_name

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
template<JSONNAMETYPE NewName>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::with_name = daw::json::json_intrusive_variant<NewName, Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable>

◆ without_name

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::without_name = json_intrusive_variant

◆ wrapped_type

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
using daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::wrapped_type = Variant

Member Data Documentation

◆ base_expected_type

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
constexpr JsonParseTypes daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::base_expected_type
staticconstexpr
Initial value:
=
@ VariantIntrusive
A variant with up to N types and a Switcher callable that takes uses another member to determine what...

◆ expected_type

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
constexpr JsonParseTypes daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::expected_type
staticconstexpr
Initial value:
=
get_parse_type_v<JsonParseTypes::VariantIntrusive, nullable>

◆ must_be_class_member

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
constexpr bool daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::must_be_class_member = false
staticconstexpr

◆ name

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
constexpr daw::string_view daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::name = no_name
staticconstexpr

◆ nullable

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
constexpr JsonNullable daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::nullable = Nullable
staticconstexpr

◆ underlying_json_type

template<typename Variant , typename TagMember , typename Switcher , typename AlternativeMappings , typename Constructor , JsonNullable Nullable>
constexpr JsonBaseParseTypes daw::json::DAW_JSON_VER::json_base::json_intrusive_variant< Variant, TagMember, Switcher, AlternativeMappings, Constructor, Nullable >::underlying_json_type
staticconstexpr

The documentation for this struct was generated from the following file: