Property.h
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 #ifndef APP_PROPERTY_H
00025 #define APP_PROPERTY_H
00026
00027
00028
00029 #include <Base/Persistence.h>
00030 #include <string>
00031 #include <bitset>
00032
00033
00034 namespace App
00035 {
00036
00037 class PropertyContainer;
00038
00048 class AppExport Property : public Base::Persistence
00049 {
00050 TYPESYSTEM_HEADER();
00051
00052 public:
00053 Property();
00054 virtual ~Property();
00055
00062 virtual unsigned int getMemSize (void) const {
00063
00064 return Base::Persistence::getMemSize() + sizeof(father) + sizeof(StatusBits);
00065 }
00066
00068 const char* getName(void) const;
00069
00071 virtual const char* getEditorName(void) const { return ""; }
00072
00074 short getType(void) const;
00075
00077 const char* getGroup(void) const;
00078
00080 const char* getDocumentation(void) const;
00081
00083 void setContainer(PropertyContainer *Father);
00084
00086 PropertyContainer *getContainer(void) const {return father;}
00088 void touch();
00090 bool isTouched(void) const {return StatusBits.test(0);}
00092 void purgeTouched(void){StatusBits.reset(0);}
00093
00095 virtual Property *Copy(void) const = 0;
00097 virtual void Paste(const Property &from) = 0;
00099 std::string encodeAttribute(const std::string&) const;
00100
00101
00102 friend class PropertyContainer;
00103
00111 std::bitset<32> StatusBits;
00112
00113
00114 protected:
00116 void hasSetValue(void);
00118 void aboutToSetValue(void);
00119
00120 private:
00121
00122 Property(const Property&);
00123 Property& operator = (const Property&);
00124
00125 private:
00126 PropertyContainer *father;
00127 };
00128
00129
00135 class AppExport PropertyLists : public Property
00136 {
00137 TYPESYSTEM_HEADER();
00138
00139 public:
00140 virtual void setSize(int newSize)=0;
00141 virtual int getSize(void) const =0;
00142 };
00143
00144 }
00145
00146 #endif // APP_PROPERTY_H