![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtSimData.h,v $ $Revision: 1.12 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 #include <vrvCore/vrvCore.h> 00015 #include <vrvCore/DtUniqueID.h> 00016 #include <boost/unordered_map.hpp> 00017 #include <boost/signal.hpp> 00018 00019 namespace makVrv 00020 { 00021 class DtDe; 00022 class DtSimEntry; 00023 class DtSimObjectEntry; 00024 class DtSimEventEntry; 00025 class DtVirtualBaseClass; 00026 struct DtSimState; 00027 00028 00034 class DT_DLL_VRVCORE DtSimData 00035 { 00036 00037 public: 00038 00040 typedef boost::unordered_map<DtUniqueID, DtSimEntry*> SimEntryMap; 00041 00043 typedef void (*SignalerAccessorFunction)(DtSimData&); 00044 00045 00047 DtSimData(DtDe& de); 00048 00050 ~DtSimData(); 00051 00053 void addEntry(DtUniqueID id); 00054 00056 void removeEntry(DtUniqueID id); 00057 00060 bool addStateToSimEntry(DtUniqueID id, DtSimState* state); 00061 00064 bool removeStateFromSimEntry(DtUniqueID id, DtSimState* state); 00065 00067 const DtSimEntry* findSimEntry(DtUniqueID id) const; 00068 00070 DtSimEntry* findSimEntry(DtUniqueID id); 00071 00073 const SimEntryMap& simEntryMap(); 00074 00077 void addStateToSimEvent(DtSimState* state); 00078 00082 void signalEvent(); 00083 00085 void addEventSignaler(SignalerAccessorFunction accessor, 00086 DtVirtualBaseClass* instance); 00087 00089 DtVirtualBaseClass* findEventSignaler(SignalerAccessorFunction accessor); 00090 00092 boost::signal<void (DtSimObjectEntry&)> signal_simObjectEntryAdded; 00093 00095 boost::signal<void (DtSimObjectEntry&)> signal_simObjectEntryToBeRemoved; 00096 00098 boost::signal<void (DtSimObjectEntry&)> signal_simStateAdded; 00099 00102 boost::signal<void (DtSimObjectEntry&)> signal_simStateToBeRemoved; 00103 00105 boost::signal<void (DtSimEventEntry&)> signal_simEventTriggered; 00106 00107 protected: 00108 00110 DtSimEventEntry& entry(); 00111 00112 protected: 00113 00114 typedef boost::unordered_map<SignalerAccessorFunction, 00115 DtVirtualBaseClass*> SignalerMap; 00116 00117 DtDe& myDe; 00118 SimEntryMap mySimEntryMap; 00119 DtSimEventEntry* myEventEntry; 00120 SignalerMap myEventSignalers; 00121 00122 }; 00123 }