Orocos Real-Time Toolkit  2.9.0
Classes | Public Types | Public Member Functions | Protected Attributes | List of all members
RTT::PropertyBag Class Reference

A container for holding references to properties. More...

#include <rtt/PropertyBag.hpp>

Classes

struct  FindPropType
 A function object for finding a Property by name and type. More...
 

Public Types

typedef std::vector< base::PropertyBase * > Properties
 The container in which the properties are stored. More...
 
typedef Properties PropertyContainerType
 Deprecated, use Properties. More...
 
typedef Properties::iterator iterator
 An iterator over the Properties. More...
 
typedef Properties::const_iterator const_iterator
 A const iterator over the Properties. More...
 
typedef std::vector< std::string > Names
 The container to hold names of Properties. More...
 

Public Member Functions

 PropertyBag ()
 The default constructor. More...
 
 PropertyBag (const std::string &_type)
 The typed constructor. More...
 
 PropertyBag (const PropertyBag &orig)
 The copy constructor. More...
 
 ~PropertyBag ()
 Destroy this object and destroy all owned properties. More...
 
void add (base::PropertyBase *p)
 Add a valid property to the container. More...
 
void remove (base::PropertyBase *p)
 Remove a property from the container. More...
 
template<class T >
Property< T > & addProperty (const std::string &name, T &attr)
 Adds a variable of any type as a property to this bag. More...
 
bool addProperty (base::PropertyBase &p)
 Add a valid property to the container. More...
 
bool removeProperty (base::PropertyBase *p)
 Remove a property from the container. More...
 
bool ownProperty (base::PropertyBase *p)
 Set a property to be owned by this bag. More...
 
bool ownsProperty (base::PropertyBase *p) const
 Returns true if this property is owned by this Bag. More...
 
void clear ()
 Removes all PropertyBases from this bag, without deleting them. More...
 
void list (Names &names) const
 List the names of all properties. More...
 
Names list () const
 List the names of all properties. More...
 
bool empty () const
 Return true if no properties are present in this bag. More...
 
base::PropertyBasegetProperty (const std::string &name) const
 Get a Property with name name. More...
 
template<class T >
Property< T > * getPropertyType (const std::string &name) const
 Get the first Property with name name of a given type T. More...
 
base::PropertyBasegetItem (int i) const
 Returns the i'th Property, starting from 0. More...
 
size_t size () const
 Get the number of Properties in this bag. More...
 
void identify (base::PropertyIntrospection *pi) const
 Identify the contents of this bag through introspection. More...
 
void identify (base::PropertyBagVisitor *pi) const
 Identify the contents of this bag through introspection. More...
 
base::PropertyBasefind (const std::string &name) const
 Find the base::PropertyBase with name name. More...
 
template<class T >
base::PropertyBasefindValue (const T &value) const
 Finds the base::PropertyBase by value. More...
 
PropertyBagoperator= (const PropertyBag &orig)
 This assignment assigns all PropertyBases of another bag in this bag, making an exact copy or the original. More...
 
PropertyBagoperator<<= (const PropertyBag &source)
 The update operator. More...
 
PropertyBagoperator<< (base::PropertyBase *item)
 The 'add' operator. More...
 
const std::string & getType () const
 
void setType (const std::string &newtype)
 
PropertiesgetProperties ()
 Returns a list of all the property objects in this bag. More...
 
const PropertiesgetProperties () const
 Returns a list of all the property objects in this bag. More...
 
Properties getProperties (const std::string &name) const
 Returns a list of all property objects with the name name. More...
 
Names getPropertyNames () const
 Returns a list of all the names of the properties in this bag. More...
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 

Protected Attributes

Properties mproperties
 
Properties mowned_props
 
std::string type
 

Detailed Description

A container for holding references to properties.

Introduction

This class groups properties of different types into a single container. A PropertyBag object can handed to a marsh::Marshaller object which will serialize the contents of the PropertyBag.

All operations on a PropertyBag are non recursive. The PropertyBag itself is not aware of the possible hierarchical structure. You need to use the global scope functions for handling hierarchical structures.

A PropertyBag is not the owner of the properties within. It defines a group of properties, nothing more. When this group of properties contains another PropertyBag, this bag is considered as a 'pointer' to other properties. Even such a bag is not owned by the PropertyBag.

Constructing PropertyBags

It can happen in an application that a PropertyBag is filled with dynamically created Property objects. The bag is not responsible for cleaning up these objects once they are no longer needed. The application which uses the PropertyBag has to find a way of deleting the possible dangling pointers.

Warning
The elements in a PropertyBag are unordered. Operations on the bag may change the relative order of the elements.

Using PropertyBags

To add a Property<ClassT> prop to a PropertyBag bag, use

bag.add(&prop).

To retrieve this property, either use find or getProperty to retrieve a Property by name :

base::PropertyBase* pb = bag.find( "name" ).
Property<ClassT> pb = bag.getProperty( "name" ).

Both will return null if no such property exists.

See also
base::PropertyBase, Property, Recursive Property Bag Operations.

Definition at line 96 of file PropertyBag.hpp.

Member Typedef Documentation

typedef Properties::const_iterator RTT::PropertyBag::const_iterator

A const iterator over the Properties.

Definition at line 114 of file PropertyBag.hpp.

typedef Properties::iterator RTT::PropertyBag::iterator

An iterator over the Properties.

Definition at line 110 of file PropertyBag.hpp.

typedef std::vector<std::string> RTT::PropertyBag::Names

The container to hold names of Properties.

Definition at line 119 of file PropertyBag.hpp.

The container in which the properties are stored.

Definition at line 102 of file PropertyBag.hpp.

Deprecated, use Properties.

Definition at line 106 of file PropertyBag.hpp.

Constructor & Destructor Documentation

RTT::PropertyBag::PropertyBag ( )

The default constructor.

Definition at line 54 of file PropertyBag.cpp.

RTT::PropertyBag::PropertyBag ( const std::string &  _type)

The typed constructor.

Parameters
typeThe type of PropertyBag.

Definition at line 58 of file PropertyBag.cpp.

RTT::PropertyBag::PropertyBag ( const PropertyBag orig)

The copy constructor.

The copy constructor of the PropertyBag makes non-deep copies of its elements.

Definition at line 62 of file PropertyBag.cpp.

RTT::PropertyBag::~PropertyBag ( )

Destroy this object and destroy all owned properties.

Definition at line 68 of file PropertyBag.cpp.

References clear().

Member Function Documentation

void RTT::PropertyBag::add ( base::PropertyBase p)

Add a valid property to the container.

Analogous to addProperty.

Parameters
pPointer to the property to be added.

Definition at line 73 of file PropertyBag.cpp.

References addProperty().

Referenced by RTT::flattenPropertyBag(), RTT::marsh::PropertyBagIntrospector::introspect(), operator<<=(), operator=(), and RTT::types::typeDecomposition().

template<class T >
Property<T>& RTT::PropertyBag::addProperty ( const std::string &  name,
T &  attr 
)
inline

Adds a variable of any type as a property to this bag.

A Property is created which causes contents of the property always to be in sync with the contents of attr.

Parameters
nameThe name of this property
attrThe variable that will be aliased.
Returns
the Property object by reference, which you can further query or document.

Definition at line 166 of file PropertyBag.hpp.

References RTT::removeProperty().

Referenced by add().

bool RTT::PropertyBag::addProperty ( base::PropertyBase p)

Add a valid property to the container.

Parameters
pPointer to the property to be added.
Returns
false if !p || !p->ready(), true otherwise.

Definition at line 105 of file PropertyBag.cpp.

References mproperties, and RTT::base::PropertyBase::ready().

iterator RTT::PropertyBag::begin ( )
inline
const_iterator RTT::PropertyBag::begin ( ) const
inline

Definition at line 354 of file PropertyBag.hpp.

void RTT::PropertyBag::clear ( )

Removes all PropertyBases from this bag, without deleting them.

This is a not recursive function.

Definition at line 132 of file PropertyBag.cpp.

References mowned_props, and mproperties.

Referenced by RTT::deleteProperties(), RTT::deletePropertyBag(), operator=(), and ~PropertyBag().

bool RTT::PropertyBag::empty ( ) const
inline

Return true if no properties are present in this bag.

Definition at line 219 of file PropertyBag.hpp.

Referenced by RTT::types::composePropertyBag(), RTT::types::decomposePropertyBag(), and RTT::types::typeDecomposition().

iterator RTT::PropertyBag::end ( )
inline
const_iterator RTT::PropertyBag::end ( ) const
inline

Definition at line 356 of file PropertyBag.hpp.

PropertyBase * RTT::PropertyBag::find ( const std::string &  name) const

Find the base::PropertyBase with name name.

This function returns the first match.

Parameters
nameThe name of the property to search for.
Returns
The base::PropertyBase with this name, zero if it does not exist.

Definition at line 210 of file PropertyBag.cpp.

References mproperties.

Referenced by RTT::extras::composeProperty(), RTT::findProperty(), operator<<=(), RTT::refreshProperties(), RTT::refreshProperty(), RTT::removeProperty(), RTT::scripting::PropertyParser::reset(), RTT::storeProperty(), RTT::updateProperty(), and RTT::scripting::ValueParser::ValueParser().

template<class T >
base::PropertyBase* RTT::PropertyBag::findValue ( const T &  value) const
inline

Finds the base::PropertyBase by value.

This function returns the first match.

Parameters
valueThe value the Property should have
TThe data type of the value.
Returns
a pointer to the property or zero if not found.

Definition at line 295 of file PropertyBag.hpp.

References RTT::base::PropertyBase::ready(), and RTT::Property< T >::value().

base::PropertyBase* RTT::PropertyBag::getItem ( int  i) const
inline

Returns the i'th Property, starting from 0.

Returns
zero if i is out of range.

Definition at line 254 of file PropertyBag.hpp.

Referenced by RTT::types::composeTemplateProperty(), RTT::operator<<(), and RTT::refreshProperties().

Properties& RTT::PropertyBag::getProperties ( )
inline
const Properties& RTT::PropertyBag::getProperties ( ) const
inline

Returns a list of all the property objects in this bag.

Definition at line 341 of file PropertyBag.hpp.

PropertyBag::Properties RTT::PropertyBag::getProperties ( const std::string &  name) const

Returns a list of all property objects with the name name.

Definition at line 166 of file PropertyBag.cpp.

References mproperties.

base::PropertyBase * RTT::PropertyBag::getProperty ( const std::string &  name) const

Get a Property with name name.

Parameters
nameThe name of the property to search for.
Returns
The PropertyBase with this name, zero if it does not exist.

Definition at line 218 of file PropertyBag.cpp.

References mproperties.

Names RTT::PropertyBag::getPropertyNames ( ) const
inline

Returns a list of all the names of the properties in this bag.

Definition at line 351 of file PropertyBag.hpp.

template<class T >
Property<T>* RTT::PropertyBag::getPropertyType ( const std::string &  name) const
inline

Get the first Property with name name of a given type T.

Parameters
nameThe name of the property to search for.
TThe data type of the property.
Returns
The Property<T>* with this name, zero if it does not exist with the given type.

Definition at line 242 of file PropertyBag.hpp.

const std::string& RTT::PropertyBag::getType ( ) const
inline
void RTT::PropertyBag::identify ( base::PropertyIntrospection pi) const

Identify the contents of this bag through introspection.

Deprecated:
DO NOT USE. Will be removed in 2.x release series.

Definition at line 180 of file PropertyBag.cpp.

References mproperties.

Referenced by RTT::marsh::PropertyBagIntrospector::introspect().

void RTT::PropertyBag::identify ( base::PropertyBagVisitor pi) const

Identify the contents of this bag through introspection.

Deprecated:
DO NOT USE. Will be removed in 2.x release series.

Definition at line 190 of file PropertyBag.cpp.

References RTT::base::PropertyBase::getName(), and mproperties.

void RTT::PropertyBag::list ( Names names) const

List the names of all properties.

Parameters
namesThe container which will be used to store all available property names in.

Definition at line 144 of file PropertyBag.cpp.

References mproperties.

Referenced by RTT::updateProperties().

std::vector< std::string > RTT::PropertyBag::list ( ) const

List the names of all properties.

Returns
A container of names.

Definition at line 154 of file PropertyBag.cpp.

References mproperties.

PropertyBag& RTT::PropertyBag::operator<< ( base::PropertyBase item)
inline

The 'add' operator.

Equivalent to add().

Parameters
itemThe Property to add to this bag.

Definition at line 327 of file PropertyBag.hpp.

PropertyBag & RTT::PropertyBag::operator<<= ( const PropertyBag source)

The update operator.

It updates this bag so it contains all PropertyBases of another bag, removing own PropertyBases if duplicate names exist in the source bag.

Definition at line 247 of file PropertyBag.cpp.

References add(), find(), getProperties(), getType(), and setType().

PropertyBag & RTT::PropertyBag::operator= ( const PropertyBag orig)

This assignment assigns all PropertyBases of another bag in this bag, making an exact copy or the original.

Definition at line 227 of file PropertyBag.cpp.

References add(), clear(), RTT::base::PropertyBase::create(), getType(), mproperties, ownProperty(), ownsProperty(), and setType().

bool RTT::PropertyBag::ownProperty ( base::PropertyBase p)
bool RTT::PropertyBag::ownsProperty ( base::PropertyBase p) const

Returns true if this property is owned by this Bag.

Definition at line 95 of file PropertyBag.cpp.

References mowned_props.

Referenced by RTT::deleteProperties(), RTT::deletePropertyBag(), and operator=().

void RTT::PropertyBag::remove ( base::PropertyBase p)

Remove a property from the container.

Analogous to removeProperty.

Parameters
pPointer to the property to be removed.

Definition at line 78 of file PropertyBag.cpp.

References removeProperty().

bool RTT::PropertyBag::removeProperty ( base::PropertyBase p)

Remove a property from the container.

Parameters
pPointer to the property to be removed.

Definition at line 115 of file PropertyBag.cpp.

References mowned_props, and mproperties.

Referenced by ownProperty(), remove(), and RTT::removeProperty().

void RTT::PropertyBag::setType ( const std::string &  newtype)
inline
size_t RTT::PropertyBag::size ( ) const
inline

Member Data Documentation

Properties RTT::PropertyBag::mowned_props
protected

Definition at line 359 of file PropertyBag.hpp.

Referenced by clear(), ownProperty(), ownsProperty(), and removeProperty().

Properties RTT::PropertyBag::mproperties
protected
std::string RTT::PropertyBag::type
protected

Definition at line 370 of file PropertyBag.hpp.

Referenced by RTT::refreshProperties(), and RTT::updateProperties().


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