![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtEventView.h,v $ $Revision: 1.10 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtEventView_H_ 00014 #define DtEventView_H_ 00015 00016 #include <vrvCore/vrvCore.h> 00017 #include <vrvCore/DtDe.h> 00018 #include <vrvCore/DtSimEventEntry.h> 00019 #include <vrvCore/DtDataBank.h> 00020 00021 #include <boost/bind.hpp> 00022 00023 namespace makVrv 00024 { 00025 class DtSimEntry; 00026 00029 class DT_DLL_VRVCORE DtBaseEventView 00030 { 00031 00032 public: 00033 00035 virtual ~DtBaseEventView(); 00036 00037 protected : 00038 00040 DtBaseEventView(); 00041 00042 }; 00043 00044 00045 template <class EventType> 00046 class DtEventSignaler : public DtVirtualBaseClass 00047 { 00048 public: 00049 00052 static DtEventSignaler& instance(DtSimData&); 00053 00056 static void release(DtSimData&); 00057 00059 DtEventSignaler(DtSimData&); 00060 00061 ~DtEventSignaler(); 00062 00064 boost::signal<void (const EventType&)> signal_eventTriggered; 00065 00066 protected: 00067 00070 void onEventTriggered(const DtSimEventEntry& entry); 00071 00073 void connectToEventTriggeredSignal(); 00074 00076 void disconnectFromEventTriggeredSignal(); 00077 00078 protected: 00079 00080 DtSimData& mySimData; 00081 unsigned int myReferenceCount; 00082 }; 00083 00086 template<class EventType> 00087 class DtEventView : public DtBaseEventView 00088 { 00089 00090 public: 00091 00093 DtEventView(DtDe& de); 00094 00096 virtual ~DtEventView(); 00097 00099 boost::signal<void (const EventType&)> signal_eventTriggered; 00100 00101 protected: 00102 00105 void onEventTriggered(const EventType& entry); 00106 00108 void connectToEventTriggeredSignal(); 00109 00111 void disconnectFromEventTriggeredSignal(); 00112 00113 DtDe& myDe; 00114 }; 00115 00116 } 00117 00118 #define DtEventView_INL_ 00119 #include <vrvCore/DtEventView.inl> 00120 #undef DtEventView_INL_ 00121 00122 #endif 00123