JSON Voorhees
Killer JSON for C++
Loading...
Searching...
No Matches
jsonv::adapter_builder< T > Class Template Reference
+ Inheritance diagram for jsonv::adapter_builder< T >:
+ Collaboration diagram for jsonv::adapter_builder< T >:

Public Types

using pre_extract_func = std::function< void(extraction_context &)>
 
using post_extract_func = std::function< T(extraction_context &, T &&)>
 
using extra_keys_func = std::function< void(extraction_context &, std::set< std::string >)>
 

Public Member Functions

template<typename F >
 adapter_builder (formats_builder *owner, F &&f)
 
 adapter_builder (formats_builder *owner)
 
adapter_builder< T > & type_default_on_null (bool on=true)
 
adapter_builder< T > & type_default_value (std::function< T(extraction_context &ctx)> create)
 
adapter_builder< T > & type_default_value (const T &value)
 
template<typename TMember >
member_adapter_builder< T, TMember > member (std::string name, TMember T::*selector)
 
template<typename TMember >
member_adapter_builder< T, TMember > member (std::string name, std::function< const TMember &(const T &)> access, std::function< void(T &, TMember &&)> mutate)
 
template<typename TMember >
member_adapter_builder< T, TMember > member (std::string name, const TMember &(T::*access)() const, TMember &(T::*mutable_access)())
 
template<typename TMember >
member_adapter_builder< T, TMember > member (std::string name, const TMember &(T::*access)() const, void(T::*mutate)(TMember))
 
template<typename TMember >
member_adapter_builder< T, TMember > member (std::string name, const TMember &(T::*access)() const, void(T::*mutate)(TMember &&))
 
adapter_builder< T > & pre_extract (pre_extract_func perform)
 
adapter_builder< T > & post_extract (post_extract_func perform)
 
adapter_builder< T > & on_extract_extra_keys (extra_keys_func handler)
 The handler is stored rather than desugared into a pre_extract, because the keys which claimed no member are only known once the walk is done.
 

Detailed Description

template<typename T>
class jsonv::adapter_builder< T >

Definition at line 1120 of file serialization_builder.hpp.

Member Typedef Documentation

◆ extra_keys_func

template<typename T >
using jsonv::adapter_builder< T >::extra_keys_func = std::function<void (extraction_context&, std::set<std::string>)>

Definition at line 1126 of file serialization_builder.hpp.

◆ post_extract_func

template<typename T >
using jsonv::adapter_builder< T >::post_extract_func = std::function<T (extraction_context&, T&&)>

Definition at line 1125 of file serialization_builder.hpp.

◆ pre_extract_func

template<typename T >
using jsonv::adapter_builder< T >::pre_extract_func = std::function<void (extraction_context&)>

Definition at line 1124 of file serialization_builder.hpp.

Constructor & Destructor Documentation

◆ adapter_builder() [1/2]

template<typename T >
template<typename F >
jsonv::adapter_builder< T >::adapter_builder ( formats_builder *  owner,
F &&  f 
)
inlineexplicit

Definition at line 1130 of file serialization_builder.hpp.

◆ adapter_builder() [2/2]

template<typename T >
jsonv::adapter_builder< T >::adapter_builder ( formats_builder *  owner)
inlineexplicit

Definition at line 1141 of file serialization_builder.hpp.

Member Function Documentation

◆ member() [1/5]

template<typename T >
template<typename TMember >
member_adapter_builder< T, TMember > jsonv::adapter_builder< T >::member ( std::string  name,
const TMember &(T::*)() const  access,
TMember &(T::*)()  mutable_access 
)
inline

Definition at line 1190 of file serialization_builder.hpp.

◆ member() [2/5]

template<typename T >
template<typename TMember >
member_adapter_builder< T, TMember > jsonv::adapter_builder< T >::member ( std::string  name,
const TMember &(T::*)() const  access,
void(T::*)(TMember &&)  mutate 
)
inline

Definition at line 1214 of file serialization_builder.hpp.

◆ member() [3/5]

template<typename T >
template<typename TMember >
member_adapter_builder< T, TMember > jsonv::adapter_builder< T >::member ( std::string  name,
const TMember &(T::*)() const  access,
void(T::*)(TMember)  mutate 
)
inline

Definition at line 1202 of file serialization_builder.hpp.

◆ member() [4/5]

template<typename T >
template<typename TMember >
member_adapter_builder< T, TMember > jsonv::adapter_builder< T >::member ( std::string  name,
std::function< const TMember &(const T &)>  access,
std::function< void(T &, TMember &&)>  mutate 
)
inline

Definition at line 1175 of file serialization_builder.hpp.

◆ member() [5/5]

template<typename T >
template<typename TMember >
member_adapter_builder< T, TMember > jsonv::adapter_builder< T >::member ( std::string  name,
TMember T::*  selector 
)
inline

Definition at line 1163 of file serialization_builder.hpp.

◆ on_extract_extra_keys()

template<typename T >
adapter_builder< T > & jsonv::adapter_builder< T >::on_extract_extra_keys ( extra_keys_func  handler)
inline

The handler is stored rather than desugared into a pre_extract, because the keys which claimed no member are only known once the walk is done.

It is still registered against the members as they stand at extraction time rather than at build time – the key loop does the matching – so declaring it before the members it validates against keeps working.

Definition at line 1264 of file serialization_builder.hpp.

◆ post_extract()

template<typename T >
adapter_builder< T > & jsonv::adapter_builder< T >::post_extract ( post_extract_func  perform)
inline

Definition at line 1243 of file serialization_builder.hpp.

◆ pre_extract()

template<typename T >
adapter_builder< T > & jsonv::adapter_builder< T >::pre_extract ( pre_extract_func  perform)
inline

Definition at line 1225 of file serialization_builder.hpp.

◆ type_default_on_null()

template<typename T >
adapter_builder< T > & jsonv::adapter_builder< T >::type_default_on_null ( bool  on = true)
inline

Definition at line 1145 of file serialization_builder.hpp.

◆ type_default_value() [1/2]

template<typename T >
adapter_builder< T > & jsonv::adapter_builder< T >::type_default_value ( const T &  value)
inline

Definition at line 1157 of file serialization_builder.hpp.

◆ type_default_value() [2/2]

template<typename T >
adapter_builder< T > & jsonv::adapter_builder< T >::type_default_value ( std::function< T(extraction_context &ctx)>  create)
inline

Definition at line 1151 of file serialization_builder.hpp.


The documentation for this class was generated from the following files: