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 1138 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 1144 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 1143 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 1142 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 1148 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 1159 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 1208 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 1232 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 1220 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 1193 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 1181 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 1282 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 1261 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 1243 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 1163 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 1175 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 1169 of file serialization_builder.hpp.


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