Orocos Real-Time Toolkit
2.5.0
|
This class can create three kinds of Boost Fusion Sequences. More...
#include <rtt/internal/CreateSequence.hpp>
Inherits RTT::internal::create_sequence_impl< List, size >.
Public Types | |
typedef create_sequence < typename mpl::pop_front < List >::type > | tail |
The tail is ourselves minus the head. | |
typedef mpl::front< List >::type | arg_type |
The argument type. | |
typedef remove_cr< arg_type >::type | ds_arg_type |
The data source value type of an assignable data source is non-const, non-reference. | |
typedef mpl::if_< typename is_pure_reference< arg_type > ::type, typename AssignableDataSource < ds_arg_type >::shared_ptr, typename DataSource < ds_arg_type >::shared_ptr > ::type | ds_type |
The type of a single element of the vector. | |
typedef AssignableDataSource < ds_arg_type >::shared_ptr | ads_type |
typedef tail::type | tail_type |
The type of the tail (List - head) of our sequence. | |
typedef bf::cons< ds_type, tail_type > | type |
The joint DataSource<T>::shared_ptr type of head and tail, again a fusion cons. | |
typedef tail::atype | atail_type |
typedef bf::cons< ads_type, atail_type > | atype |
typedef tail::data_type | arg_tail_type |
typedef bf::cons< arg_type, arg_tail_type > | data_type |
The joint T data type of head and tail. | |
Static Public Member Functions | |
static type | sources (std::vector< base::DataSourceBase::shared_ptr >::const_iterator args, int argnbr=1) |
Converts a std::vector of DataSourceBase types into a boost::fusion Sequence of DataSources of the types given in List. | |
static atype | assignable (std::vector< base::DataSourceBase::shared_ptr >::const_iterator args, int argnbr=1) |
Converts a std::vector of DataSourceBase types into a boost::fusion Sequence of AssignableDataSources of the types given in List. | |
static data_type | data (const type &seq) |
Returns the data contained in the data sources as a Fusion Sequence. | |
static void | set (const data_type &in, const atype &seq) |
Sets the values of a sequence of AssignableDataSource<T> data sources ot the values contained in in using set(). | |
static void | update (const type &seq) |
Calls the DataSourceBase::updated() function for each element in sequence seq, in case the element is a non-const reference type. | |
static type | copy (const type &seq, std::map< const base::DataSourceBase *, base::DataSourceBase * > &alreadyCloned) |
Copies a sequence of DataSource<T>::shared_ptr according to the copy/clone semantics of data sources. | |
static const types::TypeInfo * | GetTypeInfo (int i) |
Returns the i'th argument type info as returned by DataSource<ArgI>::GetTypeInfo(), starting from 1. | |
static std::string | GetType (int i) |
Returns the i'th argument type name as returned by DataSource<ArgI>::GetType(), starting from 1. |
This class can create three kinds of Boost Fusion Sequences.
sources() creates a fusion sequence of (Assignable)DataSource<T>::shared_ptr from an mpl sequence and a std::vector<DataSourceBase*>. Both must have same length. The mpl sequence is typically obtained from the function_types parameter_types traits class.
assignable() creates a fusion sequence of AssignableDataSource<T>::shared_ptr from an mpl sequence and a std::vector<DataSourceBase*>. Both must have same length. The mpl sequence is typically obtained from the function_types parameter_types traits class. If the mpl sequence elements contain const qualifiers, these are removed, so T is always a value type.
data() creates a fusion sequence of T,U,V,... from the fusion sequence returned by operator(). It contains the values of the data sources obtained by calling get().
copy() creates a fusion sequence of DataSource<T>::shared_ptr from an mpl sequence and a sequence returned by operator() to do the scripting copy/clone semantics on each element of the sequence.
This is a typical head-tail recursive implementation where operator() calls itself, but in another type specialisation.
Definition at line 181 of file CreateSequence.hpp.
typedef tail::type RTT::internal::create_sequence_impl< List, size >::tail_type [inherited] |
The type of the tail (List - head) of our sequence.
It is recursively formulated in terms of create_sequence.
Definition at line 217 of file CreateSequence.hpp.
static atype RTT::internal::create_sequence_impl< List, size >::assignable | ( | std::vector< base::DataSourceBase::shared_ptr >::const_iterator | args, |
int | argnbr = 1 |
||
) | [inline, static, inherited] |
Converts a std::vector of DataSourceBase types into a boost::fusion Sequence of AssignableDataSources of the types given in List.
Will throw if an element of the vector could not be dynamic casted to the respective element type of List.
args | A vector of data sources |
argnbr | Leave as default. Used internally to count recursive calls. |
Definition at line 258 of file CreateSequence.hpp.
static type RTT::internal::create_sequence_impl< List, size >::copy | ( | const type & | seq, |
std::map< const base::DataSourceBase *, base::DataSourceBase * > & | alreadyCloned | ||
) | [inline, static, inherited] |
Copies a sequence of DataSource<T>::shared_ptr according to the copy/clone semantics of data sources.
seq | A Fusion Sequence of DataSource<T>::shared_ptr |
alreadyCloned | the copy/clone map |
Definition at line 304 of file CreateSequence.hpp.
static data_type RTT::internal::create_sequence_impl< List, size >::data | ( | const type & | seq | ) | [inline, static, inherited] |
Returns the data contained in the data sources as a Fusion Sequence.
seq | A Fusion Sequence of DataSource<T> types. |
Definition at line 272 of file CreateSequence.hpp.
static std::string RTT::internal::create_sequence_impl< List, size >::GetType | ( | int | i | ) | [inline, static, inherited] |
Returns the i'th argument type name as returned by DataSource<ArgI>::GetType(), starting from 1.
i | A number between 1..N with N being the number of types in the mpl List of this class. |
Definition at line 334 of file CreateSequence.hpp.
static const types::TypeInfo* RTT::internal::create_sequence_impl< List, size >::GetTypeInfo | ( | int | i | ) | [inline, static, inherited] |
Returns the i'th argument type info as returned by DataSource<ArgI>::GetTypeInfo(), starting from 1.
i | A number between 1..N with N being the number of types in the mpl List of this class. |
Definition at line 317 of file CreateSequence.hpp.
static void RTT::internal::create_sequence_impl< List, size >::set | ( | const data_type & | in, |
const atype & | seq | ||
) | [inline, static, inherited] |
Sets the values of a sequence of AssignableDataSource<T> data sources ot the values contained in in using set().
in | The values to write. |
seq | The receiving assignable data sources. |
Definition at line 282 of file CreateSequence.hpp.
static type RTT::internal::create_sequence_impl< List, size >::sources | ( | std::vector< base::DataSourceBase::shared_ptr >::const_iterator | args, |
int | argnbr = 1 |
||
) | [inline, static, inherited] |
Converts a std::vector of DataSourceBase types into a boost::fusion Sequence of DataSources of the types given in List.
Will throw if an element of the vector could not be dynamic casted to the respective element type of List.
args | A vector of data sources |
argnbr | Leave as default. Used internally to count recursive calls. |
Definition at line 242 of file CreateSequence.hpp.
static void RTT::internal::create_sequence_impl< List, size >::update | ( | const type & | seq | ) | [inline, static, inherited] |
Calls the DataSourceBase::updated() function for each element in sequence seq, in case the element is a non-const reference type.
seq | A sequence of DataSource<T> objects |
Definition at line 292 of file CreateSequence.hpp.