Orocos Real-Time Toolkit  2.8.3
Classes | Typedefs | Functions
RTT::types Namespace Reference

Classes for typekits for describing and handling user data types. More...

Classes

class  BinaryOp
 
class  BinaryOperator
 An operator which reads a two DataSources and returns a modified result. More...
 
struct  BoolTypeInfo
 Write boolean as 'true' or 'false'. More...
 
class  BoostArrayTypeInfo
 Template for data types that are of type boost::array<U,int>. More...
 
class  carray
 Wraps a C array such that we can return a C array from a DataSource. More...
 
class  CArrayTypeInfo
 Template for data types that are C-style arrays. More...
 
class  CompositionFactory
 A factory for composing/decomposing and converting types to a form suitable for persistent storage, such as an XML file. More...
 
struct  EmptySendHandle
 This is a placeholder for scripting purposes. More...
 
class  EmptyTypeInfo
 Empty implementation of TypeInfo interface. More...
 
struct  EnumTypeInfo
 Type information for Enum types for which they are convertible to int. More...
 
class  GlobalsRepository
 An RTT::ConfigurationInterface for holding global variables. More...
 
class  MemberFactory
 
class  OperatorRepository
 This class builds on upon construction all expression operators known to Orocos. More...
 
class  PrimitiveSequenceTypeInfo
 New-style SequenceTypeInfo which offers type info for sequences which can NOT be sent over flow ports. More...
 
class  PrimitiveTypeInfo
 This template class allows primitive types, which are not sent over ports, to be added to Orocos. More...
 
class  RealTimeTypekitPlugin
 This interface defines the types of the realTime package. More...
 
struct  RTStringTypeInfo
 Standard string specialisation that removes decomposition. More...
 
struct  sequence_constructor_datasource
 Helper DataSource for constructing sequences with a variable number of parameters. More...
 
struct  sequence_ctor
 Sequence constructor which takes the number of elements in the sequence. More...
 
struct  sequence_ctor2
 Constructs a sequence from the number of elements and a prototype element for these elements. More...
 
struct  sequence_varargs_ctor
 See NArityDataSource which requires a function object like this one. More...
 
struct  SequenceBuilder
 Constructs an sequence with n elements, which are given upon construction time. More...
 
class  SequenceTypeInfo
 Old-style SequenceTypeInfo which offers type info for sequences which can be sent over flow ports. More...
 
class  SequenceTypeInfoBase
 Template for data types that are C++ STL Sequences with operator[], size() and capacity() methods. More...
 
struct  StdStringTypeInfo
 Standard string specialisation that removes decomposition. More...
 
struct  StdTypeInfo
 Type information for standard C types or structs of which no introspection is required. More...
 
struct  StdVectorBuilder
 
struct  StdVectorTemplateTypeInfo
 Template class for std::vector<T> typekits, providing a alternative demarshalling function for properties and optionally ostream printing. More...
 
struct  StdVectorTypeInfo
 This class tells Orocos how to handle std::vector<double>. More...
 
class  StreamFactory
 
class  StructTypeInfo
 Type Information for data types that are structs, ie all user data types fall in this category. More...
 
class  TemplateCompositionFactory
 
class  TemplateConnFactory
 
struct  TemplateConstructor
 The constructor classes allow to define type constructors or type conversions (convert type B from type A). More...
 
class  TemplateTypeInfo
 This template class allows user types to be used in all Orocos primitives. More...
 
class  TemplateValueFactory
 
class  TransportPlugin
 A class which registers TypeTransporter instances to types. More...
 
class  type_discovery
 This archive is capable of decomposing objects of serialization level 1 and 2 into part data sources. More...
 
struct  TypeConstructor
 This interface describes how constructors work. More...
 
class  TypeInfo
 A class for representing a user type, and which can build instances of that type. More...
 
class  TypeInfoGenerator
 All generator classes inherit from this object in order to allow them to be added to the TypeInfoRepository. More...
 
struct  TypeInfoName
 This helper class allows only type names to be added to Orocos. More...
 
class  TypeInfoRepository
 This class contains all known types to Orocos. More...
 
class  TypekitPlugin
 This interface defines how additional typekits are loaded into Orocos. More...
 
class  TypekitRepository
 This class allows the RTT to be extended with additional typekits (TypekitPlugin), such as for kinematics or any library foreign to Orocos. More...
 
class  TypeMarshaller
 Objects implementing this interface have the capability to convert data sources to and from a binary representation. More...
 
struct  TypeStreamSelector
 
struct  TypeStreamSelector< T, false >
 
struct  TypeStreamSelector< T, true >
 
class  TypeTransporter
 This interface defines the function a transport protocol must support in order to allow Orocos components to remotely communicate one data type. More...
 
class  UnaryOp
 UnaryOperator contains information on some unary operator that operates on one arg of a certain type. More...
 
class  UnaryOperator
 An operator which reads a single internal::DataSource and returns a modified result. More...
 
class  ValueFactory
 Creates all value objects of a certain type. More...
 

Typedefs

typedef boost::shared_ptr< CompositionFactoryCompositionFactoryPtr
 
typedef boost::shared_ptr< MemberFactoryMemberFactoryPtr
 
typedef boost::shared_ptr< StreamFactoryStreamFactoryPtr
 
typedef boost::shared_ptr< internal::ConnFactoryConnFactoryPtr
 
typedef boost::shared_ptr< ValueFactoryValueFactoryPtr
 

Functions

void loadStdTypes (TypeInfoRepository::shared_ptr ti)
 
void loadOrocosTypes (TypeInfoRepository::shared_ptr ti)
 
RTT_API OperatorRepository::shared_ptr operators ()
 This global function provides the short notation for OperatorRepository::Instance() More...
 
template<typename function >
UnaryOperator< function > * newUnaryOperator (const char *op, function f)
 helper function to create a new UnaryOperator More...
 
template<typename function >
BinaryOperator< function > * newBinaryOperator (const char *op, function f)
 helper function to create a new BinaryOperator More...
 
bool RTT_API composePropertyBag (PropertyBag const &sourcebag, PropertyBag &target)
 Uses the type composition to compose all typed properties from a property bag. More...
 
bool RTT_API decomposePropertyBag (PropertyBag const &sourcebag, PropertyBag &target)
 Inverse of RTT::types::composePropertyBag(). More...
 
bool propertyDecomposition (base::PropertyBase *source, PropertyBag &targetbag, bool recurse=true)
 Uses the type decomposition to decompose a property into a property bag that refers to all its parts. More...
 
bool typeDecomposition (base::DataSourceBase::shared_ptr source, PropertyBag &targetbag, bool recurse=true)
 Identical to RTT::types::propertyDecomposition(), but takes a DataSourceBase as source. More...
 
bool get_container_item (std::vector< bool > &cont, int index)
 Specialisation for vector<bool>, we don't return references to bits aka std::_Bit_reference. More...
 
bool get_container_item_copy (const std::vector< bool > &cont, int index)
 
template<class T >
int get_capacity (T const &cont)
 Returns the capacity of an STL container which has the capacity() member function. More...
 
template<class T >
int get_size (T const &cont)
 Returns the size of an STL container which has the size() member function. More...
 
template<class T >
T::reference get_container_item (T &cont, int index)
 Returns a reference to one item in an STL container. More...
 
template<class T >
T::value_type get_container_item_copy (const T &cont, int index)
 Returns a copy to one item in an STL container. More...
 
template<class Function >
TypeConstructornewConstructor (Function *foo, bool automatic=false)
 Create a new Constructor. More...
 
template<class Object >
TypeConstructornewConstructor (Object obj, bool automatic=false)
 Create a new Constructor. More...
 
TypeInfoRepository::shared_ptr Types ()
 Obtain a pointer to the global type system. More...
 
int _EatSpace (std::istream &is, int *countp)
 
bool Eat (std::istream &is, int delim)
 
bool EatEnd (std::istream &is, int delim)
 
std::ostream & operator<< (std::ostream &os, const std::vector< double > &v)
 
std::istream & operator>> (std::istream &os, std::vector< double > &v)
 
template<class T >
bool composeTemplateProperty (const PropertyBag &bag, T &result)
 

Detailed Description

Classes for typekits for describing and handling user data types.

Typedef Documentation

Definition at line 65 of file CompositionFactory.hpp.

Definition at line 58 of file TypeInfo.hpp.

typedef boost::shared_ptr<MemberFactory> RTT::types::MemberFactoryPtr

Definition at line 75 of file MemberFactory.hpp.

typedef boost::shared_ptr<StreamFactory> RTT::types::StreamFactoryPtr

Definition at line 55 of file StreamFactory.hpp.

typedef boost::shared_ptr<ValueFactory> RTT::types::ValueFactoryPtr

Definition at line 78 of file ValueFactory.hpp.

Function Documentation

int RTT::types::_EatSpace ( std::istream &  is,
int *  countp 
)

Definition at line 47 of file TypeStream-io.cpp.

Referenced by Eat(), and EatEnd().

bool RTT::types::composePropertyBag ( PropertyBag const &  sourcebag,
PropertyBag target 
)

Uses the type composition to compose all typed properties from a property bag.

For each PropertyBag found with a type not equal to 'PropertyBag', it will use the type's TypeInfo::composeType function and return that in target if it generates a Property.

Parameters
sourcebagContains a PropertyBag to be composed into a known type.
targetThe target type to compose the source bag into.
Returns
true if all typed PropertyBags in sourcebag could be composed to a user type, false if one or more compositions failed.

Definition at line 10 of file PropertyComposition.cpp.

References RTT::PropertyBag::begin(), RTT::types::TypeInfo::buildProperty(), RTT::types::TypeInfo::composeType(), RTT::Debug, RTT::PropertyBag::empty(), RTT::PropertyBag::end(), RTT::Error, RTT::base::PropertyBase::getDataSource(), RTT::Property< T >::getDataSource(), RTT::base::PropertyBase::getDescription(), RTT::base::PropertyBase::getName(), RTT::base::PropertyBase::getType(), RTT::PropertyBag::ownProperty(), RTT::base::PropertyBase::ready(), Types(), and RTT::Property< T >::value().

Referenced by RTT::types::BoostArrayTypeInfo< T, has_ostream >::composeType(), RTT::types::SequenceTypeInfoBase< std::vector< double > >::composeType(), RTT::types::CArrayTypeInfo< T, has_ostream >::composeType(), RTT::marsh::PropertyLoader::load(), and RTT::marsh::PropertyLoader::store().

template<class T >
bool RTT::types::composeTemplateProperty ( const PropertyBag bag,
T &  result 
)
bool RTT::types::decomposePropertyBag ( PropertyBag const &  sourcebag,
PropertyBag target 
)

Inverse of RTT::types::composePropertyBag().

This function effectively replaces the property introspection mechanism for decomposition.

Parameters
sourcebagThe bag from which to compose the type.
targetContains a C++ type to be composed into a hierarchy of properties.
Returns
True on success, false otherwise.
See also
RTT::types::propertyComposition

Definition at line 60 of file PropertyComposition.cpp.

References RTT::PropertyBag::begin(), RTT::types::TypeInfo::buildProperty(), RTT::Debug, RTT::PropertyBag::empty(), RTT::PropertyBag::end(), RTT::Error, RTT::base::PropertyBase::getDescription(), RTT::base::PropertyBase::getName(), RTT::base::PropertyBase::getType(), RTT::base::PropertyBase::getTypeInfo(), RTT::internal::DataSource< T >::narrow(), RTT::PropertyBag::ownProperty(), propertyDecomposition(), RTT::base::PropertyBase::ready(), RTT::internal::DataSource< T >::rvalue(), RTT::Property< T >::rvalue(), and RTT::Property< T >::value().

bool RTT::types::Eat ( std::istream &  is,
int  delim 
)

Definition at line 64 of file TypeStream-io.cpp.

References _EatSpace().

Referenced by operator>>().

bool RTT::types::EatEnd ( std::istream &  is,
int  delim 
)

Definition at line 81 of file TypeStream-io.cpp.

References _EatSpace().

Referenced by operator>>().

template<class T >
int RTT::types::get_capacity ( T const &  cont)

Returns the capacity of an STL container which has the capacity() member function.

Parameters
contA const ref to an STL container.
Returns
its capacity.

Definition at line 61 of file SequenceTypeInfoBase.hpp.

bool RTT::types::get_container_item ( std::vector< bool > &  cont,
int  index 
)

Specialisation for vector<bool>, we don't return references to bits aka std::_Bit_reference.

vector<bool> is an outlier and should not be used. Use vector<int> or vector<char> instead.

Parameters
contIs a vector<bool>
indexThe item to read.
Returns
A copy of the value at position index. not a reference !

Definition at line 45 of file SequenceTypeInfoBase.cpp.

Referenced by get_container_item_copy().

template<class T >
T::reference RTT::types::get_container_item ( T &  cont,
int  index 
)

Returns a reference to one item in an STL container.

Note
vector<bool> is not supported, since it's not an STL container.
Parameters
contThe container to access
indexThe item to reference
Returns
A reference to item index

Definition at line 85 of file SequenceTypeInfoBase.hpp.

References RTT::internal::NA< T >::na().

bool RTT::types::get_container_item_copy ( const std::vector< bool > &  cont,
int  index 
)

Definition at line 52 of file SequenceTypeInfoBase.cpp.

Referenced by get_container_item_copy().

template<class T >
T::value_type RTT::types::get_container_item_copy ( const T &  cont,
int  index 
)

Returns a copy to one item in an STL container.

Note
vector<bool> is not supported, since it's not an STL container.
Parameters
contThe container to access
indexThe item to extract from the sequence
Returns
A copy of item index

Definition at line 100 of file SequenceTypeInfoBase.hpp.

References get_container_item(), get_container_item_copy(), and RTT::internal::NA< T >::na().

template<class T >
int RTT::types::get_size ( T const &  cont)

Returns the size of an STL container which has the size() member function.

Parameters
contA const ref to an STL container.
Returns
its size.

Definition at line 72 of file SequenceTypeInfoBase.hpp.

void RTT::types::loadOrocosTypes ( TypeInfoRepository::shared_ptr  ti)
void RTT::types::loadStdTypes ( TypeInfoRepository::shared_ptr  ti)
template<typename function >
BinaryOperator<function>* RTT::types::newBinaryOperator ( const char *  op,
function  f 
)

helper function to create a new BinaryOperator

Definition at line 138 of file OperatorTypes.hpp.

Referenced by RTT::types::RealTimeTypekitPlugin::loadOperators().

template<class Function >
TypeConstructor* RTT::types::newConstructor ( Function *  foo,
bool  automatic = false 
)

Create a new Constructor.

Parameters
fooA pointer to the 'C' function which creates an object.
automaticSet to true to allow automatic conversion (without warning) to this type.
Returns
a Constructor object suitable for the type system.

Definition at line 122 of file TemplateConstructor.hpp.

References RTT::types::TemplateConstructor< S >::automatic.

Referenced by RTT::types::EnumTypeInfo< T >::installTypeInfoObject(), RTT::types::SequenceTypeInfoBase< std::vector< double > >::installTypeInfoObject(), and RTT::types::RealTimeTypekitPlugin::loadConstructors().

template<class Object >
TypeConstructor* RTT::types::newConstructor ( Object  obj,
bool  automatic = false 
)

Create a new Constructor.

Parameters
objA function object which has operator().
automaticSet to true to allow automatic conversion (without warning) to this type.
Returns
a Constructor object suitable for the type system.

Definition at line 135 of file TemplateConstructor.hpp.

References RTT::types::TemplateConstructor< S >::automatic.

template<typename function >
UnaryOperator<function>* RTT::types::newUnaryOperator ( const char *  op,
function  f 
)

helper function to create a new UnaryOperator

Definition at line 128 of file OperatorTypes.hpp.

Referenced by RTT::types::RealTimeTypekitPlugin::loadOperators().

RTT_API std::ostream & RTT::types::operator<< ( std::ostream &  os,
const std::vector< double > &  v 
)

Definition at line 46 of file TypeStream.cpp.

RTT_API std::istream & RTT::types::operator>> ( std::istream &  os,
std::vector< double > &  v 
)

Definition at line 61 of file TypeStream.cpp.

References Eat(), and EatEnd().

RTT_API OperatorRepository::shared_ptr RTT::types::operators ( )

This global function provides the short notation for OperatorRepository::Instance()

Definition at line 132 of file Operators.cpp.

References RTT::types::OperatorRepository::Instance().

bool RTT_API RTT::types::propertyDecomposition ( base::PropertyBase source,
PropertyBag targetbag,
bool  recurse = true 
)

Uses the type decomposition to decompose a property into a property bag that refers to all its parts.

It will first try to use the user's TypeInfo::decomposeType function and return that in targetbag if it generates a PropertyBag. If it generated something else than a PropertyBag, this function returns false. If decomposeType did not return anything, it will try the TypeInfo::getMember() approach to decompose source into the targetbag. If no members are returned, this function fails.

In case the source type info supports it, each modification of a part in the targetbag will modify source too. This is so for typekits using the boost::serialization functions in combination with TypeInfo::getMember(). In case the type decompositions were written manually using TypeInfo::decomposeType(), this relation can no longer be guaranteed, and a composition step using TypeInfo::composeType() of the same type must be tried to update source with the modifications in targetbag.

For the TypeInfo::getMember() method: This function can only work if every part of the source is known by the RTT type system. Only the parts of source that are assignable will be decomposed. The read-only parts will be silently omitted.

Parameters
sourceContains a C++ type to be decomposed into a hierarchy of properties.
targetbagThe bag in which to place the result.
Returns
True on success, false otherwise.

Definition at line 63 of file PropertyDecomposition.cpp.

References RTT::base::PropertyBase::getDataSource(), and typeDecomposition().

Referenced by decomposePropertyBag(), RTT::base::PropertyBagVisitor::introspectAndDecompose(), and typeDecomposition().

bool RTT_API RTT::types::typeDecomposition ( base::DataSourceBase::shared_ptr  source,
PropertyBag targetbag,
bool  recurse = true 
)
RTT_API TypeInfoRepository::shared_ptr RTT::types::Types ( )