VR-Forces 4.1.1 Class Documentation
plan.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 1999 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: plan.h,v $ $Revision: 1.50 $ $State: Exp $
7 *******************************************************************************/
8 
11 
12 #ifndef DtPlan_H_
13 #define DtPlan_H_
14 
15 class DtPlan;
16 
17 #include <vlutil/vlString.h>
18 #include <vlutil/vlList.h>
19 #include "vrfutil/rwString.h"
20 #include "vrfutil/rdrWritr.h"
21 #include "vrfplan/stmtIndex.h"
22 #include <vl/hostStructs.h>
23 #include "vrfutil/rwBoolean.h"
24 #include "vrfutil/rwIntegerList.h"
27 #include "vrfutil/callbackList.h"
28 #include "vrfplan/vrfplanDefines.h"
29 
30 class DtStatement;
31 class DtSimTask;
32 class DtSetDataRequest;
34 class DtSimTrigger;
35 class DtSimBlock;
36 class DtSimCommand;
37 class DtPlanBlock;
38 class DtWhenBlock;
39 class DtSimMessage;
42 class DtPlanExecutor;
43 class DtSimCondExpr;
45 
48 {
49 public:
50  DtPlanStatus();
51  bool operator==(const DtPlanStatus& orig) const;
52  bool operator!=(const DtPlanStatus& orig) const;
53 
54 
56  bool isComplete;
59 };
60 
62  (const DtPlan& plan, void* usr);
63 
64 typedef void (*DtPlanCallbackFcn)
65  (const DtString& name, const DtList& statements, bool append,
66  void* usr);
67 
68 typedef void (*DtPlanStatementCallbackFcn)
69  (const DtString& name, DtPlanStatus planStatus, void* usr);
70 
71 typedef void (*DtPlanCompleteCallbackFcn)
72  (const DtString& name, void* usr);
73 
75  (DtIfMultiplePlanResponse*, void* usr);
76 
86 {
87 public:
88 
95  DtPlan();
96 
102  DtPlan(const DtString& planName,
103  DtPlanExecutor* planExecutor,
104  const DtString& name = "Plan",
105  DtReaderWriterRegistry* parentRegistry = NULL);
106 
110 
114  DtPlan(const DtString& name, const DtString& planName,
115  const DtPlan& orig, DtReaderWriterRegistry* parentRegistry = NULL);
116 
118  virtual ~DtPlan();
119 
121  virtual void init();
122 
125  virtual DtPlan* clone(const DtString& name,
126  const DtString& planName,
127  DtReaderWriterRegistry* parentRegistry = NULL) const;
128 
133  DtPlan& operator=(const DtPlan& orig);
134 
136  virtual bool operator==(const DtPlan& orig) const;
137 
138  virtual DtString planName() const;
139  virtual void setPlanName(const DtString& name);
140 
142  virtual const DtString& objectName() const;
143  virtual void setObjectName(const DtString& objectName);
145  virtual bool objectNameSpecified() const;
146 
148  //virtual DtSimManager* simManager() const;
149 
150  virtual void setPlanExecutor(DtPlanExecutor* planExecutor);
151  virtual DtPlanExecutor* planExecutor() const;
152 
155  virtual void enableExecutionState();
156  virtual void disableExecutionState();
157  virtual bool executionState() const;
158 
161  virtual void awaitingTask();
162 
164  virtual bool isAwatingTask() const;
165 
171  virtual void pushExecutionStack();
172 
180  virtual void popExecutionStack(bool forceStep = false);
181 
184  virtual void executeTrigger(DtWhenBlock* whenBlock);
185 
187  virtual void executeBlock(DtSimBlock* block);
188 
190  virtual bool taskRequestPending() const;
191 
193  virtual void setTaskRequestPending(bool newValue = true);
194 
198  virtual bool executeTask(const DtSimTask& taskToSend) const;
199 
203  virtual bool executeSetDataRequest(
204  const DtSetDataRequest& setToSend) const;
205 
209  virtual bool executeSimCommand(const DtSimCommand& command) const;
210 
213  virtual bool evaluateConditional(const DtSimCondExpr* condExpr) const;
214 
216  virtual DtStmtIndex firstStmt() const;
217 
219  virtual DtPlanBlock* mainBlock() const;
220 
222  virtual bool isEmpty() const;
223 
225  virtual DtList* triggerList();
226  virtual const DtList* triggerList() const;
227 
229  virtual void addTrigger(DtSimTrigger* trigger);
231  virtual void removeTrigger(DtSimTrigger* trigger);
232 
234  virtual DtList* executionStack();
235  virtual const DtList* executionStack() const;
236 
239  virtual bool validatePlan();
240 
244  virtual const DtStmtIndex& currentStmt() const;
246  virtual void setCurrentStmt(const DtStmtIndex& nextStatement);
247 
249  virtual void setCurrentStatementExecutionId(int id);
250 
252  virtual bool isComplete() const;
255  virtual void setIsComplete(bool completeFlag = true);
256 
259  virtual bool isAbandoned() const;
262  virtual void setIsAbandoned(bool v);
263 
265  virtual bool isExecuting() const;
266 
268  virtual DtPlanStatus currentStatus() const;
269 
271  virtual void reset();
272 
277  virtual void abandonPlan(bool sendWaitTask);
278 
282  virtual void restartPlan(bool sendWaitTask = true);
283 
288  virtual bool translateIndex(DtStmtIndex& stmtIndex) const;
289 
293  virtual void translateIndices(DtList& stmtIndexList) const;
294 
296  virtual void tick();
297 
301  virtual void mergeEditedPlanWith(const DtPlan& oldPlan);
302 
305  virtual DtRecursiveSimBlockIterator* spawnRecursiveIterator() const;
306 
310  virtual void putSelf(FILE *fp, int indentLevel = 0,
311  bool writeUnspecified = false, const DtFilename& path = DtReaderWriter::appPath());
312 
316  virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath,
317  const DtVariableBindingsList& variableBindings);
318 
321  virtual void addStatementChangedCallback(
322  DtCurrentStatementChangedCallbackFcn fcn, void* usrData);
323 
325  virtual void removeStatementChangedCallback(
326  DtCurrentStatementChangedCallbackFcn fcn, void* usrData);
327 
328 protected:
329 
331  virtual void processAwaitingTask();
332 
335  virtual void createMainBlock();
336 
340  virtual void copyMainBlock(const DtPlan& otherPlan);
341 
345  virtual void copyAndTranslateExecutionStack(const DtPlan& otherPlan);
346 
350  virtual void copyAndTranslateTriggers(const DtPlan& otherPlan);
351 
354  virtual void curStmtChanged();
355 
358  virtual void continuePlan();
359 
363  virtual void stepStatement();
364 
368  virtual void executeStatement();
369 
372  virtual void clearTriggerList();
373 
377  virtual void clearExecutionStack();
378 
380  virtual void emtpyExecutionStack();
381 
383 
384 
385  virtual void mapExecutionStackToRwExecutionStack(DtRwPlanExecutionStack& rwExecutionStack);
386  virtual void mapPendingTriggersToPendingTriggerDataList();
388 
390 
391 
392  virtual void mapOldExecutionCursorStackToExecutionStack(const DtRwIntegerList& executionCursorStack);
394  virtual void mapRwExecutionStackToExecutionStack(const DtRwPlanExecutionStack& rwExecutionStack);
395  virtual void mapPendingTriggerDataToPendingTriggers();
397 
400  virtual int statementIdToCursor(DtStmtIdType statementId);
401  virtual DtStmtIdType cursorToStatementId(int cursor);
402 
405  virtual DtSimStatement* lookupStatementByCursor(int cursor);
406 
407 protected:
408 
415 
419 
425 
429 
433 
436 
439  //DtList myStatementChangedCbs;
440 
444 
447 
451 
454 
456 
458 
460 
463 };
464 
465 namespace DtBufferSerialize
466 {
469  DT_DLL_vrfplan int getSize(const DtPlan& contentPtr);
470 
474  DT_DLL_vrfplan char *encode(const DtPlan& adminContentPtr, char *buffer);
475 
480  DT_DLL_vrfplan const char *decode(DtPlan& adminContentPtr, const char *buffer);
481 }
482 
483 
484 #endif
485 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)