Orocos Real-Time Toolkit  2.9.0
Public Types | Public Member Functions | Public Attributes | List of all members
RTT::types::type_discovery Class Reference

This archive is capable of decomposing objects of serialization level 1 and 2 into part data sources. More...

#include <rtt/types/type_discovery.hpp>

Public Types

typedef std::vector< base::DataSourceBase::shared_ptrParts
 
typedef std::vector< std::string > PartNames
 
typedef char Elem
 
typedef boost::mpl::bool_< true > is_loading
 Saving Archive Concept::is_loading. More...
 
typedef boost::mpl::bool_< false > is_saving
 Saving Archive Concept::is_saving. More...
 

Public Member Functions

 type_discovery (base::DataSourceBase::shared_ptr parent)
 Constructor which inspects part names and creates part data sources. More...
 
 type_discovery ()
 Constructor which only introspects the part names. More...
 
base::DataSourceBase::shared_ptr getMember (const std::string name)
 
template<class T >
void discover (T &t)
 This function discovers all parts of a serializable struct and creates a DataSource object for each member of that struct. More...
 
template<class T >
base::DataSourceBase::shared_ptr discoverMember (T &t, const std::string name)
 This function discovers a single part of a serializable struct and returns an assignable datasource to that member of that struct, or a null ptr if no such member exists or if the member is not assignable. More...
 
template<class T >
bool referenceMember (internal::Reference *ref, T &t, const std::string name)
 This function discovers a single part of a serializable struct and sets a reference to that member of that struct. More...
 
unsigned int get_library_version ()
 Loading Archive Concept::get_library_version() More...
 
void reset_object_address (const void *new_address, const void *old_address)
 Loading Archive Concept::reset_object_address(v,u) More...
 
void delete_created_pointers ()
 Loading Archive Concept::delete_created_pointers() More...
 
template<class T >
const boost::archive::detail::basic_pointer_iserializer * register_type (T *=NULL)
 Loading Archive Concept::register_type<T>() and ::register_type(u) More...
 
void load_object (void *x, const boost::archive::detail::basic_oserializer &bos)
 Note: not in LoadArchive concept but required when we use archive::load ! More...
 
template<class T >
type_discoveryoperator>> (T &t)
 Saving Archive Concept::operator<<. More...
 
template<class T >
type_discoveryoperator& (T &t)
 Saving Archive Concept::operator&. More...
 
template<class T >
type_discoveryload_a_type (T &t, boost::mpl::true_)
 Specialisation for writing out primitive types. More...
 
template<class T >
type_discoveryload_a_type (T &t, boost::mpl::false_)
 Specialisation for writing out composite types (objects). More...
 
template<class T >
type_discoveryload_a_type (const boost::serialization::array< T > &t, boost::mpl::false_)
 Specialisation that converts a boost serialization array into a RTT types carray. More...
 
template<class T , std::size_t N>
type_discoveryload_a_type (boost::array< T, N > &t, boost::mpl::false_)
 Specialisation that converts a boost::array into a RTT types carray. More...
 
template<class T >
type_discoveryload_a_type (const T *&, boost::mpl::false_)
 We do not support pointer types. More...
 
template<class T >
type_discoveryload_a_type (const boost::serialization::nvp< T > &t, boost::mpl::false_)
 special treatment for name-value pairs. More...
 

Public Attributes

base::DataSourceBase::shared_ptr mparent
 The parent struct we're deserializing. More...
 
Parts mparts
 The parts of the parent struct. More...
 
PartNames mnames
 The names of the parts of the parent struct. More...
 
std::string membername
 If non-empty, only discover the member with this name. More...
 
internal::Referencemref
 If non-empty, use this reference to the member with name membername. More...
 

Detailed Description

This archive is capable of decomposing objects of serialization level 1 and 2 into part data sources.

Definition at line 94 of file type_discovery.hpp.

Member Typedef Documentation

Definition at line 125 of file type_discovery.hpp.

typedef boost::mpl::bool_<true> RTT::types::type_discovery::is_loading

Saving Archive Concept::is_loading.

Definition at line 129 of file type_discovery.hpp.

typedef boost::mpl::bool_<false> RTT::types::type_discovery::is_saving

Saving Archive Concept::is_saving.

Definition at line 133 of file type_discovery.hpp.

typedef std::vector<std::string> RTT::types::type_discovery::PartNames

Definition at line 103 of file type_discovery.hpp.

Definition at line 102 of file type_discovery.hpp.

Constructor & Destructor Documentation

RTT::types::type_discovery::type_discovery ( base::DataSourceBase::shared_ptr  parent)
inline

Constructor which inspects part names and creates part data sources.

Definition at line 139 of file type_discovery.hpp.

RTT::types::type_discovery::type_discovery ( )
inline

Constructor which only introspects the part names.

No parts will be created.

Definition at line 148 of file type_discovery.hpp.

Member Function Documentation

void RTT::types::type_discovery::delete_created_pointers ( )
inline

Loading Archive Concept::delete_created_pointers()

Definition at line 220 of file type_discovery.hpp.

template<class T >
void RTT::types::type_discovery::discover ( T &  t)
inline

This function discovers all parts of a serializable struct and creates a DataSource object for each member of that struct.

Use getMember() afterwards to retrieve the DataSource of each member.

Definition at line 167 of file type_discovery.hpp.

Referenced by discoverMember(), RTT::types::StructTypeInfo< T, has_ostream >::getMemberNames(), and referenceMember().

template<class T >
base::DataSourceBase::shared_ptr RTT::types::type_discovery::discoverMember ( T &  t,
const std::string  name 
)
inline

This function discovers a single part of a serializable struct and returns an assignable datasource to that member of that struct, or a null ptr if no such member exists or if the member is not assignable.

Definition at line 181 of file type_discovery.hpp.

References discover().

Referenced by RTT::types::StructTypeInfo< T, has_ostream >::getMember().

unsigned int RTT::types::type_discovery::get_library_version ( )
inline

Loading Archive Concept::get_library_version()

Returns
This library's version.

Definition at line 208 of file type_discovery.hpp.

base::DataSourceBase::shared_ptr RTT::types::type_discovery::getMember ( const std::string  name)
inline

Definition at line 153 of file type_discovery.hpp.

template<class T >
type_discovery& RTT::types::type_discovery::load_a_type ( T &  t,
boost::mpl::true_   
)
inline

Specialisation for writing out primitive types.

Parameters
tprimitive data (bool, int,...)
Returns
*this

Definition at line 269 of file type_discovery.hpp.

Referenced by load_a_type(), and operator>>().

template<class T >
type_discovery& RTT::types::type_discovery::load_a_type ( T &  t,
boost::mpl::false_   
)
inline

Specialisation for writing out composite types (objects).

Parameters
ta serializable class or struct.
Returns
*this

Definition at line 284 of file type_discovery.hpp.

References load_a_type().

template<class T >
type_discovery& RTT::types::type_discovery::load_a_type ( const boost::serialization::array< T > &  t,
boost::mpl::false_   
)
inline

Specialisation that converts a boost serialization array into a RTT types carray.

Parameters
t
Returns
*this

Definition at line 299 of file type_discovery.hpp.

template<class T , std::size_t N>
type_discovery& RTT::types::type_discovery::load_a_type ( boost::array< T, N > &  t,
boost::mpl::false_   
)
inline

Specialisation that converts a boost::array into a RTT types carray.

Parameters
t
Returns
*this

Definition at line 312 of file type_discovery.hpp.

template<class T >
type_discovery& RTT::types::type_discovery::load_a_type ( const T *&  ,
boost::mpl::false_   
)
inline

We do not support pointer types.

Parameters
t

Definition at line 325 of file type_discovery.hpp.

template<class T >
type_discovery& RTT::types::type_discovery::load_a_type ( const boost::serialization::nvp< T > &  t,
boost::mpl::false_   
)
inline

special treatment for name-value pairs.

Since all types pass here, we take some decisions early

Definition at line 335 of file type_discovery.hpp.

References membername, and RTT::internal::Reference::setReference().

void RTT::types::type_discovery::load_object ( void *  x,
const boost::archive::detail::basic_oserializer &  bos 
)
inline

Note: not in LoadArchive concept but required when we use archive::load !

Parameters
x
bos

Definition at line 236 of file type_discovery.hpp.

template<class T >
type_discovery& RTT::types::type_discovery::operator& ( T &  t)
inline

Saving Archive Concept::operator&.

Parameters
tThe type to load.
Returns
*this

Definition at line 258 of file type_discovery.hpp.

References operator>>().

template<class T >
type_discovery& RTT::types::type_discovery::operator>> ( T &  t)
inline

Saving Archive Concept::operator<<.

Parameters
tThe type to load.
Returns
*this

Definition at line 247 of file type_discovery.hpp.

References load_a_type().

Referenced by operator&().

template<class T >
bool RTT::types::type_discovery::referenceMember ( internal::Reference ref,
T &  t,
const std::string  name 
)
inline

This function discovers a single part of a serializable struct and sets a reference to that member of that struct.

Definition at line 194 of file type_discovery.hpp.

References discover().

Referenced by RTT::types::StructTypeInfo< T, has_ostream >::getMember().

template<class T >
const boost::archive::detail::basic_pointer_iserializer* RTT::types::type_discovery::register_type ( T *  = NULL)
inline

Loading Archive Concept::register_type<T>() and ::register_type(u)

Parameters
Thedata type to register in this archive.
Returns

Definition at line 229 of file type_discovery.hpp.

void RTT::types::type_discovery::reset_object_address ( const void *  new_address,
const void *  old_address 
)
inline

Loading Archive Concept::reset_object_address(v,u)

Parameters
new_address
old_address

Definition at line 215 of file type_discovery.hpp.

Member Data Documentation

std::string RTT::types::type_discovery::membername

If non-empty, only discover the member with this name.

Definition at line 117 of file type_discovery.hpp.

Referenced by load_a_type().

PartNames RTT::types::type_discovery::mnames

The names of the parts of the parent struct.

Definition at line 112 of file type_discovery.hpp.

Referenced by RTT::types::StructTypeInfo< T, has_ostream >::getMemberNames().

base::DataSourceBase::shared_ptr RTT::types::type_discovery::mparent

The parent struct we're deserializing.

Definition at line 100 of file type_discovery.hpp.

Parts RTT::types::type_discovery::mparts

The parts of the parent struct.

Definition at line 107 of file type_discovery.hpp.

internal::Reference* RTT::types::type_discovery::mref

If non-empty, use this reference to the member with name membername.

Definition at line 123 of file type_discovery.hpp.


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