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().get() != 0; }
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* copy() const = 0;
00181
00187 virtual PropertyBase* create() const = 0;
00188
00193 virtual DataSourceBase::shared_ptr getDataSource() const = 0;
00194
00199 virtual std::string getType() const = 0;
00200
00204 virtual const types::TypeInfo* getTypeInfo() const = 0;
00205
00206 protected:
00210 std::string _name;
00211
00215 std::string _description;
00216 };
00217
00223 RTT_API std::ostream& operator<<(std::ostream &os, PropertyBase* p);
00224
00225
00226 }
00227 }
00228 #endif