00001 // Copyright CERN 2012 - Developed in collaboration with GSI 00002 00003 #ifndef ABSTRACT_PROPERTY_TYPE_DEFINITION_H_ 00004 #define ABSTRACT_PROPERTY_TYPE_DEFINITION_H_ 00005 00006 #include <cmw-rda/Data.h> 00007 00008 #include <string> 00009 00010 namespace fesa 00011 { 00012 00013 class MultiplexingContext; 00014 class AbstractDevice; 00015 00020 class AbstractPropertyTypeDefinition 00021 { 00022 public: 00023 00027 AbstractPropertyTypeDefinition(); 00028 00032 virtual ~AbstractPropertyTypeDefinition(); 00033 00038 rdaData* getRdaData(); 00039 00044 const std::string& getPropertyName(); 00045 00050 bool itemAvailable(const char* itemName); 00051 00056 virtual void getRefItems(fesa::MultiplexingContext* context, AbstractDevice* device); 00057 00062 virtual void setRefItems(fesa::MultiplexingContext* context, AbstractDevice* device); 00063 00064 protected: 00065 00070 rdaData* pData_; 00071 00076 std::string propertyName_; 00077 00078 bool rdaDataOwnership_; 00079 00080 }; 00081 00082 //****************************************************************** 00083 00084 00085 inline rdaData* AbstractPropertyTypeDefinition::getRdaData() 00086 { 00087 return pData_; 00088 } 00089 00090 inline const std::string& AbstractPropertyTypeDefinition::getPropertyName() 00091 { 00092 return propertyName_; 00093 } 00094 00095 inline bool AbstractPropertyTypeDefinition::itemAvailable(const char* itemName) 00096 { 00097 return pData_->contains(itemName); 00098 } 00099 00100 } // fesa 00101 00102 #endif // ABSTRACT_PROPERTY_TYPE_DEFINITION_H_