![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2007 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: vrfObjPlanMgr.h,v $ $Revision: 1.8 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef vrfObjPlanMgr_H_ 00013 #define vrfObjPlanMgr_H_ 00014 00015 #include "vrfobjcore/vrfObjPlanMgrFact.h" 00016 00017 class DtPlan; 00018 class DtPlanExecutor; 00019 class DtSimBlock; 00020 class DtSimCondExpr; 00021 class DtSimMessage; 00022 class DtSimulationAddress; 00023 class DtVrfObjectMessage; 00024 class DtIfPlan; 00025 class DtTaskMessage; 00026 00035 00036 #include "vrfobjcore/vrfobjcoreDefines.h" 00037 class DT_DLL_vrfobjcore DtVrfObjectPlanManager 00038 { 00039 public: 00040 00042 DtVrfObjectPlanManager(DtVrfObject* vrfObject); 00043 00045 virtual ~DtVrfObjectPlanManager(); 00046 00048 virtual bool init(); 00049 00052 virtual void tick(); 00053 00056 virtual DtPlanExecutor* createPlanExecutor(); 00057 00062 virtual DtPlan* createAndInitPlan(); 00063 00065 virtual DtPlan* plan(); 00066 00069 virtual void setPlan(DtPlan* plan); 00070 00074 virtual bool sendPlan(); 00075 00078 virtual bool sendPlanStatement(int statementId, 00079 const DtSimulationAddress& address) const; 00080 00085 virtual void updatePlanNames(); 00086 00088 virtual void updatePlanNames(DtSimBlock* block); 00089 00092 virtual void updatePlanNames(DtSimCondExpr* condExpr); 00093 00095 virtual void setTaskIssuedFromPlan(bool taskIssuedFromPlan); 00096 00109 virtual void taskExecuted(const DtTaskMessage& msg, bool abandonPlan = true); 00110 00112 static DtVrfObjectPlanManagerFactory* factory(); 00114 static void setFactory(DtVrfObjectPlanManagerFactory* factory); 00115 00118 virtual void processSetPlan(DtSimMessage* msg); 00119 virtual void processSetPlan(DtIfPlan* msgData); 00120 00125 virtual void processRequestPlan(const DtSimMessage* msg); 00126 00129 virtual void processAbandonPlan(DtSimMessage* msg); 00130 00133 virtual void processRestartPlan(DtSimMessage* msg); 00134 00137 static void currentStatementChangedCallback(const DtPlan& plan, 00138 void* usrData); 00141 virtual void processCurrentStatementChanged(const DtPlan& plan); 00142 00145 static DtVrfObjectPlanManager* creator(DtVrfObject* vrfObject); 00146 00151 static DtVrfObjectPlanManager* createVrfObjectPlanManager( 00152 const DtString& type, DtVrfObject* vrfObject); 00153 00157 virtual bool hasPlan() const; 00158 00160 virtual bool executingPlan() const; 00161 00164 virtual void notifyTaskCompletion(int taskId); 00165 00166 protected: 00167 00169 DtVrfObjectPlanManager(); 00170 00172 DtVrfObjectPlanManager(const DtVrfObjectPlanManager& orig); 00173 00175 DtVrfObjectPlanManager& operator=(const DtVrfObjectPlanManager& orig); 00176 00177 protected: 00178 00179 DtPlan* myPlan; 00180 DtPlanExecutor* myPlanExecutor; 00181 DtVrfObject* myVrfObject; 00182 bool myTaskIssuedFromPlan; 00183 bool myPlanQueuedForAbandonment; 00184 00186 static DtVrfObjectPlanManagerFactory* theFactory; 00187 }; 00188 00189 #endif 00190