#include <TypeInfo.hpp>
A class for representing a user type, and which can build instances of that type. Once you get hold of a TypeInfo object pointer, this pointer will be valid during the whole lifetime of the process.
Definition at line 66 of file TypeInfo.hpp.
typedef std::vector<TypeConstructor*> RTT::types::TypeInfo::Constructors [protected] |
Definition at line 475 of file TypeInfo.hpp.
typedef std::vector<TypeTransporter*> RTT::types::TypeInfo::Transporters [protected] |
Definition at line 476 of file TypeInfo.hpp.
typedef const std::type_info* RTT::types::TypeInfo::TypeId |
Definition at line 69 of file TypeInfo.hpp.
RTT::types::TypeInfo::TypeInfo | ( | const std::string & | name | ) | [inline] |
Definition at line 71 of file TypeInfo.hpp.
Definition at line 56 of file TypeInfo.cpp.
void RTT::TypeInfo::addAlias | ( | const std::string & | alias | ) |
Adds an alias to the this type.
alias | an alternative name for this type which will be returned in getTypeNames() |
Definition at line 72 of file TypeInfo.cpp.
void RTT::TypeInfo::addConstructor | ( | TypeConstructor * | tb | ) |
Add a constructor/convertor object.
Definition at line 114 of file TypeInfo.cpp.
bool RTT::TypeInfo::addProtocol | ( | int | protocol_id, |
TypeTransporter * | tt | ||
) |
Register a protocol for data transport over a network.
Definition at line 136 of file TypeInfo.cpp.
base::DataSourceBase::shared_ptr RTT::types::TypeInfo::buildActionAlias | ( | base::ActionInterface * | action, |
base::DataSourceBase::shared_ptr | source | ||
) | const [inline] |
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.
Definition at line 247 of file TypeInfo.hpp.
base::AttributeBase* RTT::types::TypeInfo::buildAlias | ( | std::string | name, |
base::DataSourceBase::shared_ptr | b | ||
) | const [inline] |
build an alias with b as the value. If b is of the wrong type, 0 will be returned..
Definition at line 205 of file TypeInfo.hpp.
base::AttributeBase* RTT::types::TypeInfo::buildAttribute | ( | std::string | name, |
base::DataSourceBase::shared_ptr | source = 0 |
||
) | const [inline] |
Build an Attribute of this type.
Definition at line 221 of file TypeInfo.hpp.
base::ChannelElementBase::shared_ptr RTT::TypeInfo::buildChannelInput | ( | base::OutputPortInterface & | port | ) | const |
Definition at line 214 of file TypeInfo.cpp.
base::ChannelElementBase::shared_ptr RTT::TypeInfo::buildChannelOutput | ( | base::InputPortInterface & | port | ) | const |
Definition at line 210 of file TypeInfo.cpp.
base::AttributeBase* RTT::types::TypeInfo::buildConstant | ( | std::string | name, |
base::DataSourceBase::shared_ptr | source, | ||
int | sizehint | ||
) | const [inline] |
Build a non modifyable instance of this type.
sizehint | For variable size instances, use it to hint the size of the instance. |
Definition at line 172 of file TypeInfo.hpp.
base::AttributeBase* RTT::types::TypeInfo::buildConstant | ( | std::string | name, |
base::DataSourceBase::shared_ptr | source | ||
) | const [inline] |
Definition at line 177 of file TypeInfo.hpp.
base::ChannelElementBase::shared_ptr RTT::TypeInfo::buildDataStorage | ( | ConnPolicy const & | policy | ) | const |
Creates single data or buffered storage for this type.
policy | Describes the kind of storage requested by the user |
Definition at line 206 of file TypeInfo.cpp.
base::PropertyBase* RTT::types::TypeInfo::buildProperty | ( | const std::string & | name, |
const std::string & | desc, | ||
base::DataSourceBase::shared_ptr | source = 0 |
||
) | const [inline] |
Build a Property of this type.
Definition at line 213 of file TypeInfo.hpp.
base::DataSourceBase::shared_ptr RTT::types::TypeInfo::buildReference | ( | void * | ptr | ) | const [inline] |
Build a internal::ReferenceDataSource of this type, pointing to the given pointer
Definition at line 237 of file TypeInfo.hpp.
base::DataSourceBase::shared_ptr RTT::types::TypeInfo::buildValue | ( | ) | const [inline] |
Build a internal::ValueDataSource of this type.
Definition at line 229 of file TypeInfo.hpp.
base::AttributeBase * RTT::TypeInfo::buildVariable | ( | std::string | name, |
int | sizehint | ||
) | const |
Build a modifyable instance of this type.
sizehint | For variable size instances, use it to hint the size of the instance. |
Definition at line 82 of file TypeInfo.cpp.
base::AttributeBase* RTT::types::TypeInfo::buildVariable | ( | std::string | name | ) | const [inline] |
Definition at line 187 of file TypeInfo.hpp.
bool RTT::types::TypeInfo::composeType | ( | base::DataSourceBase::shared_ptr | source, |
base::DataSourceBase::shared_ptr | target | ||
) | const [inline] |
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().
source | A data source of the same type as target OR a PropertyBag that contains the parts of target to be refreshed. |
target | A data source of the same type as this TypeInfo object which contains the data to be updated from source. |
Definition at line 385 of file TypeInfo.hpp.
DataSourceBase::shared_ptr RTT::TypeInfo::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. When args is empty, the default 'variable' is returned.
Definition at line 87 of file TypeInfo.cpp.
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 118 of file TypeInfo.cpp.
base::DataSourceBase::shared_ptr RTT::types::TypeInfo::convertType | ( | base::DataSourceBase::shared_ptr | source | ) | const [inline] |
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.
Definition at line 413 of file TypeInfo.hpp.
base::DataSourceBase::shared_ptr RTT::types::TypeInfo::decomposeType | ( | base::DataSourceBase::shared_ptr | source | ) | const [inline] |
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. If your return a datasource containing a property bag, then this function should do the inverse of composeType: the returned property bag contains all parts of the current type (source) which can be modified and merged back into this type with composeType. Mathematically: composeType( decomposeType( A ), B); assert( A == B );
Definition at line 401 of file TypeInfo.hpp.
bool RTT::types::TypeInfo::fromString | ( | const std::string & | value, |
base::DataSourceBase::shared_ptr | out | ||
) | const [inline] |
Usability function which converts a string to data.
Definition at line 298 of file TypeInfo.hpp.
CompositionFactoryPtr RTT::types::TypeInfo::getCompositionFactory | ( | ) | const [inline] |
Definition at line 469 of file TypeInfo.hpp.
base::DataSourceBase::shared_ptr RTT::types::TypeInfo::getMember | ( | base::DataSourceBase::shared_ptr | item, |
const std::string & | name | ||
) | const [inline] |
Returns a member of a given data source struct identified by its name.
item | The item of which to return a reference to a member |
name | The 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. |
Definition at line 335 of file TypeInfo.hpp.
bool RTT::types::TypeInfo::getMember | ( | internal::Reference * | ref, |
base::DataSourceBase::shared_ptr | item, | ||
const std::string & | name | ||
) | const [inline] |
Stores a reference to a member of a struct identified by its name. This method does not allocate memory when item is assignable..
ref | The reference object in which to store the reference. |
item | The item of which to return a reference to a member. It must be assignable, otherwise, a reference to a copy of item will be returned. This copy will allocate memory. |
name | The name of a member within item. |
Definition at line 349 of file TypeInfo.hpp.
base::DataSourceBase::shared_ptr RTT::types::TypeInfo::getMember | ( | base::DataSourceBase::shared_ptr | item, |
base::DataSourceBase::shared_ptr | id | ||
) | const [inline] |
Returns a reference to a member of a given data source struct identified by its name.
item | The item of which to return a reference to a member |
name | The 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. |
Definition at line 361 of file TypeInfo.hpp.
MemberFactoryPtr RTT::types::TypeInfo::getMemberFactory | ( | ) | const [inline] |
Definition at line 461 of file TypeInfo.hpp.
std::vector<std::string> RTT::types::TypeInfo::getMemberNames | ( | ) | const [inline] |
Returns the list of struct member names of this type. In case this type is not a struct, returns an empty list.
Definition at line 323 of file TypeInfo.hpp.
ConnFactoryPtr RTT::types::TypeInfo::getPortFactory | ( | ) | const [inline] |
Definition at line 457 of file TypeInfo.hpp.
TypeTransporter * RTT::TypeInfo::getProtocol | ( | int | protocol_id | ) | const |
Returns this type's transport for a given protocol. Will print a warning when returning null. Use hasProtocol() to query without warning.
Definition at line 149 of file TypeInfo.cpp.
StreamFactoryPtr RTT::types::TypeInfo::getStreamFactory | ( | ) | const [inline] |
Definition at line 473 of file TypeInfo.hpp.
std::vector< int > RTT::TypeInfo::getTransportNames | ( | ) | const |
Return a list of protocols that have transporters
Definition at line 179 of file TypeInfo.cpp.
TypeId RTT::types::TypeInfo::getTypeId | ( | ) | const [inline] |
Returns the compiler generated type id pointer.
Definition at line 107 of file TypeInfo.hpp.
const char* RTT::types::TypeInfo::getTypeIdName | ( | ) | const [inline] |
Returns the compiler generated type name (non portable accross compilers!).
Definition at line 112 of file TypeInfo.hpp.
const std::string& RTT::types::TypeInfo::getTypeName | ( | ) | const [inline] |
Return the type name which was first registered. Do not rely on this function to return always the same string, as type loading order changes may return different names. Use getTypeNames() to get all aliases as well or getTypeIdName() to return the compiler generated C++ type name (non-portable accross compilers).
Definition at line 82 of file TypeInfo.hpp.
std::vector< std::string > RTT::TypeInfo::getTypeNames | ( | ) | const |
Returns all registered names and aliases of this type.
Definition at line 67 of file TypeInfo.cpp.
ValueFactoryPtr RTT::types::TypeInfo::getValueFactory | ( | ) | const [inline] |
Definition at line 465 of file TypeInfo.hpp.
bool RTT::TypeInfo::hasProtocol | ( | int | protocol_id | ) | const |
Check if this type is transporable over a given protocol.
Definition at line 167 of file TypeInfo.cpp.
base::InputPortInterface * RTT::TypeInfo::inputPort | ( | std::string const & | name | ) | const |
Returns a new InputPort<T> object where T is the type represented by this TypeInfo object.
Definition at line 196 of file TypeInfo.cpp.
bool RTT::types::TypeInfo::isStreamable | ( | ) | const [inline] |
Returns true if this type is directly streamable using read()/write() or toString()/fromString().
Definition at line 307 of file TypeInfo.hpp.
bool RTT::TypeInfo::isType | ( | const std::string & | name | ) |
Returns true if this type is known by the type system under the given name.
type_name | the name to query for |
Definition at line 78 of file TypeInfo.cpp.
base::OutputPortInterface * RTT::TypeInfo::outputPort | ( | std::string const & | name | ) | const |
Returns a new OutputPort<T> object where T is the type represented by this TypeInfo object.
Definition at line 201 of file TypeInfo.cpp.
std::istream& RTT::types::TypeInfo::read | ( | std::istream & | os, |
base::DataSourceBase::shared_ptr | out | ||
) | const [inline] |
Read a new value for this datasource from a human readable string. The default does nothing.
Definition at line 281 of file TypeInfo.hpp.
bool RTT::types::TypeInfo::resize | ( | base::DataSourceBase::shared_ptr | arg, |
int | size | ||
) | const [inline] |
Tries to resize a data source in case it's a resizable sequence.
Definition at line 196 of file TypeInfo.hpp.
void RTT::types::TypeInfo::setCompositionFactory | ( | CompositionFactoryPtr | cf | ) | [inline] |
Definition at line 467 of file TypeInfo.hpp.
void RTT::types::TypeInfo::setMemberFactory | ( | MemberFactoryPtr | mf | ) | [inline] |
Definition at line 459 of file TypeInfo.hpp.
void RTT::types::TypeInfo::setPortFactory | ( | ConnFactoryPtr | cf | ) | [inline] |
Installs a new port factory such that in-process data can be communicated between components.
Definition at line 455 of file TypeInfo.hpp.
void RTT::types::TypeInfo::setStreamFactory | ( | StreamFactoryPtr | sf | ) | [inline] |
Definition at line 471 of file TypeInfo.hpp.
void RTT::types::TypeInfo::setTypeId | ( | TypeId | tid | ) | [inline] |
Definition at line 446 of file TypeInfo.hpp.
void RTT::types::TypeInfo::setValueFactory | ( | ValueFactoryPtr | dsf | ) | [inline] |
Definition at line 463 of file TypeInfo.hpp.
std::string RTT::types::TypeInfo::toString | ( | base::DataSourceBase::shared_ptr | in | ) | const [inline] |
Usability function which converts data to a string.
Definition at line 290 of file TypeInfo.hpp.
std::ostream& RTT::types::TypeInfo::write | ( | std::ostream & | os, |
base::DataSourceBase::shared_ptr | in | ||
) | const [inline] |
Output this datasource as a human readable string. The default just writes the type name in parentheses to os.
Definition at line 264 of file TypeInfo.hpp.
Constructors RTT::types::TypeInfo::constructors [protected] |
Definition at line 477 of file TypeInfo.hpp.
boost::shared_ptr<CompositionFactory> RTT::types::TypeInfo::mcompf [protected] |
Definition at line 485 of file TypeInfo.hpp.
boost::shared_ptr<internal::ConnFactory> RTT::types::TypeInfo::mconnf [protected] |
Definition at line 482 of file TypeInfo.hpp.
boost::shared_ptr<ValueFactory> RTT::types::TypeInfo::mdsf [protected] |
Definition at line 484 of file TypeInfo.hpp.
boost::shared_ptr<MemberFactory> RTT::types::TypeInfo::mmembf [protected] |
Definition at line 483 of file TypeInfo.hpp.
boost::shared_ptr<StreamFactory> RTT::types::TypeInfo::mstrf [protected] |
Definition at line 486 of file TypeInfo.hpp.
TypeId RTT::types::TypeInfo::mtid [protected] |
Definition at line 481 of file TypeInfo.hpp.
const char* RTT::types::TypeInfo::mtid_name [protected] |
Definition at line 480 of file TypeInfo.hpp.
std::vector<std::string> RTT::types::TypeInfo::mtypenames [protected] |
Definition at line 479 of file TypeInfo.hpp.
Transporters RTT::types::TypeInfo::transporters [protected] |
Definition at line 478 of file TypeInfo.hpp.