CFx SDK Documentation
2020SP3
SDK
CFx
dd_inc
DbClass.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
25
26
#ifndef _ODDBCLASS_INCLUDED_
27
#define _ODDBCLASS_INCLUDED_
28
29
#include "
TD_PackPush.h
"
30
31
#include "
RxObject.h
"
32
34
//OdRxClass* ClassName::saveAsClass(OdRxClass*) const
35
//{
36
// return PseudoBaseClass::saveAsClass(PseudoBaseClass::desc());
37
//}
38
//
44
45
49
#define ODDB_PSEUDO_DECLARE_MEMBERS(ClassName) \
50
public: \
51
ODRX_DECLARE_MEMBERS(ClassName); \
52
static OdPseudoConstructorType g_pMainConstr; \
53
OdRxClass* saveAsClass(OdRxClass* pClass) const
54
59
#define ODDB_PSEUDO_DEFINE_INIT_MEMBERS(ClassName,ParentClass,pseudoConsFn,PseudoBaseClass) \
60
\
61
/* Registers this class with Teigha. */
\
62
void ClassName::rxInit() \
63
{ \
64
if (!ClassName::g_pDesc) \
65
{ \
66
OdRxClass* pParent = ParentClass::desc(); \
67
OdRxClass* pPseudoBase = PseudoBaseClass::desc(); \
68
if (!pParent->isDerivedFrom(pPseudoBase)) \
69
{ \
70
throw OdError(eNotThatKindOfClass); \
71
} \
72
ClassName::g_pDesc = PseudoBaseClass::desc(); \
73
g_pMainConstr = pPseudoBase->constructor(); \
74
pPseudoBase->setConstructor(ClassName::pseudoConstructor); \
75
} \
76
else \
77
{ \
78
ODA_ASSERT(("Class ["#ClassName"] is already initialized.",0)); \
79
throw OdError(eExtendedError); \
80
} \
81
} \
82
\
83
/* Unregisters this class with Teigha. */
\
84
void ClassName::rxUninit() \
85
{ \
86
if (ClassName::g_pDesc) \
87
{ \
88
OdRxClass* pPseudoBase = PseudoBaseClass::desc(); \
89
pPseudoBase->setConstructor(g_pMainConstr); \
90
ClassName::g_pMainConstr = 0; \
91
ClassName::g_pDesc = 0; \
92
} \
93
else \
94
{ \
95
ODA_ASSERT(("Class ["#ClassName"] is not initialized yet.",0)); \
96
throw OdError(eNotInitializedYet); \
97
} \
98
}
99
103
#define ODDB_PSEUDO_DEFINE_MEMBERS(ClassName,ParentClass,PseudoBaseClass,DOCREATE) \
104
\
105
ODRX_DEFINE_RTTI_MEMBERS(ClassName,ParentClass) \
106
\
107
ODRX_DEFINE_PSEUDOCONSTRUCTOR(ClassName,DOCREATE) \
108
\
109
ODDB_PSEUDO_DEFINE_INIT_MEMBERS(ClassName,ParentClass,pseudoConsFn,PseudoBaseClass) \
110
\
111
OdPseudoConstructorType ClassName::g_pMainConstr = 0; \
112
\
113
OdRxClass* ClassName::saveAsClass(OdRxClass*) const \
114
{ \
115
return PseudoBaseClass::saveAsClass(PseudoBaseClass::desc()); \
116
}
117
118
#include "
TD_PackPop.h
"
119
120
#endif //_ODDBCLASS_INCLUDED_
TD_PackPop.h
RxObject.h
TD_PackPush.h
Generated on Mon Oct 12 2020 11:49:30