39 #ifndef ORO_TASK_DATASOURCE_STORAGE_HPP 40 #define ORO_TASK_DATASOURCE_STORAGE_HPP 42 #include <boost/function.hpp> 43 #include <boost/bind.hpp> 44 #include <boost/mem_fn.hpp> 45 #include <boost/function_types/function_type.hpp> 46 #include <boost/function_types/function_arity.hpp> 66 operator T&() {
return arg; }
76 operator result_type&() {
return arg; }
108 template<
class ContainerT>
127 template<
class ContainerT>
148 template<
class ContainerT>
212 template<
int,
class T>
218 template<
class DataType>
222 typedef typename boost::function_traits<DataType>::result_type
result_type;
225 template<
class ContainerT>
232 template<
class DataType>
236 typedef typename boost::function_traits<DataType>::result_type
result_type;
237 typedef typename boost::function_traits<DataType>::arg1_type
arg1_type;
244 template<
class ContainerT>
254 template<
class DataType>
258 typedef typename boost::function_traits<DataType>::result_type
result_type;
259 typedef typename boost::function_traits<DataType>::arg1_type
arg1_type;
260 typedef typename boost::function_traits<DataType>::arg2_type
arg2_type;
269 template<
class ContainerT>
274 void store(arg1_type a1, arg2_type a2) {
280 template<
class DataType>
284 typedef typename boost::function_traits<DataType>::result_type
result_type;
285 typedef typename boost::function_traits<DataType>::arg1_type
arg1_type;
286 typedef typename boost::function_traits<DataType>::arg2_type
arg2_type;
287 typedef typename boost::function_traits<DataType>::arg3_type
arg3_type;
298 template<
class ContainerT>
304 void store(arg1_type a1, arg2_type a2, arg3_type a3) {
311 template<
class DataType>
315 typedef typename boost::function_traits<DataType>::result_type
result_type;
316 typedef typename boost::function_traits<DataType>::arg1_type
arg1_type;
317 typedef typename boost::function_traits<DataType>::arg2_type
arg2_type;
318 typedef typename boost::function_traits<DataType>::arg3_type
arg3_type;
319 typedef typename boost::function_traits<DataType>::arg4_type
arg4_type;
332 template<
class ContainerT>
339 void store(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4) {
347 template<
class DataType>
351 typedef typename boost::function_traits<DataType>::result_type
result_type;
352 typedef typename boost::function_traits<DataType>::arg1_type
arg1_type;
353 typedef typename boost::function_traits<DataType>::arg2_type
arg2_type;
354 typedef typename boost::function_traits<DataType>::arg3_type
arg3_type;
355 typedef typename boost::function_traits<DataType>::arg4_type
arg4_type;
356 typedef typename boost::function_traits<DataType>::arg5_type
arg5_type;
371 template<
class ContainerT>
379 void store(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, arg5_type a5) {
388 template<
class DataType>
392 typedef typename boost::function_traits<DataType>::result_type
result_type;
393 typedef typename boost::function_traits<DataType>::arg1_type
arg1_type;
394 typedef typename boost::function_traits<DataType>::arg2_type
arg2_type;
395 typedef typename boost::function_traits<DataType>::arg3_type
arg3_type;
396 typedef typename boost::function_traits<DataType>::arg4_type
arg4_type;
397 typedef typename boost::function_traits<DataType>::arg5_type
arg5_type;
398 typedef typename boost::function_traits<DataType>::arg6_type
arg6_type;
415 template<
class ContainerT>
424 void store(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, arg5_type a5, arg6_type a6) {
434 template<
class DataType>
438 typedef typename boost::function_traits<DataType>::result_type
result_type;
439 typedef typename boost::function_traits<DataType>::arg1_type
arg1_type;
440 typedef typename boost::function_traits<DataType>::arg2_type
arg2_type;
441 typedef typename boost::function_traits<DataType>::arg3_type
arg3_type;
442 typedef typename boost::function_traits<DataType>::arg4_type
arg4_type;
443 typedef typename boost::function_traits<DataType>::arg5_type
arg5_type;
444 typedef typename boost::function_traits<DataType>::arg6_type
arg6_type;
445 typedef typename boost::function_traits<DataType>::arg7_type
arg7_type;
464 template<
class ContainerT>
474 void store(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, arg5_type a5, arg6_type a6, arg7_type a7) {
491 template<
class DataType>
void setPointer(typename AssignableDataSource< T >::value_t *ptr)
DataSourceResultStorage()
ReferenceDataSource< ds_type >::shared_ptr result
DataSourceArgStorage< arg3_type > ma3
DataSourceArgStorage< arg5_type > ma5
DataSourceArgStorage< arg4_type > ma4
boost::function_traits< DataType >::result_type result_type
boost::function_traits< DataType >::arg5_type arg5_type
AStore< A const & > Store
Analogous to RStore, but specific for DataSourceStorage.
DataSourceArgStorage< arg3_type >::Store AStore3
Partial specialisations for storing a (const) reference or not reference The trick here is to take a ...
DataSourceArgStorage< arg6_type >::Store AStore6
boost::function_traits< DataType >::arg7_type arg7_type
DataSourceArgStorage< arg1_type >::Store AStore1
boost::function_traits< DataType >::arg3_type arg3_type
boost::function_traits< DataType >::arg2_type arg2_type
DataSourceArgStorage< arg4_type > ma4
DataSourceArgStorage< arg6_type > ma6
DataSourceArgStorage< arg3_type >::Store AStore3
remove_cr< R >::type ds_type
DataSourceArgStorage< arg3_type >::Store AStore3
A DataSource which is used to manipulate a reference to an external value, by means of a pointer...
DataSourceArgStorage< arg2_type >::Store AStore2
boost::function_traits< DataType >::arg3_type arg3_type
void initArgs(ContainerT &cc)
DataSourceArgStorage< arg2_type > ma2
DataSourceArgStorage< arg1_type > ma1
DataSourceStorageImpl(const DataSourceStorageImpl &orig)
DSRStore< result_type > retn
boost::remove_const< T >::type result_type
boost::function_traits< DataType >::arg1_type arg1_type
DataSourceArgStorage< arg1_type > ma1
LateConstReferenceDataSource< A >::shared_ptr value
DataSourceArgStorage< arg4_type >::Store AStore4
DataSourceArgStorage< arg7_type >::Store AStore7
DataSourceArgStorage< arg6_type >::Store AStore6
remove_cr< A >::type ds_type
A DataSource which is used to manipulate a reference to an external value.
void store(arg1_type a1, arg2_type a2, arg3_type a3)
void initRet(ContainerT &cc)
DataSourceArgStorage< arg3_type > ma3
boost::function_traits< DataType >::arg4_type arg4_type
boost::function_traits< DataType >::arg4_type arg4_type
void set(typename AssignableDataSource< T >::param_t t)
boost::function_traits< DataType >::arg2_type arg2_type
DataSourceResultStorage()
DataSourceStorageImpl(const DataSourceStorageImpl &orig)
DataSourceArgStorage< arg1_type > ma1
A DataSource which is used to manipulate a const reference to an external value, by means of a pointe...
boost::function_traits< DataType >::result_type result_type
void store(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, arg5_type a5, arg6_type a6)
DataSourceArgStorage< arg1_type > ma1
void store(arg1_type a1, arg2_type a2)
LateReferenceDataSource< ds_type >::shared_ptr value
DataSourceArgStorage< arg2_type >::Store AStore2
DataSourceArgStorage< arg3_type > ma3
boost::function_traits< DataType >::arg1_type arg1_type
DataSourceArgStorage< arg3_type >::Store AStore3
DataSourceArgStorage< arg2_type >::Store AStore2
boost::function_traits< DataType >::arg1_type arg1_type
DataSourceArgStorage< arg1_type >::Store AStore1
boost::function_traits< DataType >::result_type result_type
boost::function_traits< DataType >::arg4_type arg4_type
boost::function_traits< DataType >::arg1_type arg1_type
DataSourceArgStorage< arg1_type >::Store AStore1
boost::function_traits< DataType >::result_type result_type
boost::function_traits< DataType >::arg1_type arg1_type
AssignableDataSource< T >::const_reference_t rvalue() const
Get a const reference to the value of this DataSource.
void store(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, arg5_type a5, arg6_type a6, arg7_type a7)
DataSourceArgStorage< arg1_type >::Store AStore1
DataSourceArgStorage< arg1_type >::Store AStore1
DataSourceArgStorage< arg7_type > ma7
DataSourceArgStorage< arg2_type > ma2
boost::function_traits< DataType >::arg6_type arg6_type
DataSourceArgStorage< arg2_type >::Store AStore2
DataSourceArgStorage< arg5_type > ma5
DataSourceArgStorage< arg6_type > ma6
boost::function_traits< DataType >::result_type result_type
DataSourceArgStorage< arg4_type >::Store AStore4
boost::function_traits< DataType >::arg2_type arg2_type
DataSourceArgStorage< arg1_type >::Store AStore1
DataSourceStorageImpl(const DataSourceStorageImpl &orig)
boost::function_traits< DataType >::arg5_type arg5_type
void store(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4)
DataSourceArgStorage< arg3_type > ma3
DataSourceArgStorage< arg1_type > ma1
remove_cr< A >::type ds_type
DataSourceArgStorage< arg2_type > ma2
DataSourceArgStorage< arg4_type >::Store AStore4
void initArgs(ContainerT &cc)
void initArgs(ContainerT &)
Partial specialisations for storing a void, not a void or reference Wraps around RStore.
DataSourceStorageImpl(const DataSourceStorageImpl &orig)
DataSourceArgStorage< arg3_type >::Store AStore3
boost::function_traits< DataType >::arg2_type arg2_type
boost::function_traits< DataType >::result_type result_type
DataSourceArgStorage< arg2_type > ma2
boost::function_traits< DataType >::arg6_type arg6_type
DataSourceStorageImpl(const DataSourceStorageImpl &orig)
DataSourceArgStorage< arg5_type >::Store AStore5
void initArgs(ContainerT &cc)
DataSourceArgStorage< arg5_type > ma5
DataSourceArgStorage< arg2_type > ma2
void store(arg1_type a1, arg2_type a2, arg3_type a3, arg4_type a4, arg5_type a5)
DataSource< T >::result_t get() const
Return the data as type T.
DataSourceArgStorage< arg4_type >::Store AStore4
void initArgs(ContainerT &cc)
DataSourceArgStorage< arg4_type > ma4
boost::function_traits< DataType >::result_type result_type
boost::function_traits< DataType >::arg3_type arg3_type
void initRet(ContainerT &)
void setPointer(const typename AssignableDataSource< T >::value_t *ptr)
A helper-class for the Command implementation which stores the command and condition function objects...
boost::function_traits< DataType >::arg4_type arg4_type
void initArgs(ContainerT &cc)
boost::function_traits< DataType >::arg1_type arg1_type
DataSourceArgStorage< arg3_type > ma3
boost::remove_const< typename boost::remove_reference< T >::type >::type type
ValueDataSource< ds_type >::shared_ptr value
boost::function_traits< DataType >::arg2_type arg2_type
DataSourceStorageImpl(const DataSourceStorageImpl &orig)
boost::intrusive_ptr< DataSourceBase > shared_ptr
Use this type to store a pointer to a DataSourceBase.
DataSourceStorageImpl(const DataSourceStorageImpl &orig)
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
DataSourceArgStorage< arg1_type > ma1
DataSourceArgStorage< arg5_type >::Store AStore5
DataSourceArgStorage< arg1_type > ma1
void initArgs(ContainerT &cc)
DataSourceResultStorage()
DataSourceStorageImpl(const DataSourceStorageImpl &orig)
DataSourceArgStorage< arg1_type >::Store AStore1
A simple, yet very useful DataSource, which keeps a value, and returns it in its get() method...
void initRet(ContainerT &cc)
boost::function_traits< DataType >::arg3_type arg3_type
DataSourceArgStorage< arg2_type >::Store AStore2
This helper struct is required to filter out the AStore elements that don't need to be returned to th...
DataSourceArgStorage< arg2_type >::Store AStore2
boost::function_traits< DataType >::result_type result_type
boost::function_traits< DataType >::arg1_type arg1_type
void initArgs(ContainerT &cc)
boost::function_traits< DataType >::arg5_type arg5_type
DataSourceArgStorage< arg4_type > ma4
ReferenceDataSource< ds_type >::shared_ptr result
DataSourceArgStorage< arg2_type > ma2
boost::function_traits< DataType >::arg3_type arg3_type
boost::function_traits< DataType >::arg2_type arg2_type
DataSourceArgStorage< arg5_type >::Store AStore5