CFx SDK Documentation  2020SP3
RxObject.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2017, Open Design Alliance (the "Alliance").
3 // All rights reserved.
4 //
5 // This software and its documentation and related materials are owned by
6 // the Alliance. The software may only be incorporated into application
7 // programs owned by members of the Alliance, subject to a signed
8 // Membership Agreement and Supplemental Software License Agreement with the
9 // Alliance. The structure and organization of this software are the valuable
10 // trade secrets of the Alliance and its suppliers. The software is also
11 // protected by copyright law and international treaty provisions. Application
12 // programs incorporating this software must include the following statement
13 // with their copyright notices:
14 //
15 // This application incorporates Teigha(R) software pursuant to a license
16 // agreement with Open Design Alliance.
17 // Teigha(R) Copyright (C) 2002-2017 by Open Design Alliance.
18 // All rights reserved.
19 //
20 // By use of this software, its documentation or related materials, you
21 // acknowledge and accept the above terms.
23 
24 #ifndef _ODRXOBJECT_INCLUDED_
25 #define _ODRXOBJECT_INCLUDED_ /* { Secret } *//
26 
27 #include "TD_PackPush.h"
28 #include "RootExport.h"
29 #include "OdHeap.h"
30 #include "OdArrayPreDef.h"
31 #include "OdString.h"
32 #include "BaseObjectPtr.h"
33 
34 class OdRxClass;
35 class OdRxModule;
36 
44 typedef void (*AppNameChangeFuncPtr)(const OdRxClass* classObj, OdString& newAppName, int saveVer);
45 
57 
58 #define ODRX_DECLARE_MEMBERS_GENERIC(ClassType, ClassName)\
59 public: \
60  \
61  \
62  static OdSmartPtr<ClassName> cast(const OdRxObject* pObj) \
63  { \
64  if (pObj) \
65  return OdSmartPtr<ClassName>(((ClassName*)pObj->queryX(ClassName::desc())), kOdRxObjAttach); \
66  return (ClassName*)0; \
67  } \
68  \
69  static ClassType* g_pDesc; \
70  \
71  \
72  \
73  \
74  static ClassType* desc(); \
75  \
76  \
77  \
78  \
79  virtual ClassType* isA() const; \
80  \
81  \
82  \
83  virtual OdRxObject* queryX(const OdRxClass* protocolClass) const; \
84  \
85  \
86  \
87  static OdRxObjectPtr pseudoConstructor(); \
88  \
89  \
90  \
91  static OdSmartPtr<ClassName> createObject() \
92  { if (!desc()) throw OdError(eNotInitializedYet); return desc()->create(); } \
93  \
94  \
95  static void rxInit(); \
96  static void rxInit(AppNameChangeFuncPtr appNameChangeFunc); \
97  \
98 /* Unregisters ClassName with Teigha. **/ \
99  static void rxUninit()
100 
101 
112 #define ODRX_DECLARE_MEMBERS(ClassName)\
113  ODRX_DECLARE_MEMBERS_GENERIC(OdRxClass, ClassName)
114 
121 #define EMPTY_CONSTR(ClassName)(ClassName*)0
122 
133  #define NEWOBJ_CONSTR(ClassName) OdSmartPtr<ClassName>(new ClassName, kOdRxObjAttach)
134 
135 #define ODRX_DEFINE_RTTI_MEMBERS_GENERIC(ClassType, ClassName, ParentClass) \
136  \
137  ClassType* ClassName::g_pDesc = 0; \
138  ClassType* ClassName::desc() { return g_pDesc; } \
139  ClassType* ClassName::isA() const { return g_pDesc; } \
140  \
141  OdRxObject* ClassName::queryX(const OdRxClass* pClass) const { \
142  return ::odQueryXImpl<ClassName, ParentClass>(this, pClass); \
143  }
144 
151 #define ODRX_DEFINE_RTTI_MEMBERS(ClassName, ParentClass) \
152  ODRX_DEFINE_RTTI_MEMBERS_GENERIC(OdRxClass, ClassName, ParentClass)
153 
154 #define ODRX_DEFINE_INIT_MEMBERS_GENERIC(ClassName, CREATE_CLASS_INSTANCE, CREATE_CLASS_INSTANCE2) \
155  \
156 /* Registers this class with Teigha. */ \
157 void ClassName::rxInit() \
158 { \
159  if (!ClassName::g_pDesc) { \
160  ClassName::g_pDesc = CREATE_CLASS_INSTANCE; \
161  } else { \
162  ODA_ASSERT(("Class ["#ClassName"] is already initialized.",0)); \
163  throw OdError(eExtendedError); \
164  } \
165 } \
166 void ClassName::rxInit(AppNameChangeFuncPtr pAppNameChangeCallback) \
167 { \
168  if (!ClassName::g_pDesc) { \
169  ClassName::g_pDesc = CREATE_CLASS_INSTANCE2; \
170  } else { \
171  ODA_ASSERT(("Class ["#ClassName"] is already initialized.",0)); \
172  throw OdError(eExtendedError); \
173  } \
174 } \
175  \
176 /* Unregisters this class with Teigha. */ \
177 void ClassName::rxUninit() \
178 { \
179  if (ClassName::g_pDesc) { \
180  ::deleteOdRxClass(ClassName::g_pDesc); \
181  ClassName::g_pDesc = 0; \
182  } else { \
183  ODA_ASSERT(("Class ["#ClassName"] is not initialized yet.",0)); \
184  throw OdError(eNotInitializedYet); \
185  } \
186 }
187 
196 #define ODRX_DEFINE_INIT_MEMBERS(ClassName, ParentClass, pseudoConsFn, DwgVer, \
197  MaintVer, nProxyFlags, szDWGClassName, \
198  szDxfName, szAppName, nCustomFlags) \
199  ODRX_DEFINE_INIT_MEMBERS_GENERIC( \
200  ClassName, \
201  (::newOdRxClass(szDWGClassName, ParentClass::desc(), pseudoConsFn, DwgVer, \
202  MaintVer, nProxyFlags, szDxfName, szAppName, NULL, nCustomFlags)), \
203  (::newOdRxClass(szDWGClassName, ParentClass::desc(), pseudoConsFn, DwgVer, \
204  MaintVer, nProxyFlags, szDxfName, szAppName, pAppNameChangeCallback, nCustomFlags)))
205 
206 
213 #define ODRX_DEFINE_PSEUDOCONSTRUCTOR(ClassName,DOCREATE) \
214  \
215 OdRxObjectPtr ClassName::pseudoConstructor() { return OdRxObjectPtr(DOCREATE(ClassName)); }
216 
223 #define ODRX_DEFINE_MEMBERS2(ClassName,ParentClass,pseudoConsFn,DwgVer,MaintVer,nProxyFlags,szDWGClassName,szDxfName,szAppName,nCustomFlags) \
224  \
225 ODRX_DEFINE_RTTI_MEMBERS(ClassName,ParentClass) \
226  \
227 ODRX_DEFINE_INIT_MEMBERS(ClassName,ParentClass,pseudoConsFn, \
228  DwgVer,MaintVer,nProxyFlags,szDWGClassName,szDxfName,szAppName,nCustomFlags)
229 
230 #define ODRX_DEFINE_MEMBERS(ClassName,ParentClass,DOCREATE,DwgVer,MaintVer,nProxyFlags,szDWGClassName,szDxfName,szAppName)\
231  \
232 ODRX_DEFINE_MEMBERS2(ClassName,ParentClass,ClassName::pseudoConstructor, \
233  DwgVer,MaintVer,nProxyFlags,szDWGClassName,szDxfName,szAppName,0) \
234  \
235 ODRX_DEFINE_PSEUDOCONSTRUCTOR(ClassName,DOCREATE)
236 
237 #define ODRX_DEFINE_MEMBERS_EX(ClassName,ParentClass,DOCREATE,DwgVer,MaintVer,nProxyFlags,szDWGClassName,szDxfName,szAppName,nCustomFlags)\
238  \
239 ODRX_DEFINE_MEMBERS2(ClassName,ParentClass,ClassName::pseudoConstructor, \
240  DwgVer,MaintVer,nProxyFlags,szDWGClassName,szDxfName,szAppName,nCustomFlags) \
241  \
242 ODRX_DEFINE_PSEUDOCONSTRUCTOR(ClassName,DOCREATE)
243 
244 
245 #define ODRX_NO_CONS_DEFINE_MEMBERS_ALTNAME(ClassName,ParentClass,szClassName) \
246  \
247 ODRX_DEFINE_MEMBERS2(ClassName,ParentClass,0,0,0,0,szClassName,OdString::kEmpty,OdString::kEmpty,0) \
248  \
249 ODRX_DEFINE_PSEUDOCONSTRUCTOR(ClassName,EMPTY_CONSTR)
250 
251 
252 
253 #define ODRX_NO_CONS_DEFINE_MEMBERS(ClassName,ParentClass) \
254  \
255 ODRX_NO_CONS_DEFINE_MEMBERS_ALTNAME(ClassName,ParentClass,OD_T(#ClassName))
256 
257 
258 
259 #define ODRX_CONS_DEFINE_MEMBERS_ALTNAME(ClassName,ParentClass,szClassName,DOCREATE) \
260  \
261 ODRX_DEFINE_MEMBERS2(ClassName,ParentClass,ClassName::pseudoConstructor,0,0,0,szClassName,OdString::kEmpty,OdString::kEmpty,0) \
262  \
263 ODRX_DEFINE_PSEUDOCONSTRUCTOR(ClassName,DOCREATE)
264 
265 
266 
267 #define ODRX_CONS_DEFINE_MEMBERS(ClassName,ParentClass,DOCREATE) \
268  \
269 ODRX_CONS_DEFINE_MEMBERS_ALTNAME(ClassName,ParentClass,OD_T(#ClassName),DOCREATE)
270 
271 
272 
273 #define ODRX_DXF_DEFINE_MEMBERS(ClassName,ParentClass,DOCREATE,DwgVer,MaintVer, nProxyFlags,DxfName,AppName) \
274  \
275 ODRX_DEFINE_MEMBERS(ClassName,ParentClass,DOCREATE, \
276  DwgVer,MaintVer,nProxyFlags,OD_T(#ClassName),OD_T(#DxfName),OD_T(#AppName))
277 
278 
279 
280 #define ODRX_DXF_CONS_DEFINE_MEMBERS(ClassName,ParentClass,DwgVer,MaintVer,nProxyFlags,DxfName,AppName) \
281  \
282 ODRX_DEFINE_MEMBERS2(ClassName,ParentClass,ClassName::pseudoConstructor, \
283  DwgVer,MaintVer,nProxyFlags,OD_T(#ClassName),OD_T(#DxfName),OD_T(#AppName),0) \
284  \
285 ODRX_DEFINE_PSEUDOCONSTRUCTOR(ClassName,NEWOBJ_CONSTR)
286 
287 
292 namespace OdRx
293 {
294  enum Ordering
295  {
296  kLessThan =-1, // This object < Specified Object
297  kEqual = 0, // This object == Specified Object
298  kGreaterThan = 1, // This object > Specified Object
299  kNotOrderable = 2 // These objects cannot be ordered.
300  };
301 
303  {
304  kMTRender = 0x01, // worldDraw() or viewportDraw() calls from different threads are allowed
305  // for highest level (MS or PS), elsewhere they should always happen
306  // in one dedicated thread.
307  kMTRenderInBlock = 0x02, // Calls to worldDraw() or viewportDraw() methods from different threads are allowed
308  // if the drawable is located inside a block (compound object).
309  kMTRenderNested = 0x04, // worldDraw() or viewportDraw() from different threads are allowed for
310  // nested drawables of this compound object.
311  kMTRenderReserved = 0x08, // Reserved for future use.
312  kMTRenderMask = 0x0f, // Combination of all MTRender-dependent flags.
313  kMTLoading = 0x80, // Multithread loading is supported for this object.
314  kHistoryAware = 0x100 // The information written by the object to the undo filer can be saved in the history file (is valid between sessions)
315  };
316 }
317 
345 {
349  inline void internalAddRef();
350 
362  void assign(
363  const OdRxObject* pObject)
364  {
365  if (m_pObject != pObject) // To prevent reference counter dec/inc which
366  { // may cause object destruction or subClose
367  release();
368  m_pObject = (OdRxObject*)pObject;
369  internalAddRef();
370  }
371  }
372 
373 public:
374 
389  const OdRxObject* pSource,
390  OdRxObjMod)
391  : OdBaseObjectPtr(pSource)
392  {
393  }
394 
396  const OdRxObject* pSource)
397  : OdBaseObjectPtr(pSource)
398  {
399  internalAddRef();
400  }
401 
403  const OdRxObjectPtr& pSource)
404  : OdBaseObjectPtr(pSource.get())
405  {
406  internalAddRef();
407  }
408 
410  const OdBaseObjectPtr& pSource)
411  : OdBaseObjectPtr(pSource.get())
412  {
413  internalAddRef();
414  }
415 
430  void attach(
431  const OdRxObject* pObject) { release(); m_pObject = (OdRxObject*)pObject; }
432 
440  {
441  release();
442  }
443 
454  inline void release();
455 
467  {
468  OdRxObject* res = m_pObject;
469  m_pObject = 0;
470  return res;
471  }
472 
482  const OdRxObjectPtr& source)
483  { assign(source); return *this; }
484 
486  const OdRxObject* source)
487  { assign(source); return *this; }
488 
490  const OdBaseObjectPtr& source)
491  { assign(source.get()); return *this; }
492 
503  OdRxObject* get() { return m_pObject; }
504  const OdRxObject* get() const { return m_pObject; }
505 
516  const OdRxObject* operator ->() const { return m_pObject; }
517 
518 #ifdef ODA_GCC_2_95
519 
529  operator OdRxObject*() const { return m_pObject; }
530 #else
531 
537  operator OdRxObject*() { return m_pObject; }
538 
539  operator const OdRxObject*() const { return m_pObject; }
540 #endif
541 
543  const OdRxObject* pObject) const { return (m_pObject==pObject); }
544 
546  const OdRxObject* pObject) const { return (m_pObject!=pObject); }
547 };
548 
549 
564 {
565 
569  OdRxObject(const OdRxObject&);
570 
574  OdRxObject& operator = (const OdRxObject&);
575 //FELIX_CHANGE_BEGIN
576 /*
577 protected:
578 */
579 public:
580 //FELIX_CHANGE_END
585 
586 public:
591 
595  virtual ~OdRxObject();
596 
613  virtual OdRxObject* queryX(
614  const OdRxClass* pClass) const;
615 
632  virtual OdRxObject* x(
633  const OdRxClass* pClass) const;
634 
641  const OdRxObject* pointer)
642  {
643  OdRxObjectPtr pRes;
644  if (pointer)
645  pRes.attach(pointer->queryX(desc()));
646  return pRes;
647  }
648 
663  static OdRxClass* desc();
664 
665 
680  virtual OdRxClass* isA() const;
681 
691  virtual void addRef() = 0;
692 
702  virtual void release() = 0;
703 
713  virtual long numRefs() const;
714 
728  bool isKindOf(
729  const OdRxClass* pClass) const
730  {
731  OdRxObjectPtr pRes;
732  pRes.attach(queryX(pClass));
733  return (!pRes.isNull());
734  }
735 
739  virtual OdRxObjectPtr clone() const;
740 
754  virtual void copyFrom(
755  const OdRxObject* pSource);
756 
784  const OdRxObject* pOther) const;
785 
797  virtual bool isEqualTo(
798  const OdRxObject* pOther) const;
799 };
800 
801 
802 
803 void OdRxObjectPtr::internalAddRef()
804 {
805  if(m_pObject) { m_pObject->addRef(); }
806 }
808 {
809  if (m_pObject)
810  {
811  m_pObject->release();
812  m_pObject = NULL;
813  }
814 }
815 
816 #include "SmartPtr.h"
817 
818 
820  {
832  };
833 
834 class OdRxOverruleIterator;
839 
850 
865 {
866 protected:
868 public:
870 
886  OdRxClass* pProtocolClass,
887  OdRxObject* pProtocolObject);
888 
904  const OdRxClass* pProtocolClass);
905 
920  OdRxClass* pProtocolClass);
921 
935  virtual OdRxObjectPtr create() const = 0;
936 
948  virtual const OdString appName() const = 0;
949 
959 
969  virtual const OdString dxfName() const = 0;
970 
980  virtual const OdString name() const = 0;
981 
1000  OdDb::MaintReleaseVer* pMaintReleaseVer = 0) const = 0;
1001 
1011  virtual OdUInt32 proxyFlags() const = 0;
1012 
1026  virtual bool isDerivedFrom(
1027  const OdRxClass* pClass) const;
1028 
1039  virtual OdRxClass* myParent() const = 0;
1040 
1053  virtual OdRxModule* module() const = 0;
1054 
1065 
1078  virtual void setConstructor(
1079  OdPseudoConstructorType psuedoConstr) = 0;
1080 
1090  virtual OdUInt32 customFlags() const = 0;
1091 
1092  virtual OdRxOverruleIterator* getOverrule(OverrulingType t) const = 0;
1093  virtual void setOverrule(OdRxOverruleIterator* pIt, OverrulingType t) = 0;
1094 };
1095 
1103 
1104 template <class Class, class Parent>
1105 OdRxObject* odQueryXImpl(const Class* pThis, const OdRxClass* pClass)
1106 {
1107  ODA_ASSERT(pClass!=0); // if you get here, most likely requested class is not registred
1108  OdRxObject* pObj = 0;
1109  if(pClass == Class::desc())
1110  {
1111  pObj = (OdRxObject*)pThis;
1112  pObj->addRef();
1113  }
1114  else
1115  {
1116  pObj = Class::desc()->getX(pClass).detach();
1117  if(!pObj)
1118  pObj = pThis->Parent::queryX(pClass);
1119  }
1120  return pObj;
1121 }
1122 
1130  const OdString& sClassName);
1131 
1151  const OdString& sClassName,
1152  OdRxClass* pBaseClass,
1153  OdPseudoConstructorType pConstr = 0,
1154  int DwgVer = 0,
1155  int MaintVer = 0,
1156  int nProxyFlags = 0,
1157  const OdString& sDxfName = OdString::kEmpty,
1158  const OdString& sAppName = OdString::kEmpty,
1159  AppNameChangeFuncPtr fNameChangeFunc = NULL,
1160  int nCustomFlags = 0
1161  );
1162 
1169  OdRxClass* pClass);
1170 
1175 
1182 
1183 #include "TD_PackPop.h"
1184 
1185 #endif //_ODRXOBJECT_INCLUDED_
1186 
OD::Class
OdRxClass Class
Definition: RxFS.h:42
FIRSTDLL_EXPORT
#define FIRSTDLL_EXPORT
Definition: RootExport.h:39
OdRxMemberCollection
Definition: RxMember.h:163
OdRxObjectPtr::release
void release()
Definition: RxObject.h:807
OdRxClass::getOverrule
virtual OdRxOverruleIterator * getOverrule(OverrulingType t) const =0
OdRxMemberCollectionBuilder
Definition: RxMember.h:181
kTotalOverrules
@ kTotalOverrules
Definition: RxObject.h:831
OdString
Definition: OdString.h:95
NULL
#define NULL
Definition: GsProperties.h:177
BaseObjectPtr.h
OdRxObjectPtr
Definition: RxObject.h:345
OdRxClass::setConstructor
virtual void setConstructor(OdPseudoConstructorType psuedoConstr)=0
OdRxObject::OdRxObject
OdRxObject()
Definition: RxObject.h:590
OdRxClass::appName
virtual const OdString appName() const =0
OdRxObjMod
OdRxObjMod
Definition: RxObject.h:56
OdRx::kMTRender
@ kMTRender
Definition: RxObject.h:304
OdRxObjectPtr::get
const OdRxObject * get() const
Definition: RxObject.h:504
OdRx::kMTRenderInBlock
@ kMTRenderInBlock
Definition: RxObject.h:307
kVisibilityOverrule
@ kVisibilityOverrule
Definition: RxObject.h:830
OdRxObject
Definition: RxObject.h:564
OdRxObjectPtr::OdRxObjectPtr
OdRxObjectPtr(const OdRxObject *pSource, OdRxObjMod)
Definition: RxObject.h:388
OdRxClass::OdRxClass
OdRxClass()
OdRxObject::comparedTo
virtual OdRx::Ordering comparedTo(const OdRxObject *pOther) const
OdRxObjectPtr::~OdRxObjectPtr
~OdRxObjectPtr()
Definition: RxObject.h:439
OdRx::Ordering
Ordering
Definition: RxObject.h:295
source
GLsizei GLsizei GLchar * source
Definition: gles2_ext.h:282
OdRxObjectPtr::OdRxObjectPtr
OdRxObjectPtr(const OdRxObjectPtr &pSource)
Definition: RxObject.h:402
newOdRxClass
FIRSTDLL_EXPORT OdRxClass * newOdRxClass(const OdString &sClassName, OdRxClass *pBaseClass, OdPseudoConstructorType pConstr=0, int DwgVer=0, int MaintVer=0, int nProxyFlags=0, const OdString &sDxfName=OdString::kEmpty, const OdString &sAppName=OdString::kEmpty, AppNameChangeFuncPtr fNameChangeFunc=NULL, int nCustomFlags=0)
AppNameChangeFuncPtr
void(* AppNameChangeFuncPtr)(const OdRxClass *classObj, OdString &newAppName, int saveVer)
Definition: RxObject.h:44
OdRx::kLessThan
@ kLessThan
Definition: RxObject.h:296
OdArray< OdRxObjectPtr >
OdRxClass::dxfName
virtual const OdString dxfName() const =0
kGripOverrule
@ kGripOverrule
Definition: RxObject.h:827
TD_PackPop.h
OdRxObjectPtr::get
OdRxObject * get()
Definition: RxObject.h:503
OdRxClass::myParent
virtual OdRxClass * myParent() const =0
OverrulingType
OverrulingType
Definition: RxObject.h:820
OdUInt32
unsigned int OdUInt32
Definition: OdPlatformSettings.h:783
deleteOdRxClass
FIRSTDLL_EXPORT void deleteOdRxClass(OdRxClass *pClass)
OdRxClass::customFlags
virtual OdUInt32 customFlags() const =0
OdBaseObjectPtr::m_pObject
OdRxObject * m_pObject
Definition: BaseObjectPtr.h:53
OdArrayPreDef.h
OdDb::DwgVersion
DwgVersion
Definition: OdaDefs.h:46
OdRxClass::appNameCallbackPtr
virtual AppNameChangeFuncPtr appNameCallbackPtr() const =0
OdRxObjectPtr::detach
OdRxObject * detach()
Definition: RxObject.h:466
OdRxObject::isA
virtual OdRxClass * isA() const
kHighlightOverrule
@ kHighlightOverrule
Definition: RxObject.h:825
OdString.h
OdRxClass
Definition: RxObject.h:865
OdHeap.h
OdBaseObjectPtr::isNull
bool isNull() const
Definition: BaseObjectPtr.h:70
RootExport.h
OdDb::MaintReleaseVer
MaintReleaseVer
Definition: OdaDefs.h:107
OdRxObjectPtr::attach
void attach(const OdRxObject *pObject)
Definition: RxObject.h:430
OdRx
Definition: RxDefs.h:36
OdSmartPtr< OdRxClass >
OdRx::kEqual
@ kEqual
Definition: RxObject.h:297
OdRxObject::clone
virtual OdRxObjectPtr clone() const
OdRxObjectPtr::OdRxObjectPtr
OdRxObjectPtr()
Definition: RxObject.h:387
OdRxObjectPtrArray
OdArray< OdRxObjectPtr > OdRxObjectPtrArray
Definition: RxObject.h:1174
OdRxObject::x
virtual OdRxObject * x(const OdRxClass *pClass) const
OdRxClass::getClassVersion
virtual OdDb::DwgVersion getClassVersion(OdDb::MaintReleaseVer *pMaintReleaseVer=0) const =0
OdRxClass::constructor
virtual OdPseudoConstructorType constructor()
OdRx::kHistoryAware
@ kHistoryAware
Definition: RxObject.h:314
OdRxObject::queryX
virtual OdRxObject * queryX(const OdRxClass *pClass) const
kPropertiesOverrule
@ kPropertiesOverrule
Definition: RxObject.h:823
OdRxObjectPtr::operator->
OdRxObject * operator->()
Definition: RxObject.h:515
OdRxClass::name
virtual const OdString name() const =0
OdRxObject::isKindOf
bool isKindOf(const OdRxClass *pClass) const
Definition: RxObject.h:728
odrxRegisterDestructorCallback
FIRSTDLL_EXPORT void odrxRegisterDestructorCallback(const ODRXOBJECT_CALLBACK callbackFunc)
pointer
GLenum void ** pointer
Definition: gles2_ext.h:288
TD_PackPush.h
OdRxClass::addX
virtual OdRxObjectPtr addX(OdRxClass *pProtocolClass, OdRxObject *pProtocolObject)
OdRx::kGreaterThan
@ kGreaterThan
Definition: RxObject.h:298
ODRXOBJECT_CALLBACK
void(* ODRXOBJECT_CALLBACK)(const OdRxObject *)
Definition: RxObject.h:1179
OdRx::kMTRenderMask
@ kMTRenderMask
Definition: RxObject.h:312
OdRxClass::isDerivedFrom
virtual bool isDerivedFrom(const OdRxClass *pClass) const
OdBaseObjectPtr
Definition: BaseObjectPtr.h:51
ODRX_ABSTRACT
#define ODRX_ABSTRACT
Definition: OdPlatformSettings.h:117
OdRx::kNotOrderable
@ kNotOrderable
Definition: RxObject.h:299
OdRxObject::~OdRxObject
virtual ~OdRxObject()
SmartPtr.h
odrxCreateObject
FIRSTDLL_EXPORT OdRxObjectPtr odrxCreateObject(const OdString &sClassName)
OdRxObject::release
virtual void release()=0
OdRx::kMTRenderReserved
@ kMTRenderReserved
Definition: RxObject.h:311
OdRxObject::cast
static OdRxObjectPtr cast(const OdRxObject *pointer)
Definition: RxObject.h:640
OdRxClass::setOverrule
virtual void setOverrule(OdRxOverruleIterator *pIt, OverrulingType t)=0
OdRx::kMTLoading
@ kMTLoading
Definition: RxObject.h:313
OdRxObject::numRefs
virtual long numRefs() const
OdRxClass::getX
virtual OdRxObjectPtr getX(const OdRxClass *pProtocolClass)
kGeometryOverrule
@ kGeometryOverrule
Definition: RxObject.h:824
OdRx::kMTRenderNested
@ kMTRenderNested
Definition: RxObject.h:309
ODA_ASSERT
#define ODA_ASSERT(exp)
Definition: DebugStuff.h:49
OdRxClass::module
virtual OdRxModule * module() const =0
kOdRxObjAttach
@ kOdRxObjAttach
Definition: RxObject.h:56
odQueryXImpl
OdRxObject * odQueryXImpl(const Class *pThis, const OdRxClass *pClass)
Definition: RxObject.h:1105
OdRxObject::addRef
virtual void addRef()=0
OdRxModule
Definition: RxModule.h:45
odrxUnregisterDestructorCallback
FIRSTDLL_EXPORT void odrxUnregisterDestructorCallback()
OdRxObject::ODRX_HEAP_OPERATORS
ODRX_HEAP_OPERATORS()
OdRxClass::proxyFlags
virtual OdUInt32 proxyFlags() const =0
OdRxClass::delX
virtual OdRxObjectPtr delX(OdRxClass *pProtocolClass)
OdRxClass::create
virtual OdRxObjectPtr create() const =0
kDrawableOverrule
@ kDrawableOverrule
Definition: RxObject.h:821
OdString::kEmpty
FIRSTDLL_EXPORT_STATIC static const OdString kEmpty
Definition: OdString.h:98
OdRxObjectPtr::operator!=
bool operator!=(const OdRxObject *pObject) const
Definition: RxObject.h:545
OdRxObjectPtr::operator=
OdRxObjectPtr & operator=(const OdRxObjectPtr &source)
Definition: RxObject.h:481
OdRxMemberCollectionConstructorPtr
void(* OdRxMemberCollectionConstructorPtr)(OdRxMemberCollectionBuilder &, void *)
Definition: RxObject.h:838
kSubentityOverrule
@ kSubentityOverrule
Definition: RxObject.h:826
OdRxObject::copyFrom
virtual void copyFrom(const OdRxObject *pSource)
OdRxObjectPtr::operator==
bool operator==(const OdRxObject *pObject) const
Definition: RxObject.h:542
OdRxObjectPtr::OdRxObjectPtr
OdRxObjectPtr(const OdRxObject *pSource)
Definition: RxObject.h:395
kObjectOverrule
@ kObjectOverrule
Definition: RxObject.h:822
OdRxObjectPtr::OdRxObjectPtr
OdRxObjectPtr(const OdBaseObjectPtr &pSource)
Definition: RxObject.h:409
void
typedef void(APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture)
OdRx::MTSupport
MTSupport
Definition: RxObject.h:303
OdRxAttributeCollection
Definition: RxAttribute.h:71
OdRxClass::ODRX_DECLARE_MEMBERS
ODRX_DECLARE_MEMBERS(OdRxClass)
OdRxObject::desc
static OdRxClass * desc()
OdRxClassPtr
OdSmartPtr< OdRxClass > OdRxClassPtr
Definition: RxObject.h:1102
OdRxObject::isEqualTo
virtual bool isEqualTo(const OdRxObject *pOther) const
kOsnapOverrule
@ kOsnapOverrule
Definition: RxObject.h:829
OdPseudoConstructorType
OdRxObjectPtr(* OdPseudoConstructorType)()
Definition: RxObject.h:849
kTransformOverrule
@ kTransformOverrule
Definition: RxObject.h:828