Electroneum
Loading...
Searching...
No Matches
keyvalue_serialization.h File Reference
#include <boost/utility/value_init.hpp>
#include <boost/foreach.hpp>
#include "misc_log_ex.h"
#include "enableable.h"
#include "keyvalue_serialization_overloads.h"
Include dependency graph for keyvalue_serialization.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  epee

Macros

#define ELECTRONEUM_DEFAULT_LOG_CATEGORY   "serialization"
#define BEGIN_KV_SERIALIZE_MAP()
#define KV_SERIALIZE_N(varialble, val_name)
#define KV_SERIALIZE_OPT_N(variable, val_name, default_value)
#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name)
#define KV_SERIALIZE_VAL_POD_AS_BLOB_N(varialble, val_name)
#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(varialble, val_name, default_value)
#define KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N(varialble, val_name)
#define END_KV_SERIALIZE_MAP()
#define KV_SERIALIZE(varialble)
#define KV_SERIALIZE_VAL_POD_AS_BLOB(varialble)
#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT(varialble, def)
#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE(varialble)
#define KV_SERIALIZE_CONTAINER_POD_AS_BLOB(varialble)
#define KV_SERIALIZE_OPT(variable, default_value)

Functions

template<typename T>
void epee::serialize_default (const T &t, T v)
template<typename T>
void epee::serialize_default (T &t, T v)

Macro Definition Documentation

◆ BEGIN_KV_SERIALIZE_MAP

#define BEGIN_KV_SERIALIZE_MAP ( )
Value:
public: \
template<class t_storage> \
bool store( t_storage& st, typename t_storage::hsection hparent_section = nullptr) const\
{\
return serialize_map<true>(*this, st, hparent_section);\
}\
template<class t_storage> \
bool _load( t_storage& stg, typename t_storage::hsection hparent_section = nullptr)\
{\
return serialize_map<false>(*this, stg, hparent_section);\
}\
template<class t_storage> \
bool load( t_storage& stg, typename t_storage::hsection hparent_section = nullptr)\
{\
try{\
return serialize_map<false>(*this, stg, hparent_section);\
}\
catch(const std::exception& err) \
{ \
(void)(err); \
LOG_ERROR("Exception on unserializing: " << err.what());\
return false; \
}\
}\
template<bool is_store, class this_type, class t_storage> \
static bool serialize_map(this_type& this_ref, t_storage& stg, typename t_storage::hsection hparent_section) \
{
void load(Archive &a, std::unordered_map< h_key, hval > &x, const boost::serialization::version_type ver)

Definition at line 43 of file keyvalue_serialization.h.

43#define BEGIN_KV_SERIALIZE_MAP() \
44public: \
45 template<class t_storage> \
46 bool store( t_storage& st, typename t_storage::hsection hparent_section = nullptr) const\
47 {\
48 return serialize_map<true>(*this, st, hparent_section);\
49 }\
50 template<class t_storage> \
51 bool _load( t_storage& stg, typename t_storage::hsection hparent_section = nullptr)\
52 {\
53 return serialize_map<false>(*this, stg, hparent_section);\
54 }\
55 template<class t_storage> \
56 bool load( t_storage& stg, typename t_storage::hsection hparent_section = nullptr)\
57 {\
58 try{\
59 return serialize_map<false>(*this, stg, hparent_section);\
60 }\
61 catch(const std::exception& err) \
62 { \
63 (void)(err); \
64 LOG_ERROR("Exception on unserializing: " << err.what());\
65 return false; \
66 }\
67 }\
68 template<bool is_store, class this_type, class t_storage> \
69 static bool serialize_map(this_type& this_ref, t_storage& stg, typename t_storage::hsection hparent_section) \
70 {

◆ ELECTRONEUM_DEFAULT_LOG_CATEGORY

#define ELECTRONEUM_DEFAULT_LOG_CATEGORY   "serialization"

Definition at line 36 of file keyvalue_serialization.h.

◆ END_KV_SERIALIZE_MAP

#define END_KV_SERIALIZE_MAP ( )
Value:
return true;}

Definition at line 102 of file keyvalue_serialization.h.

◆ KV_SERIALIZE

#define KV_SERIALIZE ( varialble)
Value:
KV_SERIALIZE_N(varialble, #varialble)
#define KV_SERIALIZE_N(varialble, val_name)

Definition at line 104 of file keyvalue_serialization.h.

◆ KV_SERIALIZE_CONTAINER_POD_AS_BLOB

#define KV_SERIALIZE_CONTAINER_POD_AS_BLOB ( varialble)
Value:
#define KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N(varialble, val_name)

Definition at line 108 of file keyvalue_serialization.h.

◆ KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N

#define KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N ( varialble,
val_name )
Value:

Definition at line 99 of file keyvalue_serialization.h.

99#define KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N(varialble, val_name) \
100 epee::serialization::selector<is_store>::serialize_stl_container_pod_val_as_blob(this_ref.varialble, stg, hparent_section, val_name);

◆ KV_SERIALIZE_N

#define KV_SERIALIZE_N ( varialble,
val_name )
Value:
epee::serialization::selector<is_store>::serialize(this_ref.varialble, stg, hparent_section, val_name);

Definition at line 72 of file keyvalue_serialization.h.

72#define KV_SERIALIZE_N(varialble, val_name) \
73 epee::serialization::selector<is_store>::serialize(this_ref.varialble, stg, hparent_section, val_name);

◆ KV_SERIALIZE_OPT

#define KV_SERIALIZE_OPT ( variable,
default_value )
Value:
KV_SERIALIZE_OPT_N(variable, #variable, default_value)
#define KV_SERIALIZE_OPT_N(variable, val_name, default_value)

Definition at line 109 of file keyvalue_serialization.h.

◆ KV_SERIALIZE_OPT_N

#define KV_SERIALIZE_OPT_N ( variable,
val_name,
default_value )
Value:
do { \
if (!epee::serialization::selector<is_store>::serialize(this_ref.variable, stg, hparent_section, val_name)) \
epee::serialize_default(this_ref.variable, default_value); \
} while (0);

Definition at line 78 of file keyvalue_serialization.h.

78#define KV_SERIALIZE_OPT_N(variable, val_name, default_value) \
79 do { \
80 if (!epee::serialization::selector<is_store>::serialize(this_ref.variable, stg, hparent_section, val_name)) \
81 epee::serialize_default(this_ref.variable, default_value); \
82 } while (0);

◆ KV_SERIALIZE_VAL_POD_AS_BLOB

#define KV_SERIALIZE_VAL_POD_AS_BLOB ( varialble)
Value:
KV_SERIALIZE_VAL_POD_AS_BLOB_N(varialble, #varialble)
#define KV_SERIALIZE_VAL_POD_AS_BLOB_N(varialble, val_name)

Definition at line 105 of file keyvalue_serialization.h.

◆ KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE

#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE ( varialble)
Value:
#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name)

Definition at line 107 of file keyvalue_serialization.h.

◆ KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N

#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N ( varialble,
val_name )
Value:
epee::serialization::selector<is_store>::serialize_t_val_as_blob(this_ref.varialble, stg, hparent_section, val_name);

Definition at line 84 of file keyvalue_serialization.h.

84#define KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name) \
85 epee::serialization::selector<is_store>::serialize_t_val_as_blob(this_ref.varialble, stg, hparent_section, val_name);

◆ KV_SERIALIZE_VAL_POD_AS_BLOB_N

#define KV_SERIALIZE_VAL_POD_AS_BLOB_N ( varialble,
val_name )
Value:
static_assert(std::is_pod<decltype(this_ref.varialble)>::value, "t_type must be a POD type."); \
KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name)
const GenericPointer< typename T::ValueType > T2 value
Definition pointer.h:1225

Definition at line 87 of file keyvalue_serialization.h.

87#define KV_SERIALIZE_VAL_POD_AS_BLOB_N(varialble, val_name) \
88 static_assert(std::is_pod<decltype(this_ref.varialble)>::value, "t_type must be a POD type."); \
89 KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name)

◆ KV_SERIALIZE_VAL_POD_AS_BLOB_OPT

#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT ( varialble,
def )
Value:
KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(varialble, #varialble, def)
#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(varialble, val_name, default_value)

Definition at line 106 of file keyvalue_serialization.h.

◆ KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N

#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N ( varialble,
val_name,
default_value )
Value:
do { \
static_assert(std::is_pod<decltype(this_ref.varialble)>::value, "t_type must be a POD type."); \
bool ret = KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name); \
if (!ret) \
epee::serialize_default(this_ref.varialble, default_value); \
} while(0);

Definition at line 91 of file keyvalue_serialization.h.

91#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(varialble, val_name, default_value) \
92 do { \
93 static_assert(std::is_pod<decltype(this_ref.varialble)>::value, "t_type must be a POD type."); \
94 bool ret = KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(varialble, val_name); \
95 if (!ret) \
96 epee::serialize_default(this_ref.varialble, default_value); \
97 } while(0);