| 
| 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