VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptedTaskTask.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MaK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
12 #include "vrftasks/simTask.h"
15 #include <readerWriter/rwString.h>
19 
21 
22 class DtUUID;
24 class DtRwVectorList;
25 
38 {
39 public:
41  {
42  public:
43  virtual DtString stringRep(const DtScriptedTask&) const = 0;
44  virtual DtString stringRep(const DtString& scriptId, const DtRwVariableBindings& variables, const DtRwVariableBindings& variableDataTypes) const = 0;
45  };
46 
48  virtual ~DtScriptedTask() {};
49 
51  virtual bool init() = 0;
52 
54  virtual const DtString& scriptId() const = 0;
55  virtual void setScriptId(const DtString&) = 0;
56 
58  virtual DtRwVariableBindings& variables() = 0;
59  virtual const DtRwVariableBindings& variables() const = 0;
60 
63  virtual DtRwVariableBindings& variableDataTypes() = 0;
64  virtual const DtRwVariableBindings& variableDataTypes() const = 0;
65 
68 
71  virtual int netRepSize() const = 0;
72 
74  virtual bool setFromNet(const char* contentBuffer,
75  unsigned contentSize) = 0;
76 
77  virtual char* setToNet(char*) = 0;
79 
80  static void setScriptedTaskFormatter(ScriptedTaskFormatter*);
81  static ScriptedTaskFormatter* scriptedTaskFormatter();
82 
83  virtual DtString allVariablesStringRep(const DtString& scriptName = "") const = 0;
84 
85 public:
90  virtual void setValue(const DtString& variableName, bool, const char* type = DtScriptedTaskCheckBoxVariable);
91  virtual void setValue(const DtString& variableName, int, const char* type = DtScriptedTaskIntegerVariable);
92  virtual void setValue(const DtString& variableName, double, const char* type = DtScriptedTaskDoubleVariable);
93  virtual void setValue(const DtString& variableName, const std::string&, const char* type = DtScriptedTaskStringVariable);
94  virtual void setValue(const DtString& variableName, const DtString&, const char* type = DtScriptedTaskStringVariable);
95  virtual void setValue(const DtString& variableName, const char*, const char* type = DtScriptedTaskStringVariable);
96  virtual void setValue(const DtString& variableName, const DtUUID&, const char* type = DtScriptedTaskSimulationObjectVariable);
97  virtual void setValue(const DtString& variableName, const DtVector&, const char* type = DtScriptedTaskLocationVariable);
98  virtual void setValue(const DtString& variableName, const DtEntityType&, const char* type = DtScriptedTaskEntityTypeVariable);
99  virtual void setValue(const DtString& variableName, const DtTaitBryan&, const char* type = DtScriptedTaskOrientationVariable);
100  virtual void setValue(const DtString& variableName, const DtRwOffsetVectorList&);
101  virtual void setValue(const DtString& variableName, const DtRwVectorList&);
102  virtual void setValue(const DtString& variableName, const std::vector<DtUUID>&);
103  virtual void setValue(const DtString& variableName, const std::vector<DtVector>&);
104  virtual void setValue(const DtString& variableName, const std::map<DtString, int>&);
105  virtual void setValue(const DtString& variableName, const std::map<DtString, double>&);
106  virtual void setValue(const DtString& variableName, const std::map<DtString, DtString>&);
107 
109  virtual void setLocation(const DtString& variableName, const DtVector&);
110  virtual void setLocationWithoutAltitude(const DtString& variableName, const DtVector&);
111  virtual void setOffset(const DtString& variableName, const DtRwOffsetVector&);
112  virtual void setTime(const DtString& variableName, double);
113  virtual void setDateTime(const DtString& variableName, double);
114  virtual void setRange(const DtString& variableName, double);
115  virtual void setAltitude(const DtString& variableName, double);
116  virtual void setHeading(const DtString& variableName, double);
117  virtual void setPitch(const DtString& variableName, double);
118 
121  virtual void setValue(const DtString& variableName, const DtReaderWriter&, const char* scriptedTaskType);
122 
123  template<typename T>
124  struct identity { typedef T type; };
125 
127  template <typename RWValue, typename AssignType>
128  void setValue(const DtString& variableName, AssignType value, const char* type)
129  {
130  setValue(variableName, value, type, identity<RWValue>(), identity<AssignType>());
131  }
132 
137 private:
138  template <typename RWValue, typename AssignType>
139  void setValue(const DtString& variableName, AssignType value, const char* type, identity<RWValue>, identity<AssignType>)
140  {
141  RWValue* var = new RWValue(variableName);
142 
143  *var = value;
144  this->variables().addVariable(var);
145  this->variableDataTypes().addVariable(new DtRwString(variableName, type));
146  }
147 
148  void setValue(
149  const DtString& variableName, std::map<DtString, DtString> value, const char* type,
150  identity<DtRwStringAttributeList>, identity<std::map<DtString, DtString> >)
151  {
152  DtRwStringAttributeList* var = new DtRwStringAttributeList(variableName);
153 
154  var->setFromMap(value);
155  this->variables().addVariable(var);
156  this->variableDataTypes().addVariable(new DtRwString(variableName, type));
157  }
158 
159 public:
160 
161  template <typename T>
162  boost::optional<T> getValue(const DtString& variableName) const
163  {
164  return findVariableBindingValue<T>(variables(), variableName);
165  }
166 
168  virtual const DtReaderWriter* getValueRW(const DtString& name) const;
169  virtual DtReaderWriter* getValueRW(const DtString& name);
170 
172 
173 protected:
175 };
176 
177 template<class T> class DtScriptedTaskTemplate : public T, public DtScriptedTask
178 {
179 
180 public:
181 
184 
187  DtScriptedTaskTemplate(const DtString & writeName,
188  DtReaderWriterRegistry * parentRegistry = 0);
189 
191  DtScriptedTaskTemplate(const DtString & writeName, const DtScriptedTaskTemplate & orig,
192  DtReaderWriterRegistry * parentRegistry = 0);
193 
196 
199 
200  virtual ~DtScriptedTaskTemplate() override;
201 
204  virtual DtString stringRep() const;
205 
207  virtual DtString allVariablesStringRep(const DtString& scriptName = "") const override;
208 
211  virtual int netRepSize() const override;
212 
214  virtual bool setFromNet(const char* contentBuffer, unsigned contentSize) override;
215 
217  virtual bool init() override;
218 
221  virtual bool setToNet();
222  virtual char* setToNet(char*) override;
223 
225  virtual DtRwVariableBindings& variables() override;
226  virtual const DtRwVariableBindings& variables() const override;
227 
228  virtual void setVariables(const DtRwVariableBindings&);
229 
232  virtual DtRwVariableBindings& variableDataTypes() override;
233  virtual const DtRwVariableBindings& variableDataTypes() const override;
234 
236  virtual void setScriptId(const DtString&) override;
237  virtual const DtString& scriptId() const override;
238 
240  virtual void getSelf(DtlObjPtr args,
243  virtual void getSelf(const DtEnvironmentSP, const DtEnvValueSP root,
245  const DtVariableBindingsList& bindings = DtVariableBindingsList());
246 
247 protected:
248  virtual void upgradeVariables();
249 
251  virtual void postGetSelf() override;
252 
253 protected:
257 };
258 
261 {
262 public:
264  DtScriptedTaskStringRepHelper(const std::vector<DtScriptedTaskVariable>&);
265 
266  virtual ~DtScriptedTaskStringRepHelper() override {};
267 
268  virtual bool isDisplayableSymbol(
269  const DtString& s, const DtReaderWriter* value, const DtReaderWriter* type) const override;
270  virtual bool isDisplayableScriptSymbol(const DtString& scriptId, const DtString& scriptVariableName) const override;
271 
272 protected:
273  std::map<std::string, DtScriptedTaskVariable> myVariables;
274 };
275 
278 {
279 public:
282 
285  DtScriptedTaskTask(const DtString & writeName,
286  DtReaderWriterRegistry * parentRegistry = 0);
287 
289  DtScriptedTaskTask(const DtString & writeName, const DtScriptedTaskTask & orig,
290  DtReaderWriterRegistry * parentRegistry = 0);
291 
293  DtScriptedTaskTask(const DtScriptedTaskTask & orig );
294 
296  const DtScriptedTaskTask & operator=(const DtScriptedTaskTask & orig);
297 
298  virtual ~DtScriptedTaskTask() override;
299 
301  virtual const DtSimTaskMessageType& type() const override;
302 
304  virtual int scriptPriority() const;
305 
307  virtual void setScriptPriority(int);
308 
311  virtual bool scriptEnabled() const;
312 
314  virtual void setScriptEnabled(bool);
315 
317  virtual bool scriptActive() const;
318 
320  virtual void setScriptActive(bool);
321 
323  virtual DtSimTask* clone(const DtString& name, DtReaderWriterRegistry* parentRegistry = 0) const override;
324 
325  static DtSimTask * creator();
326 
327 protected:
329 };
330 
331 namespace DtBufferSerialize
332 {
333  DT_DLL_vrftasks int getSize(const DtScriptedTask& list);
334  DT_DLL_vrftasks char* encode(const DtScriptedTask& list, char* buffer);
335  DT_DLL_vrftasks const char* decode(DtScriptedTask& list, const char* buffer);
336 }
UUID is a unique ID wrapper class.
Definition: uuid.h:59
virtual void setScriptId(const DtString &) override
Script to run.
virtual int netRepSize() const override
Returns the size of the full network representation (control object name included) padded to an 8-byt...
Definition: scriptedTaskTask.h:40
DT_DLL_readerWriter int getSize(const DtString &val)
The number of bytes required to encode the value.
void setValue(const DtString &variableName, AssignType value, const char *type, identity< RWValue >, identity< AssignType >)
Linux does not allow specialization of member functions within the same class, so to overcome this se...
Definition: scriptedTaskTask.h:139
static ScriptedTaskFormatter * theScriptedTaskFormatter
Definition: scriptedTaskTask.h:174
DtScriptedTaskStringRepHelper()
Definition: scriptedTaskTask.h:263
T type
Definition: scriptedTaskTask.h:124
virtual ~DtScriptedTaskTemplate() override
Helper class to format scripted tasks for output.
Definition: scriptedTaskTask.h:260
static const char * DtScriptedTaskStringVariable
Definition: vrfScriptedTasksConstants.h:11
virtual void setFromMap(const std::map< DtString, DtString > &)
virtual ~DtScriptedTask()
Definition: scriptedTaskTask.h:48
Definition: readerWriter.h:85
Description: Readable, Writable DtString Variable substitutions are done on this object when it is re...
Definition: rwString.h:20
virtual bool init() override
Initializer.
virtual bool setToNet()
Fills in the network buffer (created by base class simTask) with the task contents.
virtual const DtString & scriptId() const override
Script id.
Definition: readerWriterRegistry.h:39
virtual bool isDisplayableScriptSymbol(const DtString &scriptId, const DtString &scriptName) const
static const char * DtScriptedTaskEntityTypeVariable
Definition: vrfScriptedTasksConstants.h:38
DtScriptedTask()
Definition: scriptedTaskTask.h:47
virtual ~DtScriptedTaskStringRepHelper() override
Definition: scriptedTaskTask.h:266
Definition: stringRepHelper.h:19
virtual DtString allVariablesStringRep(const DtString &scriptName="") const override
Returns all the variables in a single string.
DtRwString myScriptId
Definition: scriptedTaskTask.h:254
std::map< std::string, DtScriptedTaskVariable > myVariables
Definition: scriptedTaskTask.h:273
virtual bool setFromNet(const char *contentBuffer, unsigned contentSize) override
Fills in the task from the network buffer.
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
Specialized classes.
Definition: scriptedTaskTask.h:277
virtual DtRwVariableBindings & variableDataTypes() override
Access to the data types that represent the variables. This is the internal scripted task data type s...
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
Definition: scriptedTaskTask.h:177
virtual void postGetSelf() override
Upgrade any variable that is of an old type of resource to the new type of resource entity type...
Definition: scriptedTaskTask.h:124
The DtScriptedTaskTask will encapsulate the variables defined by a scripted task in the variable bind...
Definition: scriptedTaskTask.h:37
boost::optional< T > getValue(const DtString &variableName) const
Definition: scriptedTaskTask.h:162
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
class DtRwOffsetVectorList:
Definition: rwVectorList.h:63
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...
static const char * DtScriptedTaskIntegerVariable
Types of scripted task variables.
Definition: vrfScriptedTasksConstants.h:9
#define DT_DLL_vrftasks
This file is used to determine how to build.
Definition: vrftasksDefines.h:26
static const DtVariableBindingsList & nullVariableReference()
static const char * DtScriptedTaskLocationVariable
Definition: vrfScriptedTasksConstants.h:15
Specialized vector that can be used for the knowledge of an &quot;offset&quot; rather than location vector...
Definition: rwVector.h:112
DtRwVariableBindings myVariables
Definition: scriptedTaskTask.h:255
virtual bool isDisplayableSymbol(const DtString &s, const DtReaderWriter *value, const DtReaderWriter *type) const
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.
virtual void setVariables(const DtRwVariableBindings &)
void setValue(const DtString &variableName, AssignType value, const char *type)
General template assignment that will create a new instance of a reader/writer and assign a value to ...
Definition: scriptedTaskTask.h:128
DtRwVariableBindings myVariableDataTypes
Definition: scriptedTaskTask.h:256
static const char * DtScriptedTaskOrientationVariable
Definition: vrfScriptedTasksConstants.h:70
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...
DtScriptedTaskTemplate()
default constructor
DT_DLL_readerWriter std::shared_ptr< DtEnvironment > DtEnvironmentSP
Definition: readerWriter.h:30
virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=DtReaderWriter::SearchPaths(), const DtVariableBindingsList &variableBindings=DtReaderWriter::nullVariableReference())
Override to upgrade scripted objects from nlength string list to nlength uuid list.
virtual DtRwVariableBindings & variables() override
Access to variables.
DtSimTaskMessageType myType
Definition: scriptedTaskTask.h:328
static const char * DtScriptedTaskCheckBoxVariable
Definition: vrfScriptedTasksConstants.h:50
virtual DtString stringRep() const
Get a readable string representation of this task. If a formatter is assigned calls the formatter...
static const char * DtScriptedTaskSimulationObjectVariable
Definition: vrfScriptedTasksConstants.h:42
const DtScriptedTaskTemplate & operator=(const DtScriptedTaskTemplate &orig)
assignment operator
class DtRwVectorList:
Definition: rwVectorList.h:22
void setValue(const DtString &variableName, std::map< DtString, DtString > value, const char *type, identity< DtRwStringAttributeList >, identity< std::map< DtString, DtString > >)
Definition: scriptedTaskTask.h:148
virtual void upgradeVariables()
class DtRwStringAttributeList:
Definition: rwStringAttributeList.h:29
static const char * DtScriptedTaskDoubleVariable
Definition: vrfScriptedTasksConstants.h:14

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)