Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef PI_PROPERTYBASE
00039 #define PI_PROPERTYBASE
00040
00041 #include <string>
00042 #include "ActionInterface.hpp"
00043 #include "DataSourceBase.hpp"
00044
00045 #ifdef ORO_PRAGMA_INTERFACE
00046 #pragma interface
00047 #endif
00048
00049 namespace RTT
00050 { namespace base {
00051
00056 class RTT_API PropertyBase
00057 {
00058 public:
00062 virtual ~PropertyBase();
00063
00071 PropertyBase( std::string name, std::string description);
00072
00076 PropertyBase();
00077
00082 const std::string& getName() const { return _name; }
00083
00088 void setName(const std::string& name);
00089
00094 const std::string& getDescription() const { return _description; }
00095
00100 void setDescription(const std::string& desc);
00101
00108 bool ready() const { return this->getDataSource(); }
00109
00115 virtual void identify( PropertyIntrospection* pi) = 0;
00116
00122 virtual void identify( PropertyBagVisitor* pi);
00123
00134 virtual bool update( const PropertyBase* other ) = 0;
00135
00146 virtual bool refresh( const PropertyBase* other ) = 0;
00147
00158 virtual bool copy( const PropertyBase* other ) = 0;
00159
00166 virtual bool compose( const PropertyBag& source);
00167
00173 virtual PropertyBase* clone() const = 0;
00174
00180 virtual PropertyBase* create() const = 0;
00181
00186 virtual DataSourceBase::shared_ptr getDataSource() const = 0;
00187
00192 virtual std::string getType() const = 0;
00193
00197 virtual const types::TypeInfo* getTypeInfo() const = 0;
00198
00199 protected:
00203 std::string _name;
00204
00208 std::string _description;
00209 };
00210
00216 RTT_API std::ostream& operator<<(std::ostream &os, PropertyBase* p);
00217
00218
00219 }
00220 }
00221 #endif