DAW JSON Link
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions | Variables
daw_json_traits.h File Reference
#include "daw/json/impl/version.h"
#include "daw/json/concepts/daw_nullable_value.h"
#include "daw/json/daw_json_data_contract.h"
#include "daw/json/daw_json_parse_options.h"
#include "daw/json/impl/daw_json_default_constuctor.h"
#include "daw/json/impl/daw_json_enums.h"
#include "daw/json/impl/daw_json_link_types_aggregate.h"
#include "daw/json/impl/daw_json_name.h"
#include "daw/json/impl/daw_json_req_helper.h"
#include "daw/json/impl/daw_json_type_options.h"
#include <daw/cpp_17.h>
#include <daw/daw_callable.h>
#include <daw/daw_cpp20_concept.h>
#include <daw/daw_fwd_pack_apply.h>
#include <daw/daw_move.h>
#include <daw/daw_string_view.h>
#include <daw/daw_traits.h>
#include <daw/impl/daw_make_trait.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

namespace  daw
 
namespace  daw::json
 string_writer grows its string with resize_and_overwrite, leaving the new bytes uninitialized, when the standard library has it. That skips zero filling memory that is overwritten right away, but the bytes past what was written are never initialized, which resize_and_overwrite's precondition does not allow. Define DAW_JSON_NO_LESS_SAFE_STRING_WRITER to grow with resize( ) instead
 
namespace  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_CUSTOM (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_CUSTOM (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.
 
template<typename T >
constexpr bool daw::json::anonymous_namespace{daw_json_traits.h}::force_aggregate_construction_v
 
template<typename... Ts>
DAW_CPP20_CONCEPT 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.
 
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