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