Orocos Real-Time Toolkit  2.9.0
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
RTT::Operation< Signature > Class Template Reference

The operation ties a C or C++ function into a component interface. More...

#include <rtt/base/OperationBase.hpp>

Inheritance diagram for RTT::Operation< Signature >:
RTT::base::OperationBase

Public Member Functions

 Operation (const std::string &name)
 Create an operation object with a name. More...
 
 Operation (const std::string &name, boost::function< Signature > func, ExecutionThread et=ClientThread, ExecutionEngine *ownerEngine=NULL)
 Create an operation object with a name and function to execute. More...
 
template<class Function , class Object >
 Operation (const std::string &name, Function func, Object o, ExecutionThread et=ClientThread, ExecutionEngine *ownerEngine=NULL)
 Create an operation object with a name and class member function to execute. More...
 
 ~Operation ()
 
Operation< Signature > & doc (const std::string &description)
 Document this operation. More...
 
Operation< Signature > & arg (const std::string &name, const std::string &description)
 Document an argument of this operation. More...
 
Operationcalls (boost::function< Signature > func, ExecutionThread et=ClientThread, ExecutionEngine *ownerEngine=NULL)
 Indicate that this operation calls a given function. More...
 
template<class Function , class Object >
Operationcalls (Function func, Object o, ExecutionThread et=ClientThread, ExecutionEngine *ownerEngine=NULL)
 Indicate that this operation calls a given class member function. More...
 
virtual base::DisposableInterface::shared_ptr getImplementation ()
 Returns the implementation object of this operation. More...
 
virtual const base::DisposableInterface::shared_ptr getImplementation () const
 
virtual base::OperationCallerBase< Signature >::shared_ptr getOperationCaller ()
 
virtual const base::OperationCallerBase< Signature >::shared_ptr getOperationCaller () const
 
const std::string & getName ()
 Returns the name of this operation. More...
 
const std::vector< std::string > & getDescriptions ()
 Returns all the documented descriptions of this operation, as a single list, starting with the operation's description, followed by the name, description pairs of each argument. More...
 
bool ready () const
 An operation is ready if it has an implementation and is present in a TaskContext. More...
 
void setOwner (ExecutionEngine *ee)
 Updates the owning ExecutionEngine that might execute this operation. More...
 
ExecutionEnginegetOwner () const
 

Protected Member Functions

RTT_API void mdoc (const std::string &description)
 
RTT_API void marg (const std::string &name, const std::string &description)
 

Protected Attributes

std::string mname
 
std::vector< std::string > descriptions
 
ExecutionEnginemowner
 

Detailed Description

template<class Signature>
class RTT::Operation< Signature >

The operation ties a C or C++ function into a component interface.

An operation consists of a name and a Signature.

For example, if you want his operation to call a function: bool foo(int a, double b) { return a < b; } Then the function Signature looks like: 'bool(int,double)' which is the signature type of 'bool foo(int a, double b)'. So a function signature is written as the function declaration, but without the function and argument names.

Parameters
SignatureA template parameter that contains the function signature type of the function this operation object will call.

Definition at line 52 of file OperationBase.hpp.

Constructor & Destructor Documentation

template<class Signature>
RTT::Operation< Signature >::Operation ( const std::string &  name)
inline

Create an operation object with a name.

The resulting object will not call any function but can be used to attach Signal handlers to (using signals() ) or set the function to call later on with calls().

Parameters
nameThe name of this instance.
Postcondition
The resulting operation will have ClientThread execution semantics.

Definition at line 83 of file Operation.hpp.

template<class Signature>
RTT::Operation< Signature >::Operation ( const std::string &  name,
boost::function< Signature >  func,
ExecutionThread  et = ClientThread,
ExecutionEngine ownerEngine = NULL 
)
inline

Create an operation object with a name and function to execute.

Parameters
nameThe name of this instance.
funcThe function to execute, for example &foo.
etThe thread that should execute the function when the operation is invoked.
ownerEnginethe execution engine of the owner of this operation if any. Will be automatically set when you use Service::addOperation().

Definition at line 98 of file Operation.hpp.

template<class Signature>
template<class Function , class Object >
RTT::Operation< Signature >::Operation ( const std::string &  name,
Function  func,
Object  o,
ExecutionThread  et = ClientThread,
ExecutionEngine ownerEngine = NULL 
)
inline

Create an operation object with a name and class member function to execute.

Parameters
nameThe name of this instance.
funcThe function to execute, for example &Bar::foo
oThe object that has this function, for example &bar
etThe thread that should execute the function when the operation is invoked.
ownerEnginethe execution engine of the owner of this operation if any. Will be automatically set when you use Service::addOperation().

Definition at line 113 of file Operation.hpp.

template<class Signature>
RTT::Operation< Signature >::~Operation ( )
inline

Definition at line 119 of file Operation.hpp.

Member Function Documentation

template<class Signature>
Operation<Signature>& RTT::Operation< Signature >::arg ( const std::string &  name,
const std::string &  description 
)
inline

Document an argument of this operation.

Each time arg() is called, it documents the next argument.

Parameters
nameA single word (identifier) denoting the name of this argument
descriptionA descriptive line of text for this argument
Returns
A reference to this object.

Definition at line 137 of file Operation.hpp.

Referenced by RTT_corba_COperationInterface_i::RTT_corba_COperationInterface_i().

template<class Signature>
Operation& RTT::Operation< Signature >::calls ( boost::function< Signature >  func,
ExecutionThread  et = ClientThread,
ExecutionEngine ownerEngine = NULL 
)
inline

Indicate that this operation calls a given function.

This will replace any previously registered function present in this operation.

Parameters
funcThe function to call when the operation is invoked
etThe thread that should execute the function when the operation is invoked.
ownerEnginethe execution engine of the owner of this operation if any.
Returns
A reference to this object.

Definition at line 147 of file Operation.hpp.

Referenced by RTT::Operation< bool(std::string) >::Operation().

template<class Signature>
template<class Function , class Object >
Operation& RTT::Operation< Signature >::calls ( Function  func,
Object  o,
ExecutionThread  et = ClientThread,
ExecutionEngine ownerEngine = NULL 
)
inline

Indicate that this operation calls a given class member function.

This will replace any previously registered function present in this operation.

Parameters
funcThe function to call when the operation is invoked, for example &Bar::foo
oThe object that has this function, for example &bar
etThe thread that should execute the function when the operation is invoked.
ownerEnginethe execution engine of the owner of this operation if any.
Returns
A reference to this object.

Definition at line 168 of file Operation.hpp.

template<class Signature>
Operation<Signature>& RTT::Operation< Signature >::doc ( const std::string &  description)
inline

Document this operation.

Parameters
descriptionA descriptive line of text.
Returns
A reference to this object.

Definition at line 128 of file Operation.hpp.

Referenced by RTT_corba_COperationInterface_i::RTT_corba_COperationInterface_i().

const std::vector<std::string>& RTT::base::OperationBase::getDescriptions ( )
inlineinherited

Returns all the documented descriptions of this operation, as a single list, starting with the operation's description, followed by the name, description pairs of each argument.

In case no argument was documented, only the description of the operation is returned.

Returns
A vector with all documented descriptions.

Definition at line 93 of file OperationBase.hpp.

References RTT::base::OperationBase::descriptions, and RTT::base::OperationBase::getImplementation().

Referenced by RTT::internal::OperationInterfacePartHelper::description(), RTT::internal::OperationInterfacePartFusedDS< Signature, ObjT >::description(), RTT::internal::OperationInterfacePartHelper::getArgumentList(), and RTT::internal::OperationInterfacePartFusedDS< Signature, ObjT >::getArgumentList().

template<class Signature>
virtual base::DisposableInterface::shared_ptr RTT::Operation< Signature >::getImplementation ( )
inlinevirtual
template<class Signature>
virtual const base::DisposableInterface::shared_ptr RTT::Operation< Signature >::getImplementation ( ) const
inlinevirtual

Implements RTT::base::OperationBase.

Definition at line 227 of file Operation.hpp.

const std::string& RTT::base::OperationBase::getName ( )
inlineinherited
template<class Signature>
virtual base::OperationCallerBase<Signature>::shared_ptr RTT::Operation< Signature >::getOperationCaller ( )
inlinevirtual
template<class Signature>
virtual const base::OperationCallerBase<Signature>::shared_ptr RTT::Operation< Signature >::getOperationCaller ( ) const
inlinevirtual

Definition at line 230 of file Operation.hpp.

ExecutionEngine* RTT::base::OperationBase::getOwner ( ) const
inlineinherited

Definition at line 122 of file OperationBase.hpp.

References RTT::base::OperationBase::mowner.

void RTT::base::OperationBase::marg ( const std::string &  name,
const std::string &  description 
)
protectedinherited
void RTT::base::OperationBase::mdoc ( const std::string &  description)
protectedinherited
bool RTT::base::OperationBase::ready ( ) const
inlineinherited

An operation is ready if it has an implementation and is present in a TaskContext.

Returns
true if ready.

Definition at line 108 of file OperationBase.hpp.

References RTT::base::OperationBase::getImplementation().

void RTT::base::OperationBase::setOwner ( ExecutionEngine ee)
inlineinherited

Updates the owning ExecutionEngine that might execute this operation.

Parameters
ee

Definition at line 116 of file OperationBase.hpp.

References RTT::base::OperationBase::ownerUpdated().

Referenced by RTT::Service::addLocalOperation().

Member Data Documentation

std::vector<std::string> RTT::base::OperationBase::descriptions
protectedinherited
std::string RTT::base::OperationBase::mname
protectedinherited

Definition at line 70 of file OperationBase.hpp.

Referenced by RTT::base::OperationBase::getName().

ExecutionEngine* RTT::base::OperationBase::mowner
protectedinherited

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