VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptedTaskMetaData.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include "vrfutil/vrfutilDefines.h"
13 
14 #include <boost/serialization/access.hpp>
15 #include <boost/serialization/nvp.hpp>
16 #include <boost/serialization/list.hpp>
17 #include <boost/serialization/map.hpp>
18 #include <boost/serialization/vector.hpp>
19 #include <boost/serialization/string.hpp>
20 #include <boost/serialization/set.hpp>
21 
22 #include <vlutil/vlFilename.h>
23 #include <vlpi/entityType.h>
24 
25 #include <set>
26 #include <map>
27 
28 #include <tbb/spin_rw_mutex.h>
29 
36 typedef bool (*DtEncryptDecryptFcn)(const std::string& scriptId, char* input, int inputLen, char** output, int& outputLen, bool encrypt,
37  void* usr);
38 
46 
49 const int DtScriptedTask_UseUiFile = 0x00000004;
50 const int DtScriptedTask_MagicCommand = 0x00000010;
51 
52 
57 {
58 public:
59 
62 
64  virtual ~DtScriptedTaskMetaData();
65 
68 
70  DtScriptedTaskMetaData& operator=(const DtScriptedTaskMetaData& orig);
71 
73  virtual bool load(const DtFilename&);
74 
76  virtual bool load(const std::string&);
77 
79  virtual bool load(std::istream&);
80 
82  virtual bool hasUserEntryVariables() const;
83 
86  virtual bool save(const DtFilename&) const;
87 
89  virtual bool save(std::string&) const;
90 
92  virtual bool save(std::ostream&) const;
93 
95  virtual bool save() const;
96 
98  virtual void setFilename(const DtFilename&);
99 
102  virtual const DtFilename& filename() const;
103 
106  virtual const std::string& scriptId() const;
107 
110  virtual void setScriptId(const std::string&, bool makeAliasIfSystemScript = true);
111 
113  virtual void setScriptType(int);
114 
116  virtual int scriptType() const;
117 
120  virtual bool usesBehaviorEngine() const;
121  virtual void setUsesBehaviorEngine(const bool uses);
122 
124  virtual int commandLevel() const;
125  virtual void setCommandLevel(int);
126 
129  virtual void setMenuText(const std::string&);
130  virtual const std::string& menuText() const;
132 
135  virtual void setExtendedMenuText(const std::string&);
136  virtual const std::string& extendedMenuText() const;
138 
141  virtual void setToolTip(const std::string&);
142  virtual const std::string& toolTip() const;
144 
147  virtual void setMenuIcon(const std::string&);
148  virtual const std::string& menuIcon() const;
150 
153  virtual void setUseUiFile(bool);
154  virtual bool useUiFile() const;
155 
156  virtual void setUiLayout(const std::string&);
157  virtual const std::string& uiLayout() const;
159 
162  virtual void setMagicCommand(bool);
163  virtual bool magicCommand() const;
165 
170  virtual void setVersion(double);
171  virtual double version() const;
173 
177  virtual void setPriority(int);
178  virtual int priority() const;
180 
184  virtual void setEnabled(bool);
185  virtual bool enabled() const;
187 
192  virtual void setShortDescription(const std::string&);
193  virtual const std::string& shortDescription() const;
195 
198  virtual bool variable(const std::string& s, DtScriptedTaskVariable& var) const;
199 
202  virtual void setScriptEngine(const std::string&);
203  virtual const std::string& scriptEngine() const;
204 
208  virtual bool isInterpretedScript() const;
210 
213  static void addInterpretedScriptEngine(const std::string&);
214  static bool isInterpretedScriptEngine(const std::string&);
216 
219  virtual void setComments(const std::string&);
220  virtual const std::string& comments() const;
222 
226  virtual void setDescription(const std::string&);
227  virtual const std::string& description() const;
229 
232  virtual void setShowDescriptionInDialog(bool);
233  virtual bool showDescriptionInDialog() const;
235 
239  virtual void setRespectScriptLocation(bool);
240  virtual bool respectScriptLocation() const;
242 
246  virtual void setScriptLocation(const std::string&);
247  virtual const std::string& scriptLocation() const;
249 
251  virtual std::string uiLayoutLocation() const;
252 
256  virtual void setMenuLocations(const std::vector<std::string>&);
257  virtual void addMenuLocation(const std::string&);
258  virtual void removeMenuLocation(const std::string&);
259  virtual void removeMenuLocation(int);
260  virtual const std::vector<std::string>& menuLocations() const;
261  virtual void setShowInMenu(bool);
262  virtual bool showInMenu() const;
264 
267  virtual void setToolbarLocation(const std::string&);
268  virtual const std::string& toolbarLocation() const;
269  virtual void setShowInToolbar(bool);
270  virtual bool showInToolbar() const;
272 
276  virtual void setEntityTypes(const std::vector<DtEntityType>&);
277  virtual void addEntityType(const DtEntityType&);
278  virtual void removeEntityType(const DtEntityType&);
279  virtual void removeEntityType(int);
280  virtual std::vector<DtEntityType> entityTypes() const;
281  virtual bool supportsEntityType(const DtEntityType&) const;
282 
284  virtual bool hasEntityType(const DtEntityType&) const;
286 
291  virtual void setVariables(const std::vector<DtScriptedTaskVariable>&);
292  virtual void addVariable(const DtScriptedTaskVariable&);
293  virtual void insertVariableBefore(const DtScriptedTaskVariable&, const std::string& variable);
294  virtual void insertVariableBefore(const DtScriptedTaskVariable&, int i);
295  virtual void removeVariable(const std::string&);
296  virtual void removeVariable(int);
297 
300  virtual std::vector<DtScriptedTaskVariable> variables() const;
301 
303  virtual std::vector<DtScriptedTaskVariable> scriptedTaskVariables() const;
304 
308  virtual DtRwVariableBindings* defaultVariableBindings() const;
309 
311  virtual void setupDefaultsFromBindings(const DtRwVariableBindings&);
312 
314 
317  virtual void setScript(const std::string&);
318  virtual const std::string& script() const;
319 
322  virtual bool loadScript();
323 
325  virtual bool loadScript(const std::string&);
326 
329  virtual bool loadUiLayout();
330 
332  virtual bool loadUiLayout(const std::string&);
333 
336  virtual void setIsSystemScript(bool);
337  virtual bool isSystemScript() const;
339 
342  virtual void setActionCategories(const std::set<std::string>&);
343  virtual void addActionCategory(const std::string&);
344  virtual void removeActionCategory(const std::string&);
345  virtual bool hasActionCategory(const std::string&) const;
346  virtual const std::set<std::string>& actionCategories() const;
348 
351  virtual void setCanBeExecutedConcurrently(bool);
352  virtual bool canBeExecutedConcurrently() const;
354 
357  virtual void setDoctrines(const std::set<std::string>&);
358  virtual bool addDoctrine(const std::string&);
359  virtual bool removeDoctrine(const std::string&);
360  virtual bool supportsDoctrine(const std::string&) const;
361  virtual const std::set<std::string>& doctrines() const;
362  virtual bool renameDoctrine(const std::string& from, const std::string& to);
363  virtual void setAvailableToAllDoctrines(bool);
364  virtual bool availableToAllDoctrines() const;
366 
369  virtual void setShowOnTopLevelRightClickMenu(bool);
370  virtual bool showOnTopLevelRightClickMenu() const;
372 
376  virtual void setDirectoryPath(const std::string&);
377  virtual const std::string& directoryPath() const;
379 
383  virtual const std::set<std::string>& aliases() const;
384  virtual void addAlias(const std::string&);
385  virtual void removeAlias(const std::string&);
386  virtual void clearAliases();
387  virtual void setAliases(const std::set<std::string>&);
388  virtual bool isAliased(const std::string&) const;
390 
392  virtual void assignNewScriptId();
393 
395  virtual bool supports(const DtEntityType&) const;
396 
398  bool operator==(const DtScriptedTaskMetaData&) const;
399  bool operator!=(const DtScriptedTaskMetaData& rhs) const { return !(*this == rhs); };
400 
402  static void setEncryptDecryptFunction(DtEncryptDecryptFcn, void* usr);
403  static void getEncryptDecryptFunction(DtEncryptDecryptFcn&, void*& usr);
404 
406  virtual bool encrypt(const std::string& source, std::string& dest) const;
407 
409  virtual bool encryptScript();
410 
412  virtual bool encryptSize(const std::string& source, int& size) const;
413 
415  virtual bool decrypt(const std::string& source, std::string& dest) const;
416 
419  virtual bool decryptScript();
420 
423  virtual std::auto_ptr<DtRwVariableBindings> upgradeVariables(const DtRwVariableBindings&) const;
424 
429  virtual void setEncrypted(bool);
430  virtual bool encrypted() const;
432 
435  virtual void setFlag(int, bool);
436  virtual bool flagSet(int) const;
438 
444  virtual void loadTranslationFile(const std::string& lang);
445  virtual void translationData(char*& data, unsigned int& len) const;
446  virtual std::string translationLanguage() const;
447  virtual void clearTranslationData();
449 
451  virtual std::string removeTrailingLinefeeds(const std::string&);
452 
454  virtual void makeAllIdsLowercase();
455 
456 protected:
457  virtual std::string readFile(const std::string&) const;
458 
459 protected:
460 
462  friend class boost::serialization::access;
463 
467  template<class Archive>
468  void serialize(Archive & ar, const unsigned int version)
469  {
470  ar & BOOST_SERIALIZATION_NVP(myScriptId);
471  ar & BOOST_SERIALIZATION_NVP(myMenuText);
472  ar & BOOST_SERIALIZATION_NVP(myToolTip);
473  ar & BOOST_SERIALIZATION_NVP(myMenuIcon);
474  ar & BOOST_SERIALIZATION_NVP(myVersion);
475  ar & BOOST_SERIALIZATION_NVP(myScriptEngine);
476  ar & BOOST_SERIALIZATION_NVP(myComments);
477  ar & BOOST_SERIALIZATION_NVP(myMenuLocations);
478  ar & BOOST_SERIALIZATION_NVP(myIsSystemScript);
479  ar & BOOST_SERIALIZATION_NVP(myDescription);
480  ar & BOOST_SERIALIZATION_NVP(myScriptLocation);
481  ar & BOOST_SERIALIZATION_NVP(myDirectoryPath);
482  ar & BOOST_SERIALIZATION_NVP(myEntityTypes);
483  ar & BOOST_SERIALIZATION_NVP(myVariables);
484  ar & BOOST_SERIALIZATION_NVP(myScript);
485 
486  if (version >= 2)
487  {
488  ar & BOOST_SERIALIZATION_NVP(myActionCategories);
489 
490  if (version >= 3)
491  {
492  ar & BOOST_SERIALIZATION_NVP(myShowInMenu);
493  }
494 
495  if (version >= 4)
496  {
497  ar & BOOST_SERIALIZATION_NVP(myEncrypted);
498  }
499 
500  if (version >= 5)
501  {
502  ar & BOOST_SERIALIZATION_NVP(myScriptType);
503  }
504  else
505  {
506  myScriptType = DtScriptedTaskScriptedTask;
507  }
508 
509  if (version >= 6)
510  {
511  ar & BOOST_SERIALIZATION_NVP(myDoctrines);
512  ar & BOOST_SERIALIZATION_NVP(myFlags);
513  }
514  else
515  {
517  }
518 
519  if (version >= 7)
520  {
521  ar & BOOST_SERIALIZATION_NVP(myShowInToolbar);
522  ar & BOOST_SERIALIZATION_NVP(myToolbarLocation);
523  }
524 
525  if (version >= 8)
526  {
527  ar & BOOST_SERIALIZATION_NVP(myExtendedMenuText);
528  }
529 
530  if (version >= 9)
531  {
532  ar & BOOST_SERIALIZATION_NVP(myShortDescription);
533  }
534 
535  if (version >= 10)
536  {
537  ar & BOOST_SERIALIZATION_NVP(myUiLayout);
538  }
539 
540  if (version >= 11)
541  {
542  ar & BOOST_SERIALIZATION_NVP(myAliases);
543  }
544 
545  if (version >= 13)
546  {
547  ar & BOOST_SERIALIZATION_NVP(myCanBeExecutedConcurrently);
548  }
549 
550  if (version >= 14)
551  {
552  ar & BOOST_SERIALIZATION_NVP(myRespectScriptLocation);
553  }
554 
555  if (version >= 15)
556  {
557  ar & BOOST_SERIALIZATION_NVP(myShowDescriptionInDialog);
558  }
559 
560  if (version >= 16)
561  {
562  ar & BOOST_SERIALIZATION_NVP(myUsesBehaviorEngine);
563  }
564 
565  if (version >= 17)
566  {
567  ar & BOOST_SERIALIZATION_NVP(myCommandLevel);
568  }
569 
570  if (Archive::is_loading::value && (version <= 11))
571  {
572  makeAllIdsLowercase();
573  }
574  }
575  }
576 
577 public:
578  std::string myScriptId;
579  std::string myMenuText;
580  std::string myExtendedMenuText;
581  std::string myToolTip;
582  std::string myMenuIcon;
583  std::string myScriptEngine;
584  std::string myComments;
585  std::string myDescription;
586  mutable std::string myScriptLocation;
587  std::string myShortDescription;
588  std::string myUiLayout;
589 
590  mutable std::string myScript;
591  std::string myDirectoryPath;
592  std::vector<std::string> myMenuLocations;
593  std::vector<std::string> myEntityTypes;
594  std::vector<std::string> myVariables;
595  mutable std::map<std::string, DtScriptedTaskVariable> myCachedVariables;
596  std::string myActionCategories;
597  std::string myDoctrines;
599 
600  std::string myToolbarLocation;
602 
603  mutable std::set<std::string> myActionCategoriesSet;
604  mutable std::set<std::string> myDoctrinesSet;
605 
609 
610  double myVersion;
611  mutable DtFilename myFile;
613  mutable bool myEncrypted;
614 
617 
620  int myFlags;
621 
626 
627  std::set<std::string> myAliases;
628 
629  static std::vector<std::string> theInterpretedScriptEngines;
630 
631  mutable tbb::spin_rw_mutex myVariableMutex;
632  mutable tbb::spin_rw_mutex myActionCategoriesMutex;
633 };
634 
635 namespace DtBufferSerialize
636 {
638  DT_DLL_vrfutil char *encode(const DtScriptedTaskMetaData& val, char *buffer);
639  DT_DLL_vrfutil const char *decode(DtScriptedTaskMetaData& val, const char *buffer);
640 }
641 
const int DtScriptedTaskBackgroundProcess
Definition: scriptedTaskMetaData.h:43
std::vector< std::string > myVariables
Definition: scriptedTaskMetaData.h:594
std::string myDescription
Definition: scriptedTaskMetaData.h:585
DT_DLL_readerWriter int getSize(const DtString &val)
The number of bytes required to encode the value.
std::string myExtendedMenuText
Definition: scriptedTaskMetaData.h:580
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 3)
bool myShowInToolbar
Definition: scriptedTaskMetaData.h:601
std::vector< std::string > myMenuLocations
Definition: scriptedTaskMetaData.h:592
std::string myScriptEngine
Definition: scriptedTaskMetaData.h:583
std::string myDirectoryPath
Definition: scriptedTaskMetaData.h:591
std::string myActionCategories
Definition: scriptedTaskMetaData.h:596
const int DtScriptedTaskScriptedTask
A class for keeping track of meta data for scripted tasks. The information is currently stored in an ...
Definition: scriptedTaskMetaData.h:41
const int DtScriptedTaskReactiveTask
Definition: scriptedTaskMetaData.h:42
const int DtScriptedTask_MagicCommand
Definition: scriptedTaskMetaData.h:50
std::string myScriptLocation
Definition: scriptedTaskMetaData.h:586
bool operator!=(const DtScriptedTaskMetaData &rhs) const
Definition: scriptedTaskMetaData.h:399
std::string myTranslationLanguage
Definition: scriptedTaskMetaData.h:624
std::string myMenuIcon
Definition: scriptedTaskMetaData.h:582
const char * filename
Definition: ioapi.h:38
static std::vector< std::string > theInterpretedScriptEngines
Definition: scriptedTaskMetaData.h:629
voidpf void uLong size
Definition: ioapi.h:39
DT_DLL_terrainCS bool operator==(const DtDegMinSec &lhs, const DtDegMinSec &rhs)
const int DtScriptedTask_AvailableToAllDoctrines
Like a task, but different default template.
Definition: scriptedTaskMetaData.h:47
std::string myScript
Definition: scriptedTaskMetaData.h:590
std::map< std::string, DtScriptedTaskVariable > myCachedVariables
Definition: scriptedTaskMetaData.h:595
bool myEncrypted
Definition: scriptedTaskMetaData.h:613
bool myIsSystemScript
Definition: scriptedTaskMetaData.h:612
std::string myShortDescription
Definition: scriptedTaskMetaData.h:587
std::vector< std::string > myEntityTypes
Definition: scriptedTaskMetaData.h:593
std::string myToolTip
Definition: scriptedTaskMetaData.h:581
std::set< std::string > myActionCategoriesSet
Definition: scriptedTaskMetaData.h:603
DtU64 myTranslationDataLen
Definition: scriptedTaskMetaData.h:623
std::string myMenuText
Definition: scriptedTaskMetaData.h:579
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
tbb::spin_rw_mutex myVariableMutex
Definition: scriptedTaskMetaData.h:631
bool myShowInMenu
Definition: scriptedTaskMetaData.h:598
int myCommandLevel
Definition: scriptedTaskMetaData.h:625
const int DtScriptedTask_ShowOnTopLevelRightClickMenu
Definition: scriptedTaskMetaData.h:48
std::string myToolbarLocation
Definition: scriptedTaskMetaData.h:600
bool myUsesBehaviorEngine
Definition: scriptedTaskMetaData.h:619
DtFilename myFile
Definition: scriptedTaskMetaData.h:611
std::string myComments
Definition: scriptedTaskMetaData.h:584
A class for keeping track of meta data for variables of scripted tasks. The information is currently ...
Definition: scriptedTaskVariable.h:34
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...
std::string myDoctrines
Definition: scriptedTaskMetaData.h:597
const char * source
Definition: lz4.h:442
int myScriptType
Definition: scriptedTaskMetaData.h:618
std::set< std::string > myAliases
Definition: scriptedTaskMetaData.h:627
const int DtScriptedTask_UseUiFile
Definition: scriptedTaskMetaData.h:49
std::string myScriptId
Definition: scriptedTaskMetaData.h:578
const int DtScriptedTaskScriptedSet
Definition: scriptedTaskMetaData.h:44
static DtEncryptDecryptFcn theEncryptDecryptFunction
Definition: scriptedTaskMetaData.h:615
bool(* DtEncryptDecryptFcn)(const std::string &scriptId, char *input, int inputLen, char **output, int &outputLen, bool encrypt, void *usr)
Typedef for encrypt/decrypt function. The buffer returned either from encryption or decryption MUST b...
Definition: scriptedTaskMetaData.h:36
std::set< std::string > myDoctrinesSet
Definition: scriptedTaskMetaData.h:604
static void * theEncryptDecryptUserData
Definition: scriptedTaskMetaData.h:616
#define DT_DLL_vrfutil
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfutilDefines.h:34
tbb::spin_rw_mutex myActionCategoriesMutex
Definition: scriptedTaskMetaData.h:632
char * myTranslationData
Definition: scriptedTaskMetaData.h:622
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...
bool myShowDescriptionInDialog
Definition: scriptedTaskMetaData.h:608
int myFlags
Definition: scriptedTaskMetaData.h:620
std::string myUiLayout
Definition: scriptedTaskMetaData.h:588
double myVersion
Definition: scriptedTaskMetaData.h:610
const int DtScriptedTaskScriptedBehavior
Definition: scriptedTaskMetaData.h:45
class DtScriptedTaskMetaData
Definition: scriptedTaskMetaData.h:56
bool myCanBeExecutedConcurrently
Definition: scriptedTaskMetaData.h:606
bool myRespectScriptLocation
Definition: scriptedTaskMetaData.h:607
void serialize(Archive &ar, const unsigned int version)
When the class Archive corresponds to an output archive, the &amp; operator is defined similar to &lt;&lt;...
Definition: scriptedTaskMetaData.h:468
char * dest
Definition: lz4.h:440

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)