Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cScriptableEventsMask.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cScriptableEventsMask_H
7 #define _INC_cScriptableEventsMask_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "../GrayLibBase.h"
13 #include "GrayCore/include/Index.h"
15 
16 namespace GrayLib
17 {
19 
21  {
25  EVENTX_QTY = 64,
26  };
27 
28  typedef BYTE SCRIPTPROPID_t;
30  typedef UINT64 EVENTX_MASK_t;
32 
34  {
39 
40  public:
41  static const EVENTX_MASK_t k_MASK_ALL = 0xFFFFFFFFFFFFFFFFULL;
42  private:
43  EVENTX_MASK_t m_Mask;
44  public:
46  : m_Mask(0)
47  {
48  }
50  {
51  }
52 
54  {
55  return m_Mask;
56  }
57  bool HasEventHandler(EVENTX_TYPE i) const noexcept
58  {
60  if (IS_INDEX_BAD(i, EVENTX_QTY)) // i can't record these so just assume we have to go looking.
61  {
62  i = EVENTX_UNKNOWN;
63  }
64  if (m_Mask & (((EVENTX_MASK_t)1) << i))
65  return true;
66  return false;
67  }
68 
69  void ClearEventHandlers() noexcept
70  {
71  m_Mask = 0;
72  }
73  void AddEventHandlers(EVENTX_MASK_t nMask) noexcept
74  {
75  m_Mask |= nMask;
76  }
77  void AddEventHandlers(const cScriptableInterfaceDef* pInterfaceDef);
78 
79  void AddEventHandler(EVENTX_TYPE i) noexcept
80  {
83  if (IS_INDEX_BAD(i, EVENTX_QTY))
84  return;
85  m_Mask |= (((EVENTX_MASK_t)1) << i);
86  }
88  {
89  if (IS_INDEX_BAD(i, EVENTX_QTY))
90  return;
91  m_Mask &= ~(((EVENTX_MASK_t)1) << i);
92  }
93 
95  };
96 }
97 
98 #endif // _INC_cScriptableEventsMask_H
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define IS_INDEX_BAD(i, q)
cast the (likely) int to unsigned to check for negatives.
Definition: Index.h:34
Definition: cScriptableEventsMask.h:34
bool HasEventHandler(EVENTX_TYPE i) const noexcept
Definition: cScriptableEventsMask.h:57
void AddEventHandlers(EVENTX_MASK_t nMask) noexcept
Definition: cScriptableEventsMask.h:73
~cScriptableEventsMask() noexcept
Definition: cScriptableEventsMask.h:49
EVENTX_MASK_t get_EventsHandledMask() const noexcept
Definition: cScriptableEventsMask.h:53
void RemoveEventHandler(EVENTX_TYPE i) noexcept
Definition: cScriptableEventsMask.h:87
void ClearEventHandlers() noexcept
Definition: cScriptableEventsMask.h:69
void AddEventHandler(EVENTX_TYPE i) noexcept
Definition: cScriptableEventsMask.h:79
cScriptableEventsMask() noexcept
Definition: cScriptableEventsMask.h:45
UNITTEST_FRIEND(cScriptableEventsMask)
Definition: cScriptableInterface.h:300
Definition: cMesh.h:22
EVENTX_TYPE_
Definition: cScriptableEventsMask.h:21
@ EVENTX_QTY
max triggers for an interface.
Definition: cScriptableEventsMask.h:25
@ EVENTX_FIRST
Definition: cScriptableEventsMask.h:24
@ EVENTX_UNKNOWN
bit 0 is reserved to say there are triggers here that do not conform.
Definition: cScriptableEventsMask.h:23
UINT64 EVENTX_MASK_t
bitmask of triggers supported.
Definition: cScriptableEventsMask.h:30
UNITTEST2_PREDEF(cQuadtree)
SCRIPTPROPID_t EVENTX_TYPE
a EVENTX_TYPE_
Definition: cScriptableEventsMask.h:29
BYTE SCRIPTPROPID_t
index to method or prop.
Definition: cScriptableEventsMask.h:28