VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
triggerStmt.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2018 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
9 #pragma once
10 
11 #include <readerWriter/rwString.h>
12 #include <readerWriter/rwBoolean.h>
13 #include "vrfutil/simCondExpr.h"
14 #include "vrfutil/rwUUID.h"
15 #include "vrfplan/rwCondExpr.h"
17 #include <tbb/spin_mutex.h>
18 
19 #include <boost/unordered_map.hpp>
20 #include <set>
21 
22 const char DtWhenStmtTypeName[] = "When";
23 
24 class DtRwCondExpr;
25 class DtTriggerBlock;
26 
36 #include "vrfplan/vrfplanDefines.h"
37 
38 class DtTriggerStmt;
39 
41 {
42 public:
46 
49  void setMarkingTextFromTriggerStatement(DtTriggerStmt*);
50  void addReference();
51  void removeReference();
52  bool hasReference() { return (myReferenceCount > 0); };
53 
54  virtual DtString markingText() override;
55  virtual DtUUIDMarkingTextProvider* clone() const override;
56 
57 protected:
59  tbb::spin_mutex myMutex;
60  int myReferenceCount = 0;
61 };
62 
64 {
65 public:
66 
68  DtTriggerStmt(DtReaderWriterRegistry* parentRegistry = NULL);
69 
71  DtTriggerStmt(const DtTriggerStmt& orig,
72  DtReaderWriterRegistry* parentRegistry = NULL);
73 
75  virtual ~DtTriggerStmt() override;
76 
79 
81 
82  virtual DtSimStatement* clone(DtReaderWriterRegistry* parentRegistry = NULL) const override;
83 
85  virtual int type() const override;
86 
89  virtual void execute(DtPlan& planContext) override;
90 
92  virtual int subBlockCount() const override;
94  virtual DtSimBlock* subBlock(int index) override;
95 
105  virtual DtString stringRep(int subBlockIndex = DtSR_STMT) const override;
106 
110  virtual void exitFromTrigger(DtPlan& planContext);
111 
112  virtual const DtUUID& triggerUUID() const;
113  virtual void setTriggerUUID(const DtUUID&);
114 
116  virtual DtString triggerName() const;
117 
118  virtual const DtSimCondExpr* condExpr() const override;
119  virtual void setCondExpr(const DtSimCondExpr* arg) override;
120 
126  virtual const DtString& option() const;
128  virtual void setOption(const DtString& arg);
129 
130  virtual DtTriggerBlock* triggerBlock() const;
131  virtual void setTriggerBlock(DtTriggerBlock* arg);
132 
134  virtual void setReregisterTrigger(bool);
135  virtual bool reregisterTrigger() const;
136 
143  virtual int netRepSize() const override;
144 
146  virtual bool setFromNet(const char* contentBuffer, unsigned contentSize) override;
147 
159  virtual bool setToNet() override;
160 
162  virtual void upgradeTriggerUUID(const boost::unordered_map<DtUUID, DtUUID>&) override;
163 
165  virtual void reset() override;
166 
167  virtual void setStatementDescription(const DtString& d) override;
168 
169 protected:
172  virtual void addTriggerMarkingTextMapping();
173  virtual void removeTriggerMarkingTextMapping();
174  virtual void setupMarkingTextForTriggerStatement();
175 
176  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
177  const DtVariableBindingsList& variableBindings) override;
178 
180  static DtString nextDefaultTriggerMarkingText();
181 
182 public:
183 
184  static DtSimStatement * creator(DtReaderWriterRegistry* parentRegistry = NULL);
185 
186 protected:
187 
188  virtual bool compare(DtSimStatement*) override;
189 
190 protected:
196 
197  typedef boost::unordered_map<DtUUID, DtTriggerStatementUUIDMarkingTextProvider*> NamedTriggers;
198 
200 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
virtual void setCondExpr(const DtSimCondExpr *arg)=0
Sets the conditional expression used to evaluate the wait until.
virtual DtSimStatement * clone(DtReaderWriterRegistry *parentRegistry=NULL) const =0
virtual copy constructor A typical clone function. It must be overridden by derived classes to return...
virtual int subBlockCount() const
Get the number of blocks nested inside this statement.
virtual void setStatementDescription(const DtString &)
If supported for display a description of this statement that can be used for display.
DtString myMarkingText
Definition: triggerStmt.h:58
static NamedTriggers theNamedTriggers
Definition: triggerStmt.h:199
Definition: triggerStmt.h:40
virtual void execute(DtPlan &planContext)=0
Execute the current statement and make any changes to the Plan state as appropriate. Tells the statement to activate its own behavior. Each kind of statement implements this function differently. It is passed a reference to the executing DtPlan object as a “context of execution”.
virtual void reset() override
Called when the plan is reset, will iterate over all statements to reset as well. ...
Description: Readable, Writable DtString Variable substitutions are done on this object when it is re...
Definition: rwString.h:20
DtRwBoolean myReregisterTrigger
Definition: triggerStmt.h:195
Definition: readerWriterRegistry.h:39
Contains the DtUUID class declaration.
uuid class
Definition: rwUUID.h:26
class DtSimBlock:
Definition: simBlock.h:27
tbb::spin_mutex myMutex
Definition: triggerStmt.h:59
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
class DtSimConditionalStatement:
Definition: simConditionalStatement.h:25
DtTriggerBlock * myBlock
Definition: triggerStmt.h:194
virtual DtSimBlock * subBlock(int index)
Get a pointer to any particular block nested inside this statement. Sub-blocks are indexed as C array...
DtRwCondExpr myCondExpr
Definition: triggerStmt.h:192
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
virtual bool setFromNet(const char *contentBuffer, unsigned contentSize)
Extracts statement Id from buffer. First 16 bytes are a DtNetSimStatement structure. Derived class data should immediately follow this. Derived classes should call down to this one to make sure statement id gets set.
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...
class DtTriggerBlock:
Definition: triggerBlock.h:26
virtual int netRepSize() const
Returns sizeof(DtNetSimStatement). Derived classes should add this size to the size of their net repr...
class DtPlan:
Definition: plan.h:92
DtSimCondExpr is an abstract base class representing various Conditional Expressions used by the Plan...
Definition: simCondExpr.h:53
DtRwUUID myTriggerUUID
Definition: triggerStmt.h:191
Description: Readable, Writable bool.
Definition: rwBoolean.h:26
class DtRwCondExpr:
Definition: rwCondExpr.h:26
class DtSimStatement:
Definition: simStatement.h:38
virtual bool setToNet()
Casts myNetRep to DtNetSimStatement* and fills in structure. Derived classes should always call down ...
virtual DtString markingText()=0
#define DT_DLL_vrfplan
This file is used to determine how to build.
Definition: vrfplanDefines.h:28
const char DtWhenStmtTypeName[]
Definition: triggerStmt.h:22
virtual DtUUIDMarkingTextProvider * clone() const =0
Definition: triggerStmt.h:63
bool hasReference()
Definition: triggerStmt.h:52
virtual void upgradeTriggerUUID(const boost::unordered_map< DtUUID, DtUUID > &)
For those statements that need to, map from the old to new trigger UUID.
boost::unordered_map< DtUUID, DtTriggerStatementUUIDMarkingTextProvider * > NamedTriggers
Definition: triggerStmt.h:197
virtual const DtSimCondExpr * condExpr() const =0
Returns the conditional expression used to evaluate the wait until.
DtSimStatement & operator=(const DtSimStatement &orig)
Assignment operator (protected because this is an abstract base class).
To allow for faster marking text lookups, the DtUUIDMarkingTextProvider class wraps an object that wi...
Definition: uuid.h:30
DtRwString myOption
Definition: triggerStmt.h:193
virtual int type() const =0
Returns the type of statement Type (defined in simStmtTypes.h)
virtual bool compare(DtSimStatement *)
Called from isSameStatement. Compares net reps to see if they are the same. Override to do different ...
virtual DtString stringRep(int subBlockIndex=DtSR_STMT) const =0
Get a readable string representation of this statement.

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)