zjf
2023-03-06 392b76515f40376b6d36f40a114850ef63650384
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
/////////////////////////////////////////////////////////////////////////////// 
// Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). 
// All rights reserved. 
// 
// This software and its documentation and related materials are owned by 
// the Alliance. The software may only be incorporated into application 
// programs owned by members of the Alliance, subject to a signed 
// Membership Agreement and Supplemental Software License Agreement with the
// Alliance. The structure and organization of this software are the valuable  
// trade secrets of the Alliance and its suppliers. The software is also 
// protected by copyright law and international treaty provisions. Application  
// programs incorporating this software must include the following statement 
// with their copyright notices:
//   
//   This application incorporates Teigha(R) software pursuant to a license 
//   agreement with Open Design Alliance.
//   Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. 
//   All rights reserved.
//
// By use of this software, its documentation or related materials, you 
// acknowledge and accept the above terms.
///////////////////////////////////////////////////////////////////////////////
 
 
 
 
#ifndef _ODDBDATABASEREACTOR_INCLUDED_
#define _ODDBDATABASEREACTOR_INCLUDED_
 
#include "TD_PackPush.h"
 
#include "RxObject.h"
#include "IdArrays.h"
 
/** \details
    This class is the base class for custom classes that receive notification
    of OdDbDatabase events.
    
    \remarks
    Events consist of the addition, modification, or deletion of objects 
    from an OdDbDatabase instance.
    
    \note
    The default implementations of all methods in this class do nothing.
 
    \sa
    TD_Db
    
    <group OdDb_Classes>
*/
class TOOLKIT_EXPORT OdDbDatabaseReactor : public OdRxObject
{
public:
  ODRX_DECLARE_MEMBERS(OdDbDatabaseReactor);
  
  OdDbDatabaseReactor() {}
  
  /** \details
    Notification function called whenever an OdDbObject has been appended to an OdDbDatabase.
    
    \param pDb [in]  Pointer to the database being modified.
    \param pObject [in]  Pointer to the object being appended.
    
    \remarks
    This function is called after the operation.
  */
  virtual void objectAppended(
    const OdDbDatabase* pDb, 
    const OdDbObject* pObject);
 
  
  /** \details
    Notification function called whenever an OdDbObject has been unappended from an OdDbDatabase by an Undo operation.
    
    \param pDb [in]  Pointer to the database being modified.
    \param pObject [in]  Pointer to the object being unappended.
 
    \remarks
    This function is called after the operation.
  */
  virtual void objectUnAppended(
    const OdDbDatabase* pDb, 
    const OdDbObject* pObject);
 
  
  /** \details
    Notification function called whenever an OdDbObject has been reappended to an OdDbDatabase by a Redo operation.
    
    \param pDb [in]  Pointer to the database being modified.
    \param pObject [in]  Pointer to the object being reappended.
 
    \remarks
    This function is called after the operation.
  */
  virtual void objectReAppended(
    const OdDbDatabase* pDb, 
    const OdDbObject* pObject);
 
  
  /** \details
    Notification function called whenever an OdDbObject is about to be modified.
    
    \param pDb [in]  Pointer to the database being modified.
    \param pObject [in]  Pointer to the object being modified.
    
    \remarks
    This function is called before the operations.
    
    \sa
    objectModified
  */
  virtual void objectOpenedForModify(
    const OdDbDatabase* pDb, 
    const OdDbObject* pObject);
 
  
  /** \details
    Notification function called whenever an OdDbObject has been modified.
    
    \param pDb [in]  Pointer to the database being modified.
    \param pObject [in]  Pointer to the object being modified.
    
    \remarks
    This function is called after the operations.
 
    \sa
    objectOpenedForModify
  */
  virtual void objectModified(
    const OdDbDatabase* pDb, 
    const OdDbObject* pObject);
    
  
  /** \details
    Notification function called whenever an OdDbObject has been erased or unerased.
    
    \param pDb [in]  Pointer to the database being modified.
    \param pObject [in]  Pointer to the object being modified.
    \param erased [in]  True if and only if the object is being erased.
    
    \remarks
    This function is called after the operation.
  */
  virtual void objectErased(
    const OdDbDatabase* pDb, 
    const OdDbObject* pObject, 
    bool erased = true);
 
  /** \details
    Notification function called whenever a database -resident system variable is about to change.
    
    \param pDb [in]  Pointer to the database being modified.
    \param name [in]  Name of the system variable being modified.
    
    \remarks
    This function is called before the operation.
    
    \sa
    headerSysVarChanged
  */
  virtual void headerSysVarWillChange(
    const OdDbDatabase* pDb, 
    const OdString& name);
 
/*DOM-IGNORE-BEGIN*/    
/*!DOM*/
#define RO_VAR_DEF(type, name, d1, d2, r1, r2)
/*!DOM*/
#define RO_VAR_DEF_H(type, name, d1, d2, r1, r2)
/*!DOM*/
#define VAR_DEF(type, name, d1, d2, r1, r2)\
  /** Description: Notification function called whenever the ##NAME system variable is about to change. \
    Arguments: pDb (I) Pointer to the database being modified. \
    Remarks: This function is called before the operation. \
    Remarks: ##remarks \
    Notes: ##notes \
    See Also: ##see_also \
  */\
  SVARS_FUNC_MODIFIER void headerSysVar_##name##_WillChange(const OdDbDatabase* pDb);
 
#include "SysVarDefs.h"
 
#undef VAR_DEF
#undef RO_VAR_DEF
#undef RO_VAR_DEF_H
 
/*!DOM*/
#define VAR_DEF(type, name, dxf, d1, d2, r1, r2)\
  /** Description: Notification function called whenever the DIM##NAME system variable is about to change. \
    Arguments: pDb (I) Pointer to the database being modified. \
    Remarks: This function is called before the operation. \
    Remarks: ##remarks \
    Notes: ##notes \
    See Also: ##see_also \
  */ \
  virtual void headerSysVar_dim##name##_WillChange(const OdDbDatabase* pDb);
 
#include "DimVarDefs.h"
#undef VAR_DEF
/*DOM-IGNORE-END*/
 
  /** \details
    Notification function called whenever a database -resident system variable has changed.
    
    \param pDb [in]  Pointer to the database being modified.
    \param name [in]  Name of the system variable being modified.
    
    \remarks
    This function is called after the operation.
    
    \sa
    headerSysVarWillChange
  */
  virtual void headerSysVarChanged(
    const OdDbDatabase* pDb, 
    const OdString& name);
 
/*DOM-IGNORE-BEGIN*/
/*!DOM*/
#define VAR_DEF(type, name, d1, d2, r1, r2)\
  /** Description: Notification function called whenever the ##NAME system variable has been changed. \
    Arguments: pDb (I) Pointer to the database being modified. \
    Remarks: This function is called after the operation. \
    Remarks: ##remarks \
    Notes: ##notes \
    See Also: ##see_also \
  */ \
  SVARS_FUNC_MODIFIER void headerSysVar_##name##_Changed(const OdDbDatabase* pDb);
 
#include "SysVarDefs.h"
 
#undef VAR_DEF
 
/*!DOM*/
#define VAR_DEF(type, name, dxf, d1, d2, r1, r2)\
  /** Description: Notification function called whenever the DIM##NAME system variable has been changed. \
    Arguments: pDb (I) Pointer to the database being modified. \
    Remarks: This function is called after the operation. \
    Remarks: ##remarks \
    Notes: ##notes \
    See Also: ##see_also \
  */ \
  virtual void headerSysVar_dim##name##_Changed(const OdDbDatabase* pDb);
 
#include "DimVarDefs.h"
#undef VAR_DEF
/*DOM-IGNORE-END*/
 
  /** \details
    Notification function called after the specified application is loaded and all its proxy
    objects are resurrected.
    
    \param pDb [in]  Pointer to the database being modified.
    \param appname [in]  Name of the resurrecting application.
    \param objectIds [in]  Object IDs of the resurrected objects.
  */
  virtual void proxyResurrectionCompleted(
    const OdDbDatabase* pDb,
    const OdString& appname, 
    OdDbObjectIdArray& objectIds);
 
  /** \details
    Notification function called whenever a database is about to be deleted from memory.
    \param pDb [in]  Pointer to the database being deleted.
 
    \remarks
    This function is called before the operation.
  */
  virtual void goodbye(
    const OdDbDatabase* pDb);
};
/** \details
    This template class is a specialization of the OdSmartPtr class for OdDbDatabaseReactor object pointers.
*/
typedef OdSmartPtr<OdDbDatabaseReactor> OdDbDatabaseReactorPtr;
 
#include "TD_PackPop.h"
 
#endif // _ODDBDATABASEREACTOR_INCLUDED_