13 #include <vlutil/vlString.h>
14 #include <vlutil/vlList.h>
18 #include <vl/hostStructs.h>
71 (
const DtUUID& name,
const std::vector<DtSimStatement*>& statements,
bool append,
98 IsQuickLaunch = 0x00000001,
99 ShowOnQuickLaunchToolbar = 0x00000002,
100 Launched = 0x00000004
133 virtual ~
DtPlan()
override;
139 virtual void addVariables();
156 virtual const DtUUID& planName()
const;
157 virtual void setPlanName(
const DtUUID& name);
158 virtual bool planNameSpecified()
const;
164 virtual void setIsQuickLaunch(
bool);
165 virtual bool isQuickLaunch()
const;
168 virtual void setShowOnQuickLaunchToolbar(
bool);
169 virtual bool showOnQuickLaunchToolbar()
const;
174 virtual void setIsLaunched(
bool);
175 virtual bool isLaunched()
const;
178 virtual void setQuickLaunchIcon(
const DtString&);
179 virtual const DtString& quickLaunchIcon()
const;
182 virtual void setOrdinal(
int);
183 virtual int ordinal()
const;
186 virtual void setPlanSummary(
const DtString&);
187 virtual const DtString& planSummary()
const;
197 virtual void enableExecutionState();
198 virtual void disableExecutionState();
199 virtual bool executionState()
const;
203 virtual void awaitingTask();
206 virtual bool isAwatingTask()
const;
216 virtual void removeTrigger(
const DtUUID&);
219 virtual void renameTrigger(
const DtUUID&,
const DtString& newName);
236 virtual void pushExecutionStack();
240 virtual void suspendExecutionStack(
bool suspendedFromTrigger =
false);
249 virtual void popExecutionStack(
bool forceStep =
false);
259 virtual bool taskRequestPending()
const;
262 virtual void setTaskRequestPending(
bool newValue =
true);
271 virtual void clearVariables();
282 virtual bool executeTask(
const DtSimTask& taskToSend)
const;
287 virtual bool executeSetDataRequest(
303 virtual bool evaluateConditional(
const DtSimCondExpr* condExpr)
const;
312 virtual void empty();
315 virtual bool isEmpty()
const;
318 virtual DtList* triggerList();
319 virtual const DtList* triggerList()
const;
322 virtual void addTriggerToExecute(
DtSimTrigger* trigger);
324 virtual void removeTriggerFromPendingExecution(
DtSimTrigger* trigger);
327 virtual DtList* executionStack();
328 virtual const DtList* executionStack()
const;
332 virtual bool validatePlan();
339 virtual void setCurrentStmt(
const DtStmtIndex& nextStatement);
342 virtual void setCurrentStatementExecutionId(
int id);
345 virtual bool isComplete()
const;
349 virtual void setIsComplete(
bool completeFlag =
true);
353 virtual void setLastStatementExecuted(
bool);
354 virtual bool lastStatementExecuted()
const;
359 virtual bool isAbandoned()
const;
362 virtual void setIsAbandoned(
bool v);
365 virtual bool isExecuting()
const;
371 virtual void reset()
override;
374 virtual void stopCurrentTask();
380 virtual void abandonPlan(
bool sendWaitTask);
385 virtual void restartPlan(
bool sendWaitTask =
true);
391 virtual bool translateIndex(
DtStmtIndex& stmtIndex)
const;
396 virtual void translateIndices(DtList& stmtIndexList)
const;
404 virtual void mergeEditedPlanWith(
const DtPlan& oldPlan);
413 virtual void putSelf(std::string& fp,
int indentLevel = 0,
bool writeUnspecified =
false,
424 virtual void addStatementChangedCallback(
428 virtual void removeStatementChangedCallback(
432 virtual void addTickCallback(
436 virtual void removeTickCallback(
443 virtual void pushExecutingTrigger(
int);
444 virtual void popExecutingTrigger();
445 virtual int executingTriggerStatementId()
const;
448 virtual std::vector<int> executingTriggerStatementIds()
const;
451 virtual DtUUID executingTriggerName()
const;
454 virtual std::vector<DtUUID> executingTriggerNames()
const;
457 virtual std::vector<DtUUID> registeredTriggerNames()
const;
460 virtual bool triggerIsRunning(
const DtUUID&)
const;
463 virtual bool triggerIsRegistered(
const DtUUID&)
const;
466 virtual void removeScheduledTriggers(
const DtUUID&);
469 virtual void mapRegisteredTriggersToTriggerStatements();
477 virtual void setContinuePlan(
bool);
483 virtual std::vector<DtReaderWriter*> substituteVariablesIn(
DtReaderWriter*)
const;
486 virtual std::vector<DtReaderWriter*> substitutedValues(
const DtReaderWriter*)
const;
495 virtual void removeTopExecutionStack();
503 virtual void invokeSkipTaskCallbacks();
508 virtual void processAwaitingTask();
512 virtual void createMainBlock();
517 virtual void copyMainBlock(
const DtPlan& otherPlan);
522 virtual void copyAndTranslateExecutionStack(
const DtPlan& otherPlan);
527 virtual void copyAndTranslateTriggers(
const DtPlan& otherPlan);
531 virtual void curStmtChanged();
535 virtual void continuePlan();
543 virtual void stepStatement(
bool forceStep =
false);
548 virtual void executeStatement();
552 virtual void clearTriggerList();
557 virtual void clearExecutionStack();
560 virtual void emtpyExecutionStack();
566 virtual void mapPendingTriggersToPendingTriggerDataList();
571 virtual void mapOldExecutionCursorStackToExecutionStack(
const DtRwIntegerList& executionCursorStack);
575 virtual void mapPendingTriggerDataToPendingTriggers();
580 virtual int statementIdToCursor(
DtStmtIdType statementId);
586 virtual void createTriggersFromWhenBlocks();
587 virtual void createTriggersFromWhenBlocks(
DtSimBlock*);
595 virtual void mapExecutionStackToExecutingTriggers();
686 namespace DtBufferSerialize
bool operator==(const DtReaderWriter &) const
Equivalence operator.
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtPlanStatus myLastSentStatus
The status that was last sent out though the curretStatement callbacks.
Definition: plan.h:669
class DtPlanBlock:
Definition: planBlock.h:22
An abstract interface for the execution of a plan. This class defines the interface that is used to c...
Definition: planExecutor.h:32
DtList myExecutionStack
The top of the execution stack is the Plan's current statement (fetched with currentStmt()). Whenever a retasking trigger fires, it pushes this stack down so that the Plan can pick up where it left off at the end of the trigger.
Definition: plan.h:614
DT_DLL_readerWriter int getSize(const DtString &val)
The number of bytes required to encode the value.
std::shared_ptr< DtSimCommandContext > DtSimCommandContextPtr
Definition: simCommandStmt.h:28
DtPlanBlock * myMainBlock
The main Block is the top-level Block of the plan and is the only Block that is considered to be "own...
Definition: plan.h:608
DtRwBoolean myTaskRequestPending
The TaskRequestPending flag is set to true when an Entity requests a new task, and is cleared when a ...
Definition: plan.h:604
DtList myPendingTriggers
A list of all registered DtSimTriggers.
Definition: plan.h:629
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
Definition: readerWriter.h:85
Description: Readable, Writable DtString Variable substitutions are done on this object when it is re...
Definition: rwString.h:20
class DtStmtIndex:
Definition: stmtIndex.h:24
Definition: readerWriterRegistry.h:39
Contains the DtUUID class declaration.
bool isAbandoned
Definition: plan.h:58
const DtRwTriggersList & triggers() const
Returns plans triggers.
Definition: plan.h:228
DtRwTriggersList myTriggers
List of all possible triggers in the plan. This will be a collection of when statements that represen...
Definition: plan.h:652
class DtRwTriggerDataList:
Definition: rwTriggerDataList.h:27
DtRwInt myOrdinal
Definition: plan.h:675
Iterator for iterating over a DtRwIntrusiveList of DtSimStatements and all its descendants (as repres...
Definition: recursiveSimBlockIterator.h:32
uuid class
Definition: rwUUID.h:26
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
virtual void reset()
For those reader/writer items that support it, resets the reader/writer value to original state Defau...
class DtSimBlock:
Definition: simBlock.h:27
DtSetDataRequest is an abstract base class from which real setDataRequests can derive. It manages the read/write capability; derived classes need only use and register read/writatble data types for derived information.
Definition: setDataRequest.h:41
Instances of DtRwIntegerList are lists of readable, writeable integers (DtRwInts). The list contains pointers to DtRwInt instances.
Definition: rwIntegerList.h:19
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
DtPlanExecutor * myPlanExecutor
Definition: plan.h:666
bool myContinuePlan
Definition: plan.h:664
File: simMsg.h.
Definition: simMessage.h:35
Description: Readable, Writable int.
Definition: rwInt.h:25
std::vector< int > executingTriggerStatementIds
Definition: plan.h:52
void(* DtPlanCallbackFcn)(const DtUUID &name, const std::vector< DtSimStatement * > &statements, bool append, void *usr)
Definition: plan.h:71
This class works just as DtCalllbackTable, but manages callbacks that have no arguments, and therefore don't fit in the template defined by DtCallbackList.
Definition: noArgumentCallbackList.h:151
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
bool isExecuting
Definition: plan.h:57
DtRwUUID myPlanName
Definition: plan.h:662
void(* DtStmtTickCallbackFcn)(DtPlan &plan, void *usr)
Definition: plan.h:65
DtSimCommand is an abstract base class from which commands can derive. It manages the read/write capa...
Definition: simCommand.h:32
DT_DLL_readerWriter char * encode(const DtFilename &val, char *buffer)
Serializes the provided value val into buffer. buffer must have at least the number of bytes returned...
bool myExecutionIsEnabled
Flag indication whether execution is enabled (can we start or advance through plan statements...
Definition: plan.h:656
DtCallbackList< const DtPlan & > myStatementChangedCbs
A list of all the DtCurrentStatementChangedCallbackFcn callbacks.
Definition: plan.h:632
DtNoArgumentCallbackList myStatementSkipTaskCbs
A list of all the DtStmtTickCallbackFcn callbacks.
Definition: plan.h:640
virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
Top level to read itself from an input stream. searchPath is passed down to all DtReaderWriter member...
void(* DtMultiplePlanRequestCallbackFcn)(DtIfMultiplePlanResponse *, void *usr)
Definition: plan.h:81
virtual void putSelf(std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
Top level call to write itself to file. If write unspecified is true, will write entries that are uns...
class DtTriggerBlock:
Definition: triggerBlock.h:26
class DtPlan:
Definition: plan.h:92
void(* DtPlanStatementCallbackFcn)(const DtUUID &name, DtPlanStatus planStatus, void *usr)
Definition: plan.h:75
DtSimCondExpr is an abstract base class representing various Conditional Expressions used by the Plan...
Definition: simCondExpr.h:53
bool myWantsExecutionStateEnabled
Definition: plan.h:657
Small container class that holds the status of a running DtPlan.
Definition: plan.h:45
static const DtVariableBindingsList & nullVariableReference()
class DtIfMultiplePlanResponse:
Definition: ifMultiplePlanResponse.h:32
DtCallbackList< DtPlan & > myStatementTickCbs
A list of all the DtTickCallbackFcn callbacks.
Definition: plan.h:636
DtRwBoolean myLastStatementExecuted
myLastStatementExecuted makes sure that nothing will get executed in the plan after triggers have bee...
Definition: plan.h:622
QuickLaunchFlags
Definition: plan.h:95
Description: Readable, Writable bool.
Definition: rwBoolean.h:26
class DtSimTrigger:
Definition: simTrigger.h:28
const DtRwVariableBindings & variables() const
Returns plan variables.
Definition: plan.h:265
The DtRwPlanVariable is a base class that minimally implements a plan variable. Subclasses will imple...
Definition: rwPlanVariable.h:18
class DtSimStatement:
Definition: simStatement.h:38
std::vector< DtUUID > registeredTriggerNames
Definition: plan.h:54
DtRwTriggersList & triggers()
Definition: plan.h:229
Definition: rwTemplatedList.h:34
DtSimTask is an abstract base class from which real tasks can derive. It manages the read/write capab...
Definition: simTask.h:30
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtRwString myPlanSummary
Plan summary. Currently used by synchronization matrices only.
Definition: plan.h:679
void(* DtCurrentStatementChangedCallbackFcn)(const DtPlan &plan, void *usr)
Definition: plan.h:62
DtRwIntegerList myExecutingTriggers
Definition: plan.h:681
void(* DtSkipTaskCallbackFcn)(void *usr)
Definition: plan.h:68
DtRwBoolean myAbandoned
True if this plan has been abandoned. If the plan is abandoned, it will also show as "complete"...
Definition: plan.h:626
DtRwVariableBindings myPlanVariables
Definition: plan.h:683
#define DT_DLL_vrfplan
This file is used to determine how to build.
Definition: vrfplanDefines.h:28
const DtReaderWriter & operator=(const DtReaderWriter &orig)
assignment operator
DT_DLL_terrainCS bool operator!=(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
DT_DLL_readerWriter const char * decode(DtString &val, const char *buffer)
Decodes a value from buffer and places the result in val of the type specified by val...
Definition: triggerStmt.h:63
void(* DtPlanCompleteCallbackFcn)(const DtUUID &name, void *usr)
Definition: plan.h:78
DtRwInt myQuickLaunchFlags
Additional data used to indicate if this is a quick launch plan and the icon associated with it...
Definition: plan.h:673
bool myAwaitingTaskFlag
Flag indicating we've received an awaiting task request.
Definition: plan.h:660
std::vector< DtUUID > executingTriggerNames
Definition: plan.h:53
DtRwTriggerDataList myPendingTriggerDataList
Reader-writer members used to hold checkpoint information about the plan. These variables only contai...
Definition: plan.h:648
static const DtFilename & appPath()
Gets the current working directory. The first time this accessor is called, it determines the current...
int currentStatementId
Definition: plan.h:55
DtRwBoolean myIsComplete
myIsComplete Disables awaitingTask() and causes it to emit continuous Wait tasks. ...
Definition: plan.h:618
DtRwString myQuickLaunchIcon
Definition: plan.h:674
Instances of DtRwTriggersList are lists of readable, writeable when statements (triggers) The list co...
Definition: rwTriggersList.h:21
bool isComplete
Definition: plan.h:56