DAW JSON Link
Classes | Namespaces | Typedefs | Functions | Variables
daw_json_traits.h File Reference
#include "version.h"
#include "daw_json_default_constuctor.h"
#include "daw_json_enums.h"
#include "daw_json_link_types_aggregate.h"
#include "daw_json_name.h"
#include "daw_json_req_helper.h"
#include <daw/json/concepts/daw_nullable_value.h>
#include <daw/json/daw_json_data_contract.h>
#include <daw/cpp_17.h>
#include <daw/daw_fwd_pack_apply.h>
#include <daw/daw_move.h>
#include <daw/daw_traits.h>
#include <string>
#include <string_view>
#include <type_traits>

Go to the source code of this file.

Classes

struct  daw::json::anonymous_namespace{daw_json_traits.h}::tuple_elements_pack< daw::fwd_pack< Ts... > >
 
struct  daw::json::anonymous_namespace{daw_json_traits.h}::tuple_elements_pack< std::tuple< Ts... > >
 

Namespaces

 daw
 
 daw::json
 Customization point traits.
 
 daw::json::anonymous_namespace{daw_json_traits.h}
 

Typedefs

template<typename T >
using daw::json::anonymous_namespace{daw_json_traits.h}::can_single_allocation_string = std::bool_constant< can_single_allocation_string_v< T > >
 
template<typename T >
using daw::json::anonymous_namespace{daw_json_traits.h}::is_zero_terminated_string = std::bool_constant< is_zero_terminated_string_v< T > >
 

Functions

 daw::json::anonymous_namespace{daw_json_traits.h}::DAW_JSON_MAKE_REQ_TYPE_ALIAS_TRAIT (ignore_unknown_members_v, json_data_contract< T >::ignore_unknown_members)
 
 daw::json::anonymous_namespace{daw_json_traits.h}::DAW_JSON_MAKE_REQ_TYPE_ALIAS_TRAIT (is_exact_class_mapping_v, json_data_contract< T >::exact_class_mapping)
 

Variables

template<typename >
constexpr bool daw::json::anonymous_namespace{daw_json_traits.h}::can_single_allocation_string_v = false
 Can use the fast, pseudo random string iterators. They are InputIterators with an operator- that allows for O(1) distance calculations as we often know the length but cannot provide random access. For types that only use InputIterator operations and last - first for distance calc. More...
 
template<typename T >
constexpr bool daw::json::anonymous_namespace{daw_json_traits.h}::force_aggregate_construction_v
 
template<typename... Ts>
constexpr bool daw::json::anonymous_namespace{daw_json_traits.h}::is_empty_pack_v = sizeof...( Ts ) == 0
 
template<typename T >
constexpr bool daw::json::anonymous_namespace{daw_json_traits.h}::is_pinned_type_v
 Is the type pinned in memory and unable to be copied/moved after construction(e.g. std::mutex). These types require using RVO in order to be used but that can have a penalty as std::current_exceptions( ) must be checked which is quite noticeable on MSVC. More...
 
template<typename T >
constexpr bool daw::json::anonymous_namespace{daw_json_traits.h}::is_pointer_like_v
 
template<typename >
constexpr bool daw::json::anonymous_namespace{daw_json_traits.h}::is_zero_terminated_string_v = false
 
template<typename Constructor , typename T , typename ParseState >
constexpr bool daw::json::anonymous_namespace{daw_json_traits.h}::should_construct_explicitly_v