CFx SDK Documentation  2023 SP0
RxOverrule.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 _RXOVERRULE_H
25 #define _RXOVERRULE_H
26 
27 #include "RxObject.h"
28 
29 #include "TD_PackPush.h"
30 class OdRxOverruleIterator;
31 
42 {
43 public:
45 
49  virtual ~OdRxOverrule();
50 
57  virtual bool isApplicable(const OdRxObject* pOverruledSubject) const = 0;
58 
67  static OdResult addOverrule(OdRxClass* pClass, OdRxOverrule* pOverrule, bool bAddAtLast = false);
68 
76  static OdResult removeOverrule(OdRxClass* pClass, OdRxOverrule* pOverrule);
77 
83  static void setIsOverruling(bool bIsOverruling);
84 
88  static bool isOverruling()
89  {
90  return s_bIsOverruling;
91  }
92 
100  static bool hasOverrule(const OdRxObject* pSubject, OdRxClass* pOverruleClass);
101 private:
103  OdRxOverruleIterator* m_pIter;
105  FIRSTDLL_EXPORT_STATIC static bool s_bIsOverruling;
107  friend class OdRxOverruleInternals;
108 };
109 
110 #include "TD_PackPop.h"
111 #endif // _RXOVERRULE_H
OdResult
Definition: OdResult.h:29
#define FIRSTDLL_EXPORT
Definition: RootExport.h:39
#define FIRSTDLL_EXPORT_STATIC
Definition: RootExport.h:40
static void setIsOverruling(bool bIsOverruling)
static OdResult removeOverrule(OdRxClass *pClass, OdRxOverrule *pOverrule)
static OdResult addOverrule(OdRxClass *pClass, OdRxOverrule *pOverrule, bool bAddAtLast=false)
virtual ~OdRxOverrule()
virtual bool isApplicable(const OdRxObject *pOverruledSubject) const =0
static bool hasOverrule(const OdRxObject *pSubject, OdRxClass *pOverruleClass)
ODRX_DECLARE_MEMBERS(OdRxOverrule)
static bool isOverruling()
Definition: RxOverrule.h:88