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
/////////////////////////////////////////////////////////////////////////////// 
// 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 _DBOBJECTOVERRULE_H_INCLUDED_
#define _DBOBJECTOVERRULE_H_INCLUDED_
 
#include "RxOverrule.h"
#include "TD_PackPush.h"
#include "DbObject.h"
 
/** \details
  This class overrules a subset of operations which an object of a database specifies. 
  It is used as a base class for classes derived from OdDbObject to change their behavior. 
  Each default implementation calls the corresponding method of the target class.
    
  Library:  TD_Db
  <group OdDb_Classes>
*/
class TOOLKIT_EXPORT OdDbObjectOverrule : public OdRxOverrule
{
public:
  ODRX_DECLARE_MEMBERS(OdDbObjectOverrule);
 
  /** \details
    Constructor creates an instance of this class.
  */
  OdDbObjectOverrule();
 
  /** \details
    Overrules the OdDbObject::subOpen() method and calls it in the default implementation.
    This method returns eOk if successful.
 
    \param pSubject [in]  A raw pointer to an object.
    \param mode [in]  A mode to be opened in.
  */
  virtual OdResult open(OdDbObject* pSubject, OdDb::OpenMode mode);
 
  /** \details
    Overrules the OdDbObject::subClose() method and calls it in the default implementation.
    This method returns eOk if successful.
 
    \param pSubject [in]  A raw pointer to an object.
  */
  virtual OdResult close(OdDbObject* pSubject);
 
  /** \details
    Overrules the OdDbObject::subErase() method and calls it in the default implementation.
    This method returns eOk if successful.
 
    \param pSubject [in]  A raw pointer to an object.
    \param erasing [in]  An erase status mode that was passed in the erase() method.
  */
  virtual OdResult erase(OdDbObject* pSubject, bool erasing);
 
  /** \details
    Overrules the OdDbObject::subDeepClone() method and calls it in the default implementation.
    This method returns eOk if successful.
 
    \param pSubject [in]  A raw pointer to an object.
    \param idMap [in]  A current object ID map.
  */
  virtual OdDbObjectPtr deepClone(const OdDbObject* pSubject, OdDbIdMapping& idMap, OdDbObject* pOwner, bool bPrimary = true);
 
  /** \details
    Overrules the OdDbObject::subWblockClone() method and calls it in the default implementation.
    This method returns eOk if successful.
 
    \param pSubject [in]  A raw pointer to an object.
    \param idMap [in]  A current object ID map.
  */
  virtual OdDbObjectPtr wblockClone(const OdDbObject* pSubject, OdDbIdMapping& idMap, OdDbObject* pOwner, bool bPrimary = true);
};
 
/** \details
  This class overrules a subset of property linked operations which an object or entity specifies. 
  It is used as a base class for classes derived from OdDbObject or OdDbEntity to change their behavior. 
  Each default implementation calls the corresponding method of the target class.
    
  Library:  TD_Db
  <group OdDb_Classes>
*/
class TOOLKIT_EXPORT OdDbPropertiesOverrule : public OdRxOverrule
{
public:
  ODRX_DECLARE_MEMBERS(OdDbPropertiesOverrule);
 
  /** \details
    Constructor creates an instance of this class.
  */
  OdDbPropertiesOverrule();
 
  /** \details
    Overrules the OdDbObject::subGetClassID() method and calls it in the default implementation.
    This method returns eOk if successful.
 
    \param pSubject [in]  A raw pointer to an object or entity.
    \param pClsid [out]  A pointer to the corresponding COM wrapper class ID.
  */
  virtual OdResult getClassID(const OdDbObject* pSubject, void* pClsid);
 
  /** \details
    Overrules the OdDbEntity::subList() method and calls it in the default implementation.
    This method returns eOk if successful.
 
    \param pSubject [in]  A raw pointer to an entity.
  */
  virtual void list(const OdDbEntity* pSubject);
};
 
#include "TD_PackPop.h"
 
#endif //_DBOBJECTOVERRULE_H_INCLUDED_