DAW JSON Link
Public Types | Static Public Attributes | List of all members
DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable > Struct Template Reference

#include <daw_json_link_types.h>

Public Types

using base_type = json_details::unwrap_type< Container, Nullable >
 
using constructor_t = json_details::json_class_constructor_t< base_type, Constructor >
 
using i_am_a_json_type = void
 
using json_element_t = json_details::unnamed_default_type_mapping< JsonValueType >
 
using json_key_t = json_details::unnamed_default_type_mapping< JsonKeyType >
 
using parse_to_t = std::invoke_result_t< Constructor >
 

Static Public Attributes

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

Detailed Description

template<JSONNAMETYPE Name, typename Container, typename JsonValueType, typename JsonKeyType, typename Constructor, JsonNullable Nullable>
struct DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >

Map a KV type json class { "Key StringRaw": ValueType, ... } to a c++ class. Keys are Always string like and the destination needs to be constructable with a pointer, size

Template Parameters
Namename of JSON member to link to
Containertype to put values in
JsonValueTypeJson type of value in kv pair( e.g. json_number, json_string, ... ). It also supports basic types like numbers, bool, and mapped classes and enums(mapped to numbers)
JsonKeyTypetype of key in kv pair. As with value it supports basic types too
ConstructorA callable used to make Container, default will use the Containers constructor. Both normal and aggregate are supported
NullableCan the member be missing or have a null value

Member Typedef Documentation

◆ base_type

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
using DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::base_type = json_details::unwrap_type<Container, Nullable>

◆ constructor_t

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
using DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::constructor_t = json_details::json_class_constructor_t<base_type, Constructor>

◆ i_am_a_json_type

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
using DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::i_am_a_json_type = void

◆ json_element_t

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
using DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::json_element_t = json_details::unnamed_default_type_mapping<JsonValueType>

◆ json_key_t

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
using DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::json_key_t = json_details::unnamed_default_type_mapping<JsonKeyType>

◆ parse_to_t

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
using DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::parse_to_t = std::invoke_result_t<Constructor>

Member Data Documentation

◆ base_expected_type

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
constexpr JsonParseTypes DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::base_expected_type
staticconstexpr

◆ expected_type

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
constexpr JsonParseTypes DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::expected_type
staticconstexpr
Initial value:
=
get_parse_type_v<JsonParseTypes::KeyValue, Nullable>

◆ name

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
constexpr daw::string_view DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::name = Name
staticconstexpr

◆ nullable

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
constexpr bool DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::nullable = Nullable == JsonNullable::Nullable
staticconstexpr

◆ underlying_json_type

template<JSONNAMETYPE Name, typename Container , typename JsonValueType , typename JsonKeyType , typename Constructor , JsonNullable Nullable>
constexpr JsonBaseParseTypes DAW_JSON_NS::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::underlying_json_type
staticconstexpr

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