Orocos Real-Time Toolkit  2.5.0
Public Types | Public Member Functions | Protected Types | Protected Attributes
RTT::types::PrimitiveTypeInfo< T, use_ostream > Class Template Reference

This template class allows primitive types, which are not sent over ports, to be added to Orocos. More...

#include <rtt/types/PrimitiveTypeInfo.hpp>

Inheritance diagram for RTT::types::PrimitiveTypeInfo< T, use_ostream >:
RTT::types::TypeInfo RTT::types::TemplateTypeInfo< T, use_ostream > RTT::types::TemplateTypeInfo< T, false > RTT::types::TemplateTypeInfo< T, has_ostream > RTT::types::TemplateTypeInfo< T, true > RTT::types::SequenceTypeInfo< rt_string, true > RTT::types::SequenceTypeInfo< std::string, true > RTT::types::SequenceTypeInfo< std::vector< double >, true > RTT::types::SequenceTypeInfo< std::vector< T >, has_ostream > RTT::types::EnumTypeInfo< T > RTT::types::SequenceTypeInfo< T, has_ostream > RTT::types::StructTypeInfo< T, has_ostream > RTT::types::StdTypeInfo< T >

List of all members.

Public Types

typedef T DataType
 The given T parameter is the type of the DataSources.

Public Member Functions

 PrimitiveTypeInfo (std::string name)
 Setup Type Information for type name.
bool installTypeInfoObject ()
 Installs the type info object in the global data source type info handler.
base::AttributeBasebuildConstant (std::string name, base::DataSourceBase::shared_ptr dsb) const
 Build a non modifyable instance of this type.
base::AttributeBasebuildVariable (std::string name) const
 Build a non modifyable instance of this type.
base::AttributeBasebuildAttribute (std::string name, base::DataSourceBase::shared_ptr in) const
 Build an Attribute of this type.
base::AttributeBasebuildAlias (std::string name, base::DataSourceBase::shared_ptr in) const
 build an alias with b as the value.
base::DataSourceBase::shared_ptr buildActionAlias (base::ActionInterface *action, base::DataSourceBase::shared_ptr in) const
 Returns a DataSource that first executes an action and returns the result of another data source.
virtual const std::string & getTypeName () const
 Return unique the type name.
virtual base::PropertyBasebuildProperty (const std::string &name, const std::string &desc, base::DataSourceBase::shared_ptr source=0) const
 Build a Property of this type.
virtual
base::DataSourceBase::shared_ptr 
buildValue () const
 Build a internal::ValueDataSource of this type.
virtual
base::DataSourceBase::shared_ptr 
buildReference (void *ptr) const
 Build a internal::ReferenceDataSource of this type, pointing to the given pointer.
virtual std::ostream & write (std::ostream &os, base::DataSourceBase::shared_ptr in) const
 Output this datasource as a human readable string.
virtual std::istream & read (std::istream &os, base::DataSourceBase::shared_ptr out) const
 Read a new value for this datasource from a human readable string.
virtual bool isStreamable () const
 Returns true if this type is directly streamable using read()/write() or toString()/fromString().
virtual bool composeType (base::DataSourceBase::shared_ptr source, base::DataSourceBase::shared_ptr result) const
 Compose a type (target) from a DataSourceBase (source) containing its members.
virtual
base::DataSourceBase::shared_ptr 
decomposeType (base::DataSourceBase::shared_ptr source) const
 A primitive type is decomposed into itself.
virtual bool decomposeType (base::DataSourceBase::shared_ptr source, PropertyBag &targetbag) const
TypeInfo::TypeId getTypeId () const
 Register a protocol for data transport over a network.
const char * getTypeIdName () const
 Register a protocol for data transport over a network.
base::InputPortInterfaceinputPort (std::string const &name) const
 Returns a new InputPort<T> object where T is the type represented by this TypeInfo object.
base::OutputPortInterfaceoutputPort (std::string const &name) const
 Returns a new OutputPort<T> object where T is the type represented by this TypeInfo object.
base::ChannelElementBase::shared_ptr buildDataStorage (ConnPolicy const &policy) const
 Creates single data or buffered storage for this type.
base::ChannelElementBase::shared_ptr buildChannelOutput (base::InputPortInterface &port) const
 Register a protocol for data transport over a network.
base::ChannelElementBase::shared_ptr buildChannelInput (base::OutputPortInterface &port) const
 Register a protocol for data transport over a network.
Type building/factory functions

Used to create objects that hold data of a certain type.

virtual base::AttributeBasebuildConstant (std::string name, base::DataSourceBase::shared_ptr, int sizehint) const
 Build a non modifyable instance of this type.
virtual base::AttributeBasebuildVariable (std::string name, int sizehint) const
 Build a modifyable instance of this type.
virtual bool resize (base::DataSourceBase::shared_ptr arg, int size) const
 Tries to resize a data source in case it's a resizable sequence.
virtual
base::DataSourceBase::shared_ptr 
construct (const std::vector< base::DataSourceBase::shared_ptr > &args) const
 Constructor syntax: construct a internal::DataSource which returns an instance of data depending on the given arguments.
virtual
base::DataSourceBase::shared_ptr 
convert (base::DataSourceBase::shared_ptr arg) const
 Automatic conversion: convert a internal::DataSource to this type.
virtual void addConstructor (TypeBuilder *tb)
 Add a constructor/convertor object.
Conversion to/from text

Used to convert data to human readable text and vice versa.

virtual std::string toString (base::DataSourceBase::shared_ptr in) const
 Usability function which converts data to a string.
virtual bool fromString (const std::string &value, base::DataSourceBase::shared_ptr out) const
 Usability function which converts a string to data.
Inspecting data structures.

Used to write a complex type to an external representation, like XML.

virtual std::vector< std::string > getMemberNames () const
 Returns the list of struct member names of this type.
virtual
base::DataSourceBase::shared_ptr 
getMember (base::DataSourceBase::shared_ptr item, const std::string &name) const
 Returns a member of a given data source struct identified by its name.
virtual
base::DataSourceBase::shared_ptr 
getMember (base::DataSourceBase::shared_ptr item, base::DataSourceBase::shared_ptr id) const
 Returns a member of a given data source struct identified by a data source id.
virtual
base::DataSourceBase::shared_ptr 
convertType (base::DataSourceBase::shared_ptr source) const
 Specialize this function to return an alternate type which represents this one in a compatible way.

Protected Types

typedef std::vector
< TypeBuilder * > 
Constructors
typedef std::vector
< TypeTransporter * > 
Transporters

Protected Attributes

const std::string tname
Constructors constructors
Transporters transporters

Distribution of objects

Used to transport data over a network.

typedef const std::type_info * TypeId
 Register a protocol for data transport over a network.
bool addProtocol (int protocol_id, TypeTransporter *tt)
 Register a protocol for data transport over a network.
TypeTransportergetProtocol (int protocol_id) const
 Returns this type's transport for a given protocol.
bool hasProtocol (int protocol_id) const
 Check if this type is transporable over a given protocol.
std::vector< int > getTransportNames () const
 Return a list of protocols that have transporters.
void migrateProtocols (TypeInfo *orig)
 Migrates all protocols present in orig to this type info object.

Detailed Description

template<typename T, bool use_ostream = false>
class RTT::types::PrimitiveTypeInfo< T, use_ostream >

This template class allows primitive types, which are not sent over ports, to be added to Orocos.

The type is known to the type system, but you can not use it in flow ports.

Parameters:
TThe user class type.
use_ostreamWhen set to true, the class will use operator<<(std::ostream&, T) to write out the type to a stream. When set to false, the class will use this function and write '( type name )' to a stream instead. Defaults to false. Set to true if your class T has the above mentioned function.
See also:
TypeInfoRepository.
operator<<
StructTypeInfo, SequenceTypeInfo, CArrayTypeInfo, BoostArrayTypeInfo

Definition at line 30 of file PrimitiveTypeInfo.hpp.


Constructor & Destructor Documentation

template<typename T, bool use_ostream = false>
RTT::types::PrimitiveTypeInfo< T, use_ostream >::PrimitiveTypeInfo ( std::string  name) [inline]

Setup Type Information for type name.

This causes a switch from 'unknown' type to basic type information for type T.

Parameters:
namethe 'Orocos' type name.

Definition at line 51 of file PrimitiveTypeInfo.hpp.


Member Function Documentation

template<typename T, bool use_ostream = false>
base::DataSourceBase::shared_ptr RTT::types::PrimitiveTypeInfo< T, use_ostream >::buildActionAlias ( base::ActionInterface action,
base::DataSourceBase::shared_ptr  source 
) const [inline, virtual]

Returns a DataSource that first executes an action and returns the result of another data source.

If source is an AssignableDataSource, an AssignableDataSource is returned of the same type, otherwise, a plain DataSource is returned.

Implements RTT::types::TypeInfo.

Definition at line 129 of file PrimitiveTypeInfo.hpp.

template<typename T, bool use_ostream = false>
base::AttributeBase* RTT::types::PrimitiveTypeInfo< T, use_ostream >::buildAlias ( std::string  name,
base::DataSourceBase::shared_ptr  b 
) const [inline, virtual]

build an alias with b as the value.

If b is of the wrong type, 0 will be returned..

Implements RTT::types::TypeInfo.

Definition at line 121 of file PrimitiveTypeInfo.hpp.

template<typename T, bool use_ostream = false>
base::AttributeBase* RTT::types::PrimitiveTypeInfo< T, use_ostream >::buildConstant ( std::string  name,
base::DataSourceBase::shared_ptr   
) const [inline, virtual]

Build a non modifyable instance of this type.

Parameters:
sizehintFor variable size instances, use it to hint the size of the instance.

Implements RTT::types::TypeInfo.

Definition at line 87 of file PrimitiveTypeInfo.hpp.

AttributeBase * RTT::TypeInfo::buildConstant ( std::string  name,
base::DataSourceBase::shared_ptr  dsb,
int  sizehint 
) const [virtual, inherited]

Build a non modifyable instance of this type.

Parameters:
sizehintFor variable size instances, use it to hint the size of the instance.

Definition at line 63 of file TypeInfo.cpp.

template<typename T, bool use_ostream = false>
base::ChannelElementBase::shared_ptr RTT::types::PrimitiveTypeInfo< T, use_ostream >::buildDataStorage ( ConnPolicy const &  policy) const [inline, virtual]
AttributeBase * RTT::TypeInfo::buildVariable ( std::string  name,
int  sizehint 
) const [virtual, inherited]

Build a modifyable instance of this type.

Parameters:
sizehintFor variable size instances, use it to hint the size of the instance.

Reimplemented in RTT::types::CArrayTypeInfo< T, has_ostream >.

Definition at line 59 of file TypeInfo.cpp.

template<typename T, bool use_ostream = false>
base::AttributeBase* RTT::types::PrimitiveTypeInfo< T, use_ostream >::buildVariable ( std::string  name) const [inline, virtual]

Build a non modifyable instance of this type.

Parameters:
sizehintFor variable size instances, use it to hint the size of the instance.

Implements RTT::types::TypeInfo.

Definition at line 100 of file PrimitiveTypeInfo.hpp.

template<typename T, bool use_ostream = false>
virtual bool RTT::types::PrimitiveTypeInfo< T, use_ostream >::composeType ( base::DataSourceBase::shared_ptr  source,
base::DataSourceBase::shared_ptr  target 
) const [inline, virtual]

Compose a type (target) from a DataSourceBase (source) containing its members.

The default behavior tries to assign source to target. If that fails, it tries to decompose target into its members and update the members of target with the contents of source.

The default implementation in TemplateTypeInfo works for most types, but can be overridden in case there are multiple versions/possibilities to make a target from a source. For example, in order to support legacy formats or in order to do the inverse of decomposeType().

Parameters:
sourceA data source of the same type as target OR a PropertyBag that contains the parts of target to be refreshed.
targetA data source of the same type as this TypeInfo object which contains the data to be updated from source.
Returns:
true if source could be updated, false otherwise.
See also:
types::propertyDecomposition and types::typeDecomposition for the inverse function, decomposing a type into datasources and hierarchical properties.
decomposeType to do the inverse operation.

Implements RTT::types::TypeInfo.

Reimplemented in RTT::types::CArrayTypeInfo< T, has_ostream >, RTT::types::BoostArrayTypeInfo< T, has_ostream >, RTT::types::TemplateTypeInfo< T, use_ostream >, RTT::types::TemplateTypeInfo< T, has_ostream >, RTT::types::TemplateTypeInfo< rt_string, has_ostream >, RTT::types::TemplateTypeInfo< std::vector< T >, has_ostream >, RTT::types::TemplateTypeInfo< std::string, has_ostream >, RTT::types::TemplateTypeInfo< T, true >, RTT::types::TemplateTypeInfo< bool >, RTT::types::TemplateTypeInfo< std::vector< double >, has_ostream >, RTT::types::TemplateTypeInfo< T, false >, RTT::types::EnumTypeInfo< T >, RTT::types::StdStringTypeInfo, RTT::types::RTStringTypeInfo, RTT::types::StdTypeInfo< T >, RTT::types::StdVectorTypeInfo, RTT::types::PrimitiveSequenceTypeInfo< T, has_ostream >, RTT::types::SequenceTypeInfo< T, has_ostream >, RTT::types::SequenceTypeInfo< rt_string, true >, RTT::types::SequenceTypeInfo< std::string, true >, RTT::types::SequenceTypeInfo< std::vector< double >, true >, RTT::types::SequenceTypeInfo< std::vector< T >, has_ostream >, and RTT::types::StdPrimitiveTypeInfo< T >.

Definition at line 190 of file PrimitiveTypeInfo.hpp.

DataSourceBase::shared_ptr RTT::TypeInfo::construct ( const std::vector< base::DataSourceBase::shared_ptr > &  args) const [virtual, inherited]

Constructor syntax: construct a internal::DataSource which returns an instance of data depending on the given arguments.

When args is empty, the default 'variable' is returned.

Reimplemented in RTT::types::EmptyTypeInfo.

Definition at line 79 of file TypeInfo.cpp.

References RTT::base::AttributeBase::getDataSource().

Automatic conversion: convert a internal::DataSource to this type.

For example, for converting float -> double. If no valid conversion was found, returns arg again, otherwise, a new data source.

Definition at line 110 of file TypeInfo.cpp.

Referenced by RTT::types::CArrayTypeInfo< T, has_ostream >::getMember(), RTT::internal::AssignableDataSource< T >::update(), and RTT::internal::AssignableDataSource< T >::updateAction().

Specialize this function to return an alternate type which represents this one in a compatible way.

For example, a short converts to an long or an enum to an int or a string.

Returns:
null if this type is not convertible to anything else.
Deprecated:
by decomposeType. We want to rename convertType to decomposeType. This function is left here for transitional purposes.

Definition at line 134 of file TypeInfo.cpp.

DataSourceBase::shared_ptr RTT::TypeInfo::getMember ( base::DataSourceBase::shared_ptr  item,
const std::string &  name 
) const [virtual, inherited]

Returns a member of a given data source struct identified by its name.

Parameters:
itemThe item of which to return a reference to a member
nameThe name of a member within item. Is a name of a member in case of a struct or an index number in case of a sequence.
Returns:
null if no such member exists, an assignable datasource referencing that member otherwise.

** Strong typed data **

for( set i = 0; i <=10; set i = i + 1) { value[i] = i; // sequence index, runtime structure value.i = i; // part name, browse static structure } set frame.pos = vector(a,b,c); // getMember("pos") set frame.pos[3] = vector(a,b,c); // getMember("pos")->getMember(3) set frame[3].pos = vector(a,b,c); // getMember(3)->getMember("pos") set frame[i].pos = vector(a,b,c); // getMember( $i )->getMember("pos") set frame["tool"].pos = vector(a,b,c); // getMember("tool") xx set frame[arg].pos = vector(a,b,c);// getMember( arg )->getMember("pos")

Reimplemented in RTT::types::CArrayTypeInfo< T, has_ostream >, RTT::types::BoostArrayTypeInfo< T, has_ostream >, and RTT::types::StructTypeInfo< T, has_ostream >.

Definition at line 230 of file TypeInfo.cpp.

Referenced by RTT::base::DataSourceBase::getMember().

Returns a member of a given data source struct identified by a data source id.

Parameters:
itemThe item of which to return a member
idOr a string data source containing the name of a member if item is a struct, Or an unsigned int data source containing the index of an element if item is a sequence

** Strong typed data **

for( set i = 0; i <=10; set i = i + 1) { value[i] = i; // sequence index, runtime structure value.i = i; // part name, browse static structure } set frame.pos = vector(a,b,c); // getMember("pos") set frame.pos[3] = vector(a,b,c); // getMember("pos")->getMember(3) set frame[3].pos = vector(a,b,c); // getMember(3)->getMember("pos") set frame[i].pos = vector(a,b,c); // getMember( $i )->getMember("pos") set frame["tool"].pos = vector(a,b,c); // getMember("tool") xx set frame[arg].pos = vector(a,b,c);// getMember( arg )->getMember("pos")

Reimplemented in RTT::types::CArrayTypeInfo< T, has_ostream >, and RTT::types::BoostArrayTypeInfo< T, has_ostream >.

Definition at line 252 of file TypeInfo.cpp.

vector< string > RTT::TypeInfo::getMemberNames ( ) const [virtual, inherited]

Returns the list of struct member names of this type.

In case this type is not a struct, returns an empty list.

Reimplemented in RTT::types::CArrayTypeInfo< T, has_ostream >, RTT::types::BoostArrayTypeInfo< T, has_ostream >, and RTT::types::StructTypeInfo< T, has_ostream >.

Definition at line 225 of file TypeInfo.cpp.

Referenced by RTT::base::DataSourceBase::getMemberNames().

TypeTransporter * RTT::TypeInfo::getProtocol ( int  protocol_id) const [inherited]
template<typename T, bool use_ostream = false>
bool RTT::types::PrimitiveTypeInfo< T, use_ostream >::installTypeInfoObject ( ) [inline, virtual]

Installs the type info object in the global data source type info handler.

This will be called by the TypeInfoRepository, prior to registering this type. If installation fails the TypeInfoRepository will delete this object, and all its associated constructors.

Return values:
trueinstallation succeeded. This object should not be deleted during the execution of the current process.
falseinstallation failed. This object is not used and may be deleted.

Implements RTT::types::TypeInfo.

Definition at line 62 of file PrimitiveTypeInfo.hpp.

void RTT::TypeInfo::migrateProtocols ( TypeInfo orig) [protected, inherited]

Migrates all protocols present in orig to this type info object.

It is meant as a helper when a type info object is replaced by a new instance.

Precondition:
This type has no transports registered yet, ie, it is newly constructed.

Definition at line 190 of file TypeInfo.cpp.

Referenced by RTT::types::PrimitiveTypeInfo< std::vector< T >, use_ostream >::installTypeInfoObject(), and RTT::types::TypeInfoName< T >::installTypeInfoObject().

template<typename T, bool use_ostream = false>
virtual std::istream& RTT::types::PrimitiveTypeInfo< T, use_ostream >::read ( std::istream &  os,
base::DataSourceBase::shared_ptr  out 
) const [inline, virtual]

Read a new value for this datasource from a human readable string.

The default does nothing.

Implements RTT::types::TypeInfo.

Reimplemented in RTT::types::BoolTypeInfo.

Definition at line 177 of file PrimitiveTypeInfo.hpp.

Referenced by RTT::types::PrimitiveTypeInfo< std::vector< T >, use_ostream >::read().

bool RTT::TypeInfo::resize ( base::DataSourceBase::shared_ptr  arg,
int  size 
) const [virtual, inherited]

Tries to resize a data source in case it's a resizable sequence.

Returns:
true if the resizing could be done, false otherwise.

Definition at line 139 of file TypeInfo.cpp.

template<typename T, bool use_ostream = false>
virtual std::ostream& RTT::types::PrimitiveTypeInfo< T, use_ostream >::write ( std::ostream &  os,
base::DataSourceBase::shared_ptr  in 
) const [inline, virtual]

Output this datasource as a human readable string.

The default just writes the type name in parentheses to os.

Implements RTT::types::TypeInfo.

Reimplemented in RTT::types::BoolTypeInfo.

Definition at line 163 of file PrimitiveTypeInfo.hpp.

Referenced by RTT::types::PrimitiveTypeInfo< std::vector< T >, use_ostream >::write().


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