HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PDG_EventHandler.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * COMMENTS:
7  */
8 
9 #ifndef __PDG_EVENT_HANDLER_H__
10 #define __PDG_EVENT_HANDLER_H__
11 
12 #include "PDG_API.h"
13 #include "PDG_Types.h"
14 
15 #include <UT/UT_Set.h>
16 #include <UT/UT_TBBSpinLock.h>
17 
18 class PDG_Event;
19 class PDG_EventEmitter;
20 
22 {
23 public:
25 
26 public:
29  bool user_handler=false);
30  virtual ~PDG_EventHandler();
31 
32  virtual void handlePDGEvent(const PDG_Event &) = 0;
34  { };
35 
36  void removeFromAllEmitters();
37  void emitters(EmitterSet& emitters) const;
38 
40  { return myLanguage; }
41  bool isUserHandler() const
42  { return myIsUserHandler; }
43 
44 private:
45  friend class PDG_EventEmitter;
46 
47  void registerEventEmitter(PDG_EventEmitter *emitter);
48  void unregisterEventEmitter(PDG_EventEmitter *emitter);
49 
50 private:
51  mutable UT_TBBSpinLock myEmittersLock;
52  EmitterSet myEmitters;
53  PDG_BaseType::Language myLanguage;
54  bool myIsUserHandler;
55 };
56 
57 #endif
#define PDG_API
Definition: PDG_API.h:23
virtual void eventEmitterNotAvailable(PDG_EventEmitter *emitter)
bool isUserHandler() const
PDG_BaseType::Language language() const