51 #ifndef _RXPROPERTY_H_INCLUDED_
52 #define _RXPROPERTY_H_INCLUDED_
57 class OdRxPropertyBaseImpl;
58 class OdRxValueIteratorImpl;
59 class OdRxPropertyIteratorImpl;
60 class OdRxDictionaryPropertyImpl;
61 class OdRxPropertyImpl;
62 class OdRxCollectionPropertyImpl;
63 class OdRxIndexedPropertyImpl;
116 friend class OdRxPropertyImpl;
184 friend class OdRxCollectionPropertyImpl;
220 friend class OdRxIndexedPropertyImpl;
241 friend class OdRxDictionaryPropertyImpl;
245 #define ODRX_DECLARE_RX_PROPERTY_RO(Object, Name, Type) struct Object ## Name ## Property : OdRxProperty {\
246 static OdRxMemberPtr createObject(const OdRxClass* owner)\
248 OdRxMemberPtr res = OdRxObjectImpl<Object ## Name ## Property>::createObject();\
249 ((Object ## Name ## Property*)res.get())->init(__OD_T(#Name), &OdRxValueType::Desc<Type>::value(), owner);\
252 virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE;\
253 virtual bool isReadOnly(const OdRxObject*) const ODRX_OVERRIDE { return true; }\
256 #define ODRX_DECLARE_RX_PROPERTY(Object, Name, Type) struct Object ## Name ## Property : OdRxProperty {\
257 static OdRxMemberPtr createObject(const OdRxClass* owner)\
259 OdRxMemberPtr res = OdRxObjectImpl<Object ## Name ## Property>::createObject();\
260 ((Object ## Name ## Property*)res.get())->init(__OD_T(#Name), &OdRxValueType::Desc<Type>::value(), owner);\
263 virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE;\
264 virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE;\
267 #define ODRX_DECLARE_RX_INDEXED_PROPERTY(Object, Name, Type) \
268 struct Object ## Name ## Property : OdRxIndexedProperty {\
269 static OdRxMemberPtr createObject(const OdRxClass* owner)\
271 OdRxMemberPtr res = OdRxObjectImpl<Object ## Name ## Property>::createObject();\
272 ((Object ## Name ## Property*)res.get())->init(__OD_T(#Name), &OdRxValueType::Desc<Type>::value(), owner);\
275 virtual OdResult subGetValue(const OdRxObject* pO, int index, OdRxValue& value) const ODRX_OVERRIDE; \
276 virtual OdResult subSetValue(OdRxObject* pO, int index, const OdRxValue& value) const ODRX_OVERRIDE; \
277 virtual OdResult subInsertValue(OdRxObject* pO, int index, const OdRxValue& value) const ODRX_OVERRIDE; \
278 virtual OdResult subRemoveValue(OdRxObject* pO, int index) const ODRX_OVERRIDE; \
279 virtual OdRxValueIteratorPtr subNewValueIterator(const OdRxObject* pO) const ODRX_OVERRIDE;\
280 virtual OdResult subTryGetCount(const OdRxObject* pO, int& count) const ODRX_OVERRIDE;\
283 #define ODRX_DECLARE_RX_CPLX_INDEXED_PROPERTY(Object, Name, Type) \
284 struct Object ## Name ## Property : OdRxIndexedProperty {\
285 static OdRxMemberPtr createObject(const OdRxClass* owner)\
287 OdRxMemberPtr res = OdRxObjectImpl<Object ## Name ## Property>::createObject();\
288 ((Object ## Name ## Property*)res.get())->init(__OD_T(#Name), &OdRxValueType::Desc<Type>::value(), owner);\
291 virtual OdResult subGetValue(const OdRxObject* pO, int index, OdRxValue& value) const ODRX_OVERRIDE; \
292 virtual OdResult subSetValue(OdRxObject* pO, int index, const OdRxValue& value) const ODRX_OVERRIDE; \
293 virtual OdResult subInsertValue(OdRxObject* pO, int index, const OdRxValue& value) const ODRX_OVERRIDE; \
294 virtual OdResult subRemoveValue(OdRxObject* pO, int index) const ODRX_OVERRIDE; \
295 virtual OdRxValueIteratorPtr subNewValueIterator(const OdRxObject* pO) const ODRX_OVERRIDE;\
296 virtual OdResult subTryGetCount(const OdRxObject* pO, int& count) const ODRX_OVERRIDE;\
297 virtual OdResult subChildren(OdArray<OdRxMemberPtr>& children) const ODRX_OVERRIDE;\
300 #define ODRX_DECLARE_RX_PROPERTY_START(Object, Name, Type) struct Object ## Name ## Property : OdRxProperty {\
301 static OdRxMemberPtr createObject(const OdRxClass* owner)\
303 OdRxMemberPtr res = OdRxObjectImpl<Object ## Name ## Property>::createObject();\
304 ((Object ## Name ## Property*)res.get())->init(__OD_T(#Name), &OdRxValueType::Desc<Type>::value(), owner);\
308 #define ODRX_DECLARE_RX_PROPERTY_END }
310 #define ODRX_DECLARE_RX_PROPERTY_READONLY virtual bool isReadOnly(const OdRxObject*) const ODRX_OVERRIDE { return true; }
312 #define ODRX_DECLARE_RX_PROPERTY_GET_BY_VAL(Object, ObjGetMemberName, Type) \
313 virtual OdResult subGetValue(const OdRxObject* pO, OdRxValue& value) const ODRX_OVERRIDE\
315 Object ## Ptr pObj = Object::cast(pO);\
316 if (pObj.isNull()) return eNotApplicable;\
317 value = static_cast<Type>(pObj->ObjGetMemberName());\
321 #define ODRX_DECLARE_RX_PROPERTY_SET_BY_VAL(Object, ObjSetMemberName, Type) \
322 virtual OdResult subSetValue(OdRxObject* pO, const OdRxValue& value) const ODRX_OVERRIDE\
324 Object ## Ptr pObj = Object::cast(pO);\
325 if (pObj.isNull()) return eNotApplicable;\
326 pObj->ObjSetMemberName(*rxvalue_cast<Type>(&value));\
330 #define ODRX_DECLARE_RX_PROPERTY_SUBCHILDREN_START \
331 virtual OdResult subChildren(OdArray<OdRxMemberPtr>& children) const {
333 #define ODRX_DECLARE_RX_PROPERTY_SUBCHILDREN_END return eOk; }
335 #define ODRX_DECLARE_RX_PROPERTY_SUBCHILDREN_ADD(Name, Type) \
336 children.append(OdRxSubProperty::createObject(__OD_T(#Name), OdRxValueType::Desc<Type>::value(), this))
OdSmartPtr< OdRxPropertyBase > OdRxPropertyBasePtr
OdSmartPtr< OdRxProperty > OdRxPropertyPtr
OdSmartPtr< OdRxValueIterator > OdRxValueIteratorPtr
OdSmartPtr< OdRxCollectionProperty > OdRxCollectionPropertyPtr
OdSmartPtr< OdRxIndexedProperty > OdRxIndexedPropertyPtr
virtual OdResult subTryGetCount(const OdRxObject *pO, int &count) const
ODRX_DECLARE_MEMBERS(OdRxCollectionProperty)
OdRxCollectionProperty(OdRxCollectionPropertyImpl *pImpl)
OdRxValueIteratorPtr newValueIterator(const OdRxObject *pO) const
OdResult tryGetCount(const OdRxObject *pO, int &count) const
virtual OdRxValueIteratorPtr subNewValueIterator(const OdRxObject *pO) const
virtual OdRxValueIterator * newValueIterator(const OdRxCollectionProperty *pProp, const OdRxObject *pO) const
ODRX_DECLARE_MEMBERS(OdRxCollectionPropertyOverrule)
virtual OdResult tryGetCount(const OdRxCollectionProperty *pProp, const OdRxObject *pO, int &count) const
OdResult setValue(OdRxObject *pO, const OdString &key, const OdRxValue &value) const
OdRxDictionaryProperty(OdRxDictionaryPropertyImpl *pImpl)
ODRX_DECLARE_MEMBERS(OdRxDictionaryProperty)
static OdRxCollectionPropertyPtr createObject(const OdString &name, const OdRxValueType &type, const OdRxObject *owner=NULL)
OdResult getValue(const OdRxObject *pO, const OdString &key, OdRxValue &value) const
virtual OdResult subSetValue(OdRxObject *pO, const OdString &key, const OdRxValue &value) const
virtual OdResult subGetValue(const OdRxObject *pO, const OdString &key, OdRxValue &value) const
OdResult getValue(const OdRxObject *pO, int index, OdRxValue &value) const
OdResult removeValue(OdRxObject *pO, int index) const
OdRxIndexedProperty(OdRxIndexedPropertyImpl *pImpl)
virtual OdResult subGetValue(const OdRxObject *pO, int index, OdRxValue &value) const
OdResult setValue(OdRxObject *pO, int index, const OdRxValue &value) const
virtual OdResult subSetValue(OdRxObject *pO, int index, const OdRxValue &value) const
virtual OdResult subRemoveValue(OdRxObject *pO, int index) const
static OdRxCollectionPropertyPtr createObject(const OdString &name, const OdRxValueType &type, const OdRxObject *owner=NULL)
virtual OdResult subInsertValue(OdRxObject *pO, int index, const OdRxValue &value) const
OdResult insertValue(OdRxObject *pO, int index, const OdRxValue &value) const
ODRX_DECLARE_MEMBERS(OdRxIndexedProperty)
virtual OdResult subRemoveValue(OdRxObject *pO, int index) const ODRX_OVERRIDE
virtual OdResult subGetValue(const OdRxObject *pO, int index, OdRxValue &value) const ODRX_OVERRIDE
virtual OdResult subSetValue(OdRxObject *pO, int index, const OdRxValue &value) const ODRX_OVERRIDE
virtual OdResult subInsertValue(OdRxObject *pO, int index, const OdRxValue &value) const ODRX_OVERRIDE
static OdRxMemberPtr createObject(const OdString &memberName, const OdRxValueType &type, const OdRxProperty *owner)
virtual OdRxValueIteratorPtr subNewValueIterator(const OdRxObject *pO) const ODRX_OVERRIDE
virtual OdResult subTryGetCount(const OdRxObject *pO, int &count) const ODRX_OVERRIDE
void init(const OdString &name, const OdRxValueType *type, const OdRxObject *owner=0)
ODRX_DECLARE_MEMBERS(OdRxPromotingQueryContext)
ODRX_DECLARE_MEMBERS(OdRxPropertyBase)
virtual bool isReadOnly(const OdRxObject *pO) const
OdRxPropertyBase(OdRxPropertyBaseImpl *)
OdResult setValue(OdRxObject *pO, const OdRxValue &value) const
OdResult getValue(const OdRxObject *pO, OdRxValue &value) const
OdRxProperty(OdRxPropertyImpl *)
ODRX_DECLARE_MEMBERS(OdRxProperty)
virtual OdResult subSetValue(OdRxObject *pO, const OdRxValue &value) const
virtual OdResult subGetValue(const OdRxObject *pO, OdRxValue &value) const
ODRX_DECLARE_MEMBERS(OdRxPropertyOverrule)
virtual OdResult getValue(const OdRxProperty *pProp, const OdRxObject *pO, OdRxValue &value) const
virtual OdResult setValue(const OdRxProperty *pProp, OdRxObject *pO, const OdRxValue &value) const
virtual bool isReadOnly(const OdRxObject *pO) const ODRX_OVERRIDE
virtual OdResult subGetValue(const OdRxObject *pO, OdRxValue &value) const ODRX_OVERRIDE
virtual OdResult subSetValue(OdRxObject *pO, const OdRxValue &value) const ODRX_OVERRIDE
static OdRxMemberPtr createObject(const OdString &memberName, const OdRxValueType &type, const OdRxProperty *owner)
OdRxSubPropertyOfIndexedProperty()
virtual OdResult subSetValue(OdRxObject *pO, int index, const OdRxValue &value) const ODRX_OVERRIDE
static OdRxMemberPtr createObject(const OdString &memberName, const OdRxValueType &type, const OdRxIndexedProperty *owner)
virtual OdResult subGetValue(const OdRxObject *pO, int index, OdRxValue &value) const ODRX_OVERRIDE
GLuint const GLchar * name
GLuint GLsizei GLsizei GLint GLenum * type
GLsizei const GLfloat * value
ODRX_DECLARE_MEMBERS(OdRxValueIterator)
virtual OdRxValue current() const =0