Property Class Template Reference
[Property InterfaceTask Context Interface]

#include <rtt/Property.hpp>

Inheritance diagram for Property:

PropertyBase

List of all members.


Detailed Description

template<typename T>
class RTT::Property< T >

A property represents a named value of any type with a description.

A property is a tuple of a name, a description and a variable of any type. It's purpose is to provide an easy to manipulate parameter of an object by external entities. They can be grouped in PropertyBag objects and a Property can contain a PropertyBag itself.

If you do not provide a name nor description when constructing the Property object, it will be uninitialised and ready() will return false. Such an object may not be used (set(), get(),...) until it has been initialised from another Property. Otherwise, an exception (or assert) will be thrown.

Parameters:
T The type of the data contained within the Property.

Definition at line 78 of file Property.hpp.


Public Types

typedef
boost::remove_const
< typename
boost::remove_reference
< T >::type >::type 
value_t
 The types of this property type.
typedef
boost::call_traits
< value_t >
::param_type 
param_t
typedef
boost::call_traits
< value_t >
::reference 
reference_t
typedef
boost::call_traits
< value_t >
::const_reference 
const_reference_t
typedef value_t DataSourceType

Public Member Functions

 Property ()
 Create an empty Property with no name, no description and no value.
 Property (const std::string &name, const std::string &description, param_t value=value_t())
 The constructor which initializes the property's value.
 Property (const Property< T > &orig)
 Copy constructors copies the name, description and value as deep copies.
 Property (PropertyBase *source)
 Create a Property mirroring another PropertyBase.
 Property (const std::string &name, const std::string &description, typename AssignableDataSource< DataSourceType >::shared_ptr datasource)
 The constructor which initializes the property with a DataSource.
Property< T > & operator= (param_t value)
 Set the property's value.
Property< T > & operator= (PropertyBase *source)
 Construct a Property which mirrors a PropertyBase.
Property< T > & operator<<= (Property< T > &p)
 Update the value of this property with another property.
 operator value_t () const
 Get a copy of the value of the property.
DataSourceType get () const
 Get a copy of the value of the property.
reference_t set ()
 Access to the value of the Property.
void set (param_t v)
 Set the value of the Property.
reference_t value ()
 Access to the value of the Property.
const_reference_t rvalue () const
 Read-only (const&) access to the value of the Property.
virtual void identify (PropertyIntrospection *pi)
 A call on this method will lead to a call to the PropertyIntrospection interface identifying this Property's proper type.
virtual void identify (PropertyBagVisitor *pi)
 A call on this method will lead to a call to the PropertyBagIntrospection interface identifying this Property's proper type.
virtual bool update (const PropertyBase *other)
 Update the value of this Property with the value of an other Property.
virtual
CommandInterface
updateCommand (const PropertyBase *other)
 Generate a CommandInterface object which will update this Property with the value of another Property when execute()'ed.
virtual bool refresh (const PropertyBase *other)
 Refresh the value of this Property with the value of an other Property.
virtual
CommandInterface
refreshCommand (const PropertyBase *other)
 Generate a CommandInterface object which will refresh this Property with the value of another Property when execute()'ed.
virtual bool copy (const PropertyBase *other)
 Copy an other Property onto this property.
virtual
CommandInterface
copyCommand (const PropertyBase *other)
 Generate a CommandInterface object which will copy this Property with the value of another Property when execute()'ed.
bool copy (const Property< T > &orig)
 Copy the value, complete overwrite of this Property with orig.
bool update (const Property< T > &orig)
 Update the value, optionally also the description if current description is empty.
bool refresh (const Property< T > &orig)
 Refresh only the value from a Property.
virtual Property< T > * clone () const
 Deliver an identical clone of this PropertyBase.
virtual Property< T > * create () const
 Create a new default instance of the PropertyBase.
virtual
DataSourceBase::shared_ptr 
getDataSource () const
 Get a DataSource through which this PropertyBase can be manipulated.
AssignableDataSource
< DataSourceType >
::shared_ptr 
getAssignableDataSource () const
virtual std::string getType () const
 Returns the type of this PropertyBase.
virtual const TypeInfogetTypeInfo () const
 Returns the TypeInfo object of this Property.
template<>
bool update (const Property< PropertyBag > &orig)
template<>
bool refresh (const Property< PropertyBag > &orig)
template<>
bool copy (const Property< PropertyBag > &orig)
template<>
void identify (PropertyBagVisitor *pbi)
 A call on this method will lead to a call to the PropertyBagIntrospection interface identifying this Property's proper type.
template<>
bool update (const Property< PropertyBag > &orig)
template<>
bool refresh (const Property< PropertyBag > &orig)
template<>
bool copy (const Property< PropertyBag > &orig)
template<>
void identify (PropertyBagVisitor *pbi)
 A call on this method will lead to a call to the PropertyBagIntrospection interface identifying this Property's proper type.
const std::string & getName () const
 Get the name of the property.
void setName (const std::string &name)
 Set the name of the property.
const std::string & getDescription () const
 Get a description of the property.
void setDescription (const std::string &desc)
 Set the description of the property.
bool ready () const
 Inspect if this Property is correctly initialised and ready for usage.

Static Public Member Functions

static Property< T > * narrow (PropertyBase *prop)
 Use this method instead of dynamic_cast<> to cast from PropertyBase to Property<T>.

Protected Attributes

AssignableDataSource
< DataSourceType >
::shared_ptr 
_value
std::string _name
 A short name for this PropertyBase.
std::string _description
 A lengthy description for this PropertyBase.

Member Typedef Documentation

typedef boost::remove_const<typename boost::remove_reference<T>::type>::type value_t

The types of this property type.

value_t is always the 'bare' value type of T. From this type, we derive the other (param, ref, ...) types.

Definition at line 87 of file Property.hpp.


Constructor & Destructor Documentation

Property (  )  [inline]

Create an empty Property with no name, no description and no value.

Postcondition:
ready() will return false. Initialise this Property with another Property object.

Definition at line 97 of file Property.hpp.

Property ( const std::string &  name,
const std::string &  description,
param_t  value = value_t() 
) [inline]

The constructor which initializes the property's value.

Parameters:
name The name which will be used to refer to the property.
description The description of the property.
value The initial value of the property (optional).
Postcondition:
ready() will always be true.

Definition at line 108 of file Property.hpp.

Property ( const Property< T > &  orig  )  [inline]

Copy constructors copies the name, description and value as deep copies.

Postcondition:
ready() will be true if orig.ready() is true.

Definition at line 118 of file Property.hpp.

Property ( PropertyBase source  )  [inline]

Create a Property mirroring another PropertyBase.

It copies the name and description, and shallow copies the value.

See also:
ready() to inspect if the creation succeeded.

Definition at line 129 of file Property.hpp.

Property ( const std::string &  name,
const std::string &  description,
typename AssignableDataSource< DataSourceType >::shared_ptr  datasource 
) [inline]

The constructor which initializes the property with a DataSource.

Parameters:
name The name which will be used to refer to the property.
description The description of the property.
datasource A new data source to be acquired by this property for storing its data.
Postcondition:
ready() will be true if datasource is a valid pointer.

Definition at line 144 of file Property.hpp.


Member Function Documentation

Property<T>& operator= ( param_t  value  )  [inline]

Set the property's value.

Parameters:
value The value to be set.
Returns:
A reference to newly set property value.

Definition at line 154 of file Property.hpp.

Property<T>& operator= ( PropertyBase source  )  [inline]

Construct a Property which mirrors a PropertyBase.

Parameters:
source A pointer to the property to mirror.

Definition at line 164 of file Property.hpp.

operator value_t (  )  const [inline]

Get a copy of the value of the property.

Returns:
A copy of the value of the property.

Definition at line 197 of file Property.hpp.

DataSourceType get (  )  const [inline]

Get a copy of the value of the property.

Returns:
The value of the property.

Definition at line 206 of file Property.hpp.

Referenced by RTT::composeProperty(), Property< bool >::copy(), RTT::decomposeProperty(), ConditionBoolProperty::evaluate(), PropertyBagIntrospector::introspect(), XMLMarshaller::introspect(), Orocos1Marshaller::introspect(), XMLRPCMarshaller::serialize(), TableHeaderMarshaller::serialize(), and Property< bool >::update().

reference_t set (  )  [inline]

Access to the value of the Property.

Identical to value().

Warning:
This function is not suitable for remote (distributed) access of properties, use operator=() or set( param_t v ) to assign a value.

Definition at line 217 of file Property.hpp.

reference_t value (  )  [inline]

Access to the value of the Property.

Identical to set().

Warning:
This function is not suitable for remote (distributed) access of properties, use operator=() or set( param_t v ) to assign a value.

Definition at line 237 of file Property.hpp.

Referenced by RTT::deletePropertyBag(), RTT::flattenPropertyBag(), PropertyBagIntrospector::introspect(), INIMarshaller::introspect(), RTT::refreshProperty(), TableMarshaller::serialize(), Tiny2CPFHandler::startElement(), and RTT::updateProperty().

Property< T > * narrow ( PropertyBase prop  )  [inline, static]

Use this method instead of dynamic_cast<> to cast from PropertyBase to Property<T>.

You need to delete the returned property if it is no longer needed.

Parameters:
T The Desired property type, for example 'double'.
prop The property to narrow to Property<T>.
Returns:
Null if prop is not convertible to type Property<T>, a new Property<T> instance otherwise.

Definition at line 409 of file Property.hpp.

References Property::clone(), and PropertyBase::getDataSource().

virtual bool update ( const PropertyBase other  )  [inline, virtual]

Update the value of this Property with the value of an other Property.

Update does a full update of the value, adding extra information if necessary, or in case of a Property<PropertyBag> adding missing Properties.

Returns:
false if the Properties are of different type.

Implements PropertyBase.

Definition at line 265 of file Property.hpp.

virtual CommandInterface* updateCommand ( const PropertyBase other  )  [inline, virtual]

Generate a CommandInterface object which will update this Property with the value of another Property when execute()'ed.

Returns:
zero if the Property types do not match
Todo:
: check if this method is necessary/used.

Implements PropertyBase.

Definition at line 274 of file Property.hpp.

virtual bool refresh ( const PropertyBase other  )  [inline, virtual]

Refresh the value of this Property with the value of an other Property.

Refresh does only the minimal update of the value, not adding extra information, or in case of a Property<PropertyBag> not adding extra Properties.

Returns:
false if the Properties are of different type.

Implements PropertyBase.

Definition at line 283 of file Property.hpp.

virtual CommandInterface* refreshCommand ( const PropertyBase other  )  [inline, virtual]

Generate a CommandInterface object which will refresh this Property with the value of another Property when execute()'ed.

The resulting Command is real-time.

Returns:
zero if the Property types do not match

Implements PropertyBase.

Definition at line 292 of file Property.hpp.

virtual bool copy ( const PropertyBase other  )  [inline, virtual]

Copy an other Property onto this property.

Update does a full update of the name, description and value, adding extra information if necessary, or in case of a Property<PropertyBag> adding all Properties.

Returns:
false if the Properties are of different type.

Implements PropertyBase.

Definition at line 301 of file Property.hpp.

virtual CommandInterface* copyCommand ( const PropertyBase other  )  [inline, virtual]

Generate a CommandInterface object which will copy this Property with the value of another Property when execute()'ed.

Returns:
zero if the Property types do not match

Implements PropertyBase.

Definition at line 310 of file Property.hpp.

bool refresh ( const Property< T > &  orig  )  [inline]

Refresh only the value from a Property.

This is a real-time operation.

Definition at line 349 of file Property.hpp.

virtual Property<T>* clone (  )  const [inline, virtual]

Deliver an identical clone of this PropertyBase.

The original may be deleted and the clone can be transparantly used in its place or vice versa.

Implements PropertyBase.

Definition at line 357 of file Property.hpp.

Referenced by Property::narrow().

virtual Property<T>* create (  )  const [inline, virtual]

Create a new default instance of the PropertyBase.

This is a factory method to 'make something of the same type'. The new PropertyBase has the same name and description as this.

Implements PropertyBase.

Definition at line 362 of file Property.hpp.

virtual std::string getType (  )  const [inline, virtual]

Returns the type of this PropertyBase.

Uses the naming scheme of DataSourceTypeInfo.

Implements PropertyBase.

Definition at line 375 of file Property.hpp.

const std::string& getName (  )  const [inline, inherited]

Get the name of the property.

Returns:
name of the property.

Definition at line 87 of file PropertyBase.hpp.

References PropertyBase::_name.

Referenced by AttributeRepository::addProperty(), RTT::composeProperty(), Property< bool >::copy(), Property::copy(), RTT::flattenPropertyBag(), PropertyBagIntrospector::introspect(), XMLMarshaller::introspect(), Orocos1Marshaller::introspect(), INIMarshaller::introspect(), PropertyIntrospection::introspect_T(), PropertyBag::FindProp::operator()(), Property< bool >::operator=(), RTT::refreshProperties(), RTT::refreshProperty(), AttributeRepository::removeProperty(), XMLRPCMarshaller::serialize(), TableMarshaller::serialize(), TableHeaderMarshaller::serialize(), ConditionBoolProperty::toString(), and RTT::updateProperty().

void setName ( const std::string &  name  )  [inherited]

Set the name of the property.

Parameters:
name The name of the property.

Definition at line 55 of file PropertyBase.cpp.

References PropertyBase::_name.

const std::string& getDescription (  )  const [inline, inherited]

Get a description of the property.

Returns:
description of the property.

Definition at line 99 of file PropertyBase.hpp.

References PropertyBase::_description.

Referenced by Property< bool >::copy(), Property::copy(), PropertyBagIntrospector::introspect(), XMLMarshaller::introspect(), PropertyIntrospection::introspect_T(), Property< bool >::operator=(), Property< bool >::update(), and Property::update().

void setDescription ( const std::string &  desc  )  [inherited]

Set the description of the property.

Parameters:
desc The description of the property.

Definition at line 60 of file PropertyBase.cpp.

References PropertyBase::_description.

bool ready (  )  const [inline, inherited]

Inspect if this Property is correctly initialised and ready for usage.

A Property may only be used when ready() returns true, otherwise, an exception is thrown.

Definition at line 113 of file PropertyBase.hpp.

References PropertyBase::getDataSource().

Referenced by PropertyBag::addProperty(), Property::copy(), Property::refresh(), and Property::update().


The documentation for this class was generated from the following file:
Generated on Tue Mar 25 17:41:57 2008 for OrocosReal-TimeToolkit by  doxygen 1.5.3