Members< ValueTypes > Struct Template Reference

CPP API: mio::Members< ValueTypes > Struct Template Reference
mio::Members< ValueTypes > Struct Template Reference

List of a class's members. More...

#include <default_serialize.h>

Public Member Functions

template<class T >
Members< ValueTypes..., T > add (const char *member_name, T &member)
 Add a class member. More...
 
 Members (const char *class_name)
 Initialize Members with a class name. More...
 

Public Attributes

const char * name
 Name of the class. More...
 
std::tuple< NamedRef< ValueTypes >... > named_refs
 Names and references to members of the class. More...
 

Private Member Functions

 Members (const char *class_name, std::tuple< NamedRef< ValueTypes >... > named_references)
 Initialize Members directly. More...
 

Friends

template<class... >
struct Members
 

Detailed Description

template<class... ValueTypes>
struct mio::Members< ValueTypes >

List of a class's members.

Used for default (de)serialization. Holds a char pointer to the class name as well as a tuple of NamedRefs with all added class members. Initially, the template parameter pack should be left empty. It will be filled by calling Members::add.

Template Parameters
ValueTypesThe (non-cv, non-reference) types of member variables.

Constructor & Destructor Documentation

◆ Members() [1/2]

template<class... ValueTypes>
mio::Members< ValueTypes >::Members ( const char *  class_name)
inline

Initialize Members with a class name.

Use the member function add to specify the class's variables.

Parameters
[in]class_nameName of a class.

◆ Members() [2/2]

template<class... ValueTypes>
mio::Members< ValueTypes >::Members ( const char *  class_name,
std::tuple< NamedRef< ValueTypes >... >  named_references 
)
inlineprivate

Initialize Members directly.

Used by the add function.

Parameters
[in]class_nameName of a class.
[in]named_referencesTuple of added class Members.

Member Function Documentation

◆ add()

template<class... ValueTypes>
template<class T >
Members<ValueTypes..., T> mio::Members< ValueTypes >::add ( const char *  member_name,
T &  member 
)
inline

Add a class member.

Use this function consecutively for all members, e.g. Members("class").add("a", a).add("b", b).add....

Parameters
[in]member_nameThe name used for serialization. Should be the same as or similar to the class member. For example, a good option a private class member m_time is simply "time".
[in]memberA class member. Always pass this variable directly, do not use getters or accessors.
Returns
A Members object with all previous class members and the newly added one.

Friends And Related Function Documentation

◆ Members

template<class... ValueTypes>
template<class... >
friend struct Members
friend

Member Data Documentation

◆ name

template<class... ValueTypes>
const char* mio::Members< ValueTypes >::name

Name of the class.

◆ named_refs

template<class... ValueTypes>
std::tuple<NamedRef<ValueTypes>...> mio::Members< ValueTypes >::named_refs

Names and references to members of the class.