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_deserialize_func = std::function< void(deserialization_context &)>
 
using post_deserialize_func = std::function< T(deserialization_context &, T &&)>
 
using unknown_members_func = std::function< void(deserialization_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(deserialization_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_deserialize (pre_deserialize_func perform)
 
adapter_builder< T > & post_deserialize (post_deserialize_func perform)
 
adapter_builder< T > & on_unknown_members (unknown_members_func handler)
 The handler is stored rather than desugared into a pre_deserialize, 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 1289 of file serialization_builder.hpp.

Member Typedef Documentation

◆ post_deserialize_func

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

Definition at line 1294 of file serialization_builder.hpp.

◆ pre_deserialize_func

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

Definition at line 1293 of file serialization_builder.hpp.

◆ unknown_members_func

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

Definition at line 1295 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 1299 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 1310 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 1352 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 1376 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 1364 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
Exceptions
std::invalid_argumentif a member with this name is already declared for T.

Definition at line 1340 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
Exceptions
std::invalid_argumentif a member with this name is already declared for T.

Definition at line 1333 of file serialization_builder.hpp.

◆ on_unknown_members()

template<typename T >
adapter_builder< T > & jsonv::adapter_builder< T >::on_unknown_members ( unknown_members_func  handler)
inline

The handler is stored rather than desugared into a pre_deserialize, 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 deserialization 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 1426 of file serialization_builder.hpp.

◆ post_deserialize()

template<typename T >
adapter_builder< T > & jsonv::adapter_builder< T >::post_deserialize ( post_deserialize_func  perform)
inline

Definition at line 1405 of file serialization_builder.hpp.

◆ pre_deserialize()

template<typename T >
adapter_builder< T > & jsonv::adapter_builder< T >::pre_deserialize ( pre_deserialize_func  perform)
inline

Definition at line 1387 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 1314 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 1326 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(deserialization_context &ctx)>  create)
inline

Definition at line 1320 of file serialization_builder.hpp.


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