DAW JSON Link
Public Types | Static Public Attributes | List of all members
daw::json::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::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::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::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::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::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::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::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::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::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::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::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::json_key_value< Name, Container, JsonValueType, JsonKeyType, Constructor, Nullable >::underlying_json_type
staticconstexpr

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