|
template<class Serializable_functor_type , class Field_functor_type > |
void | do_for_each_field (Serializable_functor_type &&func_s, Field_functor_type &&func_f) |
| calls functor for each field More...
|
|
template<class Serializable_functor_type , class Field_functor_type > |
void | do_for_each_field (Serializable_functor_type &&func_s, Field_functor_type &&func_f) const |
| calls functor for each field, const version More...
|
|
template<typename Serializer_type > |
std::size_t | get_size_internal () const |
| Returns serializable object fields size, internal function (without serializable metadata size) More...
|
|
bool | is_any_field_provided () const |
| Performs iteration over all of the serializable fields and checks whether any of the fields in this serializable is provided. More...
|
|
void | set_unknown_field_policy (const Unknown_field_policy &policy) |
| Sets unknown field policy for this object. More...
|
|
bool | is_ignorable () const |
|
|
template<class Serializable_functor_type , class Field_functor_type , class Tuple_type , std::size_t... Is> |
void | do_for_each_field (Serializable_functor_type &&func_s, Field_functor_type &&func_f, Tuple_type &&tuple, std::index_sequence< Is... >) |
| do_for_each_field helper More...
|
|
template<class Serializable_functor_type , class Field_functor_type , class Field_type > |
void | do_for_one_field (Serializable_functor_type &&func_s, Field_functor_type &&func_f, Field_type &field, std::size_t field_id) |
| do_for_each_field helper More...
|
|
template<class Serializable_functor_type , class Field_functor_type , class Field_type > |
void | do_for_one_field (Serializable_functor_type &&func_s, Field_functor_type &&func_f, Field_type &field, std::size_t field_id, Serializable_tag) |
| do_for_each_field helper More...
|
|
template<class Serializable_functor_type , class Field_functor_type , class Field_type > |
void | do_for_one_field (Serializable_functor_type &&, Field_functor_type &&func_f, Field_type &field, std::size_t field_id, Field_definition_tag) |
| do_for_each_field helper More...
|
|
template<class Serializable_functor_type , class Field_functor_type , class Tuple_type , std::size_t... Is> |
void | do_for_each_field (Serializable_functor_type &&func_s, Field_functor_type &&func_f, Tuple_type &&tuple, std::index_sequence< Is... >) const |
| do_for_each_field (const) helper More...
|
|
template<class Serializable_functor_type , class Field_functor_type , class Field_type > |
void | do_for_one_field (Serializable_functor_type &&func_s, Field_functor_type &&func_f, const Field_type &field, std::size_t field_id) const |
| do_for_each_field (const) helper More...
|
|
template<class Serializable_functor_type , class Field_functor_type , class Field_type > |
void | do_for_one_field (Serializable_functor_type &&func_s, Field_functor_type &&func_f, const Field_type &field, std::size_t field_id, Serializable_tag) const |
| do_for_each_field (const) helper More...
|
|
template<class Serializable_functor_type , class Field_functor_type , class Field_type > |
void | do_for_one_field (Serializable_functor_type &&, Field_functor_type &&func_f, const Field_type &field, std::size_t field_id, Field_definition_tag) const |
| do_for_each_field (const) helper More...
|
|
| Serializable ()=default |
|
| Serializable (const Serializable &)=default |
|
| Serializable (Serializable &&)=default |
|
Serializable & | operator= (const Serializable &)=default |
|
Serializable & | operator= (Serializable &&)=default |
|
virtual | ~Serializable ()=default |
| Creation of Serializable objects is prohibited. More...
|
|
template<class Derived_serializable_type>
class mysql::serialization::Serializable< Derived_serializable_type >
Interface for serializable data structures.
Classes that implement serializable interface may be serialized automatically by the serializer
- Note
- To be implemented by derived: decltype(auto) define_fields { return std::make_tuple(...); } const and non-const version
Please have a look at examples enclosed in unittest The base class provides:
- methods to traverse through fields defined by the user in the Derived_serializable_type
- methods to compute a compile-time upper bound on the size of message defined by the user in Derived_serializable_type
- methods to compute the exact size of a particular message at runtime, taking into account the current values of fields defined by the user in the Derived_serializable_type Derived class should provide:
- decltype(auto) define_fields { return std::make_tuple(...); } const defines fields to be encoded. To define fields, helpers defined in the "field_definition_helpers.h" shall be used. Sufficient information about the field is the field reference. The message designer can also define:
- fixed size of an integer / upper bound of the string length
- encode predicate, which will be called by the encoding functions to determine whether field should be encoded
- an unknown_field_policy, defined by the encoder and applied by the decoder in case decoder does not recognize a field
- decltype(auto) define_fields { return std::make_tuple(...); } defines fields to be decoded. To define fields, helpers defined in the "field_definition_helpers.h" shall be used. Sufficient information about the field is the field reference. The message designer can also define:
- fixed size of an integer / upper bound of the string length
- field missing functor, which will be called by the decoding functions in case field is not encoded in the message
- an unknown_field_policy, defined by the encoder and applied by the decoder in case decoder does not recognize a field