DAW JSON Link
Classes | Namespaces | Typedefs | Functions | Variables
daw_json_traits.h File Reference
#include "version.h"
#include <daw/cpp_17.h>
#include <daw/daw_fwd_pack_apply.h>
#include <daw/daw_move.h>
#include <daw/daw_scope_guard.h>
#include <daw/daw_traits.h>
#include <array>
#include <memory>
#include <optional>
#include <string>
#include <unordered_map>
#include <utility>

Go to the source code of this file.

Classes

struct  daw::json::DAW_JSON_VER::can_single_allocation_string< typename >
 
struct  daw::json::DAW_JSON_VER::default_constructor< T >
 
struct  daw::json::DAW_JSON_VER::json_details::ensure_json_type< T >
 
struct  daw::json::DAW_JSON_VER::ignore_unknown_members< typename >
 
struct  daw::json::DAW_JSON_VER::is_exact_class_mapping< typename >
 
struct  daw::json::DAW_JSON_VER::is_pointer_like< T >
 
struct  daw::json::DAW_JSON_VER::json_details::is_std_allocator< typename >
 
struct  daw::json::DAW_JSON_VER::json_details::is_std_allocator< std::allocator< Ts... > >
 
struct  daw::json::DAW_JSON_VER::json_data_contract< T, typename >
 
struct  daw::json::DAW_JSON_VER::json_details::json_data_contract_constructor_impl< T, bool, bool >
 
struct  daw::json::DAW_JSON_VER::json_details::json_data_contract_constructor_impl< T, true, true >
 
struct  daw::json::DAW_JSON_VER::nullable_constructor< T >
 
struct  daw::json::DAW_JSON_VER::tuple_elements_pack< daw::fwd_pack< Ts... > >
 

Namespaces

 daw
 
 daw::json
 
 daw::json::DAW_JSON_VER
 
 daw::json::DAW_JSON_VER::json_details
 
 

Typedefs

template<typename ParsePolicy , typename String , auto OptionMutable, auto OptionImmutable>
using daw::json::DAW_JSON_VER::json_details::apply_mutable_policy = std::conditional_t< ParsePolicy::allow_temporarily_mutating_buffer, std::conditional_t< is_mutable_string_v< String >, apply_policy_option_t< ParsePolicy, OptionMutable >, apply_policy_option_t< ParsePolicy, OptionImmutable > >, std::conditional_t<(is_rvalue_string< String > and is_mutable_string_v< String >), apply_policy_option_t< ParsePolicy, OptionMutable >, apply_policy_option_t< ParsePolicy, OptionImmutable > >>
 
template<typename ParsePolicy , auto Option>
using daw::json::DAW_JSON_VER::json_details::apply_policy_option_t = typename ParsePolicy::template SetPolicyOptions< Option >
 
template<typename ParsePolicy , typename String , auto Option>
using daw::json::DAW_JSON_VER::json_details::apply_zstring_policy_option_t = std::conditional_t< is_zero_terminated_string_v< daw::remove_cvref_t< String > >, apply_policy_option_t< ParsePolicy, Option >, ParsePolicy >
 
template<bool Nullable, typename Constructor , typename... Args>
using daw::json::DAW_JSON_VER::json_details::construction_result = std::conditional_t< Nullable, std::conditional_t< std::is_invocable_v< Constructor, Args... >, std::conditional_t< std::is_invocable_v< Constructor >, std::invoke_result< Constructor >, traits::identity< nullable_constructor_cannot_be_invoked< Constructor > > >, traits::identity< nullable_constructor_cannot_be_invoked< Constructor, Args... > > >, std::conditional_t< std::is_invocable_v< Constructor, Args... >, std::invoke_result< Constructor, Args... >, traits::identity< constructor_cannot_be_invoked< Constructor, Args... > > > >
 
template<typename JsonMember , JSONNAMETYPE NewName, bool Cond>
using daw::json::DAW_JSON_VER::json_details::copy_name_when = std::conditional_t< Cond, typename JsonMember::template with_name< NewName >, JsonMember >
 
template<typename JsonMember , JSONNAMETYPE NewName>
using daw::json::DAW_JSON_VER::json_details::copy_name_when_noname = copy_name_when< JsonMember, NewName, JsonMember::name==no_name >
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::element_type_t = typename T::element_type
 
template<typename T >
using daw::json::DAW_JSON_VER::force_aggregate_construction = std::bool_constant< std::disjunction_v< daw::is_detected< json_details::force_aggregate_construction_test, T >, daw::is_detected< json_details::force_aggregate_construction_test2, T > >>
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::force_aggregate_construction_test = typename json_data_contract< T >::force_aggregate_construction
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::force_aggregate_construction_test2 = decltype(T::force_aggregate_construction)
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::is_string_like_impl::has_data_test = decltype(std::data(std::declval< T >()))
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::has_element_type = daw::is_detected< element_type_t, T >
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::has_empty_member_test = decltype(std::declval< T >().empty())
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::has_exact_mapping_trait_in_class_map = typename json_data_contract< T >::exact_class_mapping
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::has_ignore_unknown_members_trait_in_class_map = typename json_data_contract< T >::ignore_unknown_members
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::has_json_data_constract_constructor_test = decltype(decltype(std::declval< json_data_contract_trait_t< T > >)::constructor)
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::has_op_bool_test = decltype(static_cast< bool >(std::declval< T >()))
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::has_op_star_test = decltype(*std::declval< T >())
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::is_string_like_impl::has_size_test = decltype(std::size(std::declval< T >()))
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::is_a_json_tagged_variant = daw::is_detected< is_a_json_tagged_variant_test, T >
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::is_a_json_tagged_variant_test = typename T::i_am_a_json_tagged_variant
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::is_a_json_type = std::bool_constant< daw::is_detected_v< json_type_t, T > >
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::is_string_view_like = std::conjunction< daw::is_detected< is_string_like_impl::has_data_test, T >, daw::is_detected< is_string_like_impl::has_size_test, T > >
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::is_tuple = daw::is_detected< json_details::tuple_test, T >
 Detect if T follows the tuple protocol. More...
 
template<typename T , typename Default >
using daw::json::DAW_JSON_VER::json_details::json_class_constructor_t = typename std::conditional_t< daw::is_detected< json_data_contract_constructor_t, T >::value, json_data_contract_constructor< T >, daw::traits::identity< Default > >::type
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::json_data_contract_constructor = json_data_contract_constructor_impl< T, daw::is_detected< json_data_contract_trait_t, T >::value, daw::is_detected< has_json_data_constract_constructor_test, T >::value >
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::json_data_contract_constructor_t = typename json_data_contract_constructor< T >::type
 
template<typename T >
using daw::json::DAW_JSON_VER::json_data_contract_trait_t = typename json_data_contract< T >::type
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::json_map_alias_test = typename json_data_contract_trait_t< T >::i_am_a_json_map_alias
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::json_type_t = typename T::i_am_a_json_type
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::ordered_member_t = typename T::i_am_an_ordered_member
 
template<typename JsonMember >
using daw::json::DAW_JSON_VER::json_details::switcher_t = typename JsonMember::switcher
 
template<typename T >
using daw::json::DAW_JSON_VER::test_valid_json_data_contract_trait_t = typename json_data_contract_trait_t< T >::i_am_a_json_member_list
 
template<typename T >
using daw::json::DAW_JSON_VER::json_details::tuple_test = typename tuple_elements_pack< T >::type
 
template<typename JsonMember >
using daw::json::DAW_JSON_VER::json_details::without_name = typename JsonMember::without_name
 

Functions

template<typename T >
constexpr auto daw::json::DAW_JSON_VER::json_details::has_value (T const &v) -> std::enable_if_t< is_readable_v< T >, bool >
 
template<typename T >
daw::json::DAW_JSON_VER::json_details::uneval_func ()
 

Variables

template<typename T , typename ParseState >
constexpr bool daw::json::DAW_JSON_VER::json_details::all_json_members_must_exist_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::force_aggregate_construction_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::json_details::has_empty_member_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::json_details::has_op_bool_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::json_details::has_op_star_v
 
template<typename JsonMember >
constexpr bool daw::json::DAW_JSON_VER::json_details::has_switcher_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::ignore_unknown_members_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_a_json_tagged_variant_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_a_json_type_v = is_a_json_type<T>::value
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_an_ordered_member_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::is_exact_class_mapping_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_json_map_alias_v
 
template<typename String >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_mutable_string
 
template<typename String >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_mutable_string_v
 
template<JsonNullable ClassNullability, JsonNullable DependentNullability>
constexpr bool daw::json::DAW_JSON_VER::json_details::is_nullability_compatable_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_readable_v
 
template<typename String >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_ref_string
 
template<typename String >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_rvalue_string = std::is_rvalue_reference_v<String>
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_string_view_like_v
 
template<typename T >
constexpr bool daw::json::DAW_JSON_VER::json_details::is_tuple_v = is_tuple<T>::value
 
template<typename >
constexpr bool daw::json::DAW_JSON_VER::is_zero_terminated_string_v = false
 

Variable Documentation

◆ it

Iterator& it