framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | List of all members
framework::serializable::inline_object< Types > Class Template Reference

Inline object wrapper. More...

#include <framework/serializable/inline_object.hpp>

Inheritance diagram for framework::serializable::inline_object< Types >:
framework::serializable::serializable_implementation< Derived, Specification, Inherited, Constructed, Visible, Default > framework::serializable::comparable< inline_object< Types...> >

Public Member Functions

template<typename... Args>
 inline_object (Args &&...args)
 Base constructor forwarder.
 
 inline_object (std::tuple<>)
 Explicit default constructor overload.
 
template<typename... Args>
 inline_object (std::tuple< Args...> &&args)
 Tuple constructor.
 
template<typename Name , typename... Args>
auto get (Args &&...args) const -> decltype(std::declval< base< Name >>().get(std::forward< Args >(args)...))
 Get forwarder.
 
template<typename Name , typename... Args>
auto set (Args &&...args) -> decltype(std::declval< base< Name >>().set(std::forward< Args >(args)...))
 Set forwarder.
 
template<typename Name , typename... Args>
auto check (Args &&...args) const -> decltype(std::declval< base< Name >>().check(std::forward< Args >(args)...))
 Check forwarder.
 
template<typename Name , typename... Args>
auto clear (Args &&...args) -> decltype(std::declval< base< Name >>().clear(std::forward< Args >(args)...))
 Clear forwarder.
 

Additional Inherited Members

- Protected Member Functions inherited from framework::serializable::serializable_implementation< Derived, Specification, Inherited, Constructed, Visible, Default >
 ~serializable_implementation ()=default
 Default destructor.
 
 serializable_implementation ()=default
 Default constructor.
 
template<typename... Args>
 serializable_implementation (Args &&...args)
 Base object constructor. More...
 
- Protected Attributes inherited from framework::serializable::serializable_implementation< Derived, Specification, Inherited, Constructed, Visible, Default >
typedef serializable_base
 

Detailed Description

template<typename... Types>
class framework::serializable::inline_object< Types >

Inline object wrapper.

Provides a simple wrapper around a serializable_implementation, allowing container value types to be naturally defined in a serializable type as follows:

class Object : serializable <Object,
value <NAME("Field 1"), little_endian <float>>,
value <NAME("Field 2"), little_endian <double>>,
value <NAME("Field 3"), stl_vector <little_endian <int>, inline_object <
value <NAME("Value Field 1"), little_endian <int>>,
value <NAME("Value Field 2"), little_endian <double>>>>>,
value <NAME("field 4"), stl_vector <little_endian <int>, little_endian <int>>>>
{
};

Aliases are provided by the wrapper for the most common accessor methods, get, set, check, and clear allowing nested access similar to

Object x;
get <NAME("Value Field 2")> (get <NAME("Field 3")> (x)[0]);

the following equivalent syntax

Object x;
get <NAME("Field 3")> (x)[0].get <NAME("Value Field 2")> ();

The documentation for this class was generated from the following file: