VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtSimData.h
Go to the documentation of this file.
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 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)