Monero
Loading...
Searching...
No Matches
keyvalue_serialization.h File Reference
#include <type_traits>
#include <boost/utility/value_init.hpp>
#include <boost/foreach.hpp>
#include "misc_log_ex.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
 TODO: (mj-xmr) This will be reduced in an another PR.

Macros

#define MONERO_DEFAULT_LOG_CATEGORY   "serialization"
#define BEGIN_KV_SERIALIZE_MAP()
#define KV_SERIALIZE_N(varialble, val_name)
#define KV_SERIALIZE_PARENT(type)
#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(variable, val_name)
#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N(variable, 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 ( )

◆ END_KV_SERIALIZE_MAP

#define END_KV_SERIALIZE_MAP ( )
Value:
return true;}

◆ KV_SERIALIZE

#define KV_SERIALIZE ( varialble)
Value:
KV_SERIALIZE_N(varialble, #varialble)
#define KV_SERIALIZE_N(varialble, val_name)
Definition keyvalue_serialization.h:78

◆ 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 keyvalue_serialization.h:115

◆ KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N

#define KV_SERIALIZE_CONTAINER_POD_AS_BLOB_N ( varialble,
val_name )
Value:
Definition keyvalue_serialization_overloads.h:324

◆ 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);

◆ 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 keyvalue_serialization.h:90

◆ KV_SERIALIZE_OPT_N

#define KV_SERIALIZE_OPT_N ( variable,
val_name,
default_value )
Value:
do { \
if (is_store && this_ref.variable == default_value) \
break; \
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);

◆ KV_SERIALIZE_PARENT

#define KV_SERIALIZE_PARENT ( type)
Value:
do { \
if (!((type*)this)->serialize_map<is_store, t_storage>(stg, hparent_section)) \
return false; \
} 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(variable, val_name)
Definition keyvalue_serialization.h:101

◆ 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 keyvalue_serialization.h:98

◆ 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);

◆ KV_SERIALIZE_VAL_POD_AS_BLOB_N

#define KV_SERIALIZE_VAL_POD_AS_BLOB_N ( variable,
val_name )
Value:
static_assert(std::is_trivially_copyable<decltype(this_ref.variable)>(), "t_type must be a trivially copyable type."); \
static_assert(std::is_standard_layout<decltype(this_ref.variable)>(), "t_type must be a standard layout type."); \
KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(variable, 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(variable, val_name, default_value)
Definition keyvalue_serialization.h:106

◆ KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N

#define KV_SERIALIZE_VAL_POD_AS_BLOB_OPT_N ( variable,
val_name,
default_value )
Value:
do { \
static_assert(std::is_trivially_copyable<decltype(this_ref.variable)>(), "t_type must be a trivially copyable type."); \
static_assert(std::is_standard_layout<decltype(this_ref.variable)>(), "t_type must be a standard layout type."); \
bool ret = KV_SERIALIZE_VAL_POD_AS_BLOB_FORCE_N(variable, val_name) \
if (!ret) \
epee::serialize_default(this_ref.variable, default_value); \
} while(0);

◆ MONERO_DEFAULT_LOG_CATEGORY

#define MONERO_DEFAULT_LOG_CATEGORY   "serialization"