VR-Forces 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 #include <boost/crc.hpp>
22 
23 #include <vlutil/vlFilename.h>
24 #include <vlpi/entityType.h>
25 
26 #include <set>
27 #include <map>
28 
29 #include <tbb/spin_rw_mutex.h>
30 
37 typedef bool (*DtEncryptDecryptFcn)(const std::string& scriptId, char* input, int inputLen, char** output, int& outputLen, bool encrypt,
38  void* usr);
39 
47 
50 const int DtScriptedTask_UseUiFile = 0x00000004;
51 const int DtScriptedTask_MagicCommand = 0x00000010;
52 const int DtScriptedTask_SupportsOneClick = 0x00000020;
53 
54 
59 {
60 public:
61 
64 
66  virtual ~DtScriptedTaskMetaData();
67 
70 
72  DtScriptedTaskMetaData& operator=(const DtScriptedTaskMetaData& orig);
73 
75  virtual bool load(const DtFilename&);
76 
78  virtual bool load(const std::string&);
79 
81  virtual bool load(std::istream&);
82 
84  virtual bool hasUserEntryVariables() const;
85 
88  virtual bool save(const DtFilename&) const;
89 
91  virtual bool save(std::string&) const;
92 
94  virtual bool save(std::ostream&) const;
95 
97  virtual bool save() const;
98 
100  virtual void setFilename(const DtFilename&);
101 
104  virtual const DtFilename& filename() const;
105 
108  virtual const std::string& scriptId() const;
109 
112  virtual void setScriptId(const std::string&, bool makeAliasIfSystemScript = true);
113 
115  virtual void setScriptType(int);
116 
118  virtual int scriptType() const;
119 
122  virtual bool usesBehaviorEngine() const;
123  virtual void setUsesBehaviorEngine(const bool uses);
124 
126  virtual int commandLevel() const;
127  virtual void setCommandLevel(int);
128 
131  virtual void setMenuText(const std::string&);
132  virtual const std::string& menuText() const;
134 
137  virtual void setExtendedMenuText(const std::string&);
138  virtual const std::string& extendedMenuText() const;
140 
143  virtual void setToolTip(const std::string&);
144  virtual const std::string& toolTip() const;
146 
149  virtual void setMenuIcon(const std::string&);
150  virtual const std::string& menuIcon() const;
152 
155  virtual void setUseUiFile(bool);
156  virtual bool useUiFile() const;
157 
158  virtual void setUiLayout(const std::string&);
159  virtual const std::string& uiLayout() const;
161 
164  virtual void setMagicCommand(bool);
165  virtual bool magicCommand() const;
167 
172  virtual void setVersion(double);
173  virtual double version() const;
175 
179  virtual void setPriority(int);
180  virtual int priority() const;
182 
186  virtual void setEnabled(bool);
187  virtual bool enabled() const;
189 
194  virtual void setShortDescription(const std::string&);
195  virtual const std::string& shortDescription() const;
197 
200  virtual bool variable(const std::string& s, DtScriptedTaskVariable& var) const;
201 
204  virtual void setScriptEngine(const std::string&);
205  virtual const std::string& scriptEngine() const;
206 
210  virtual bool isInterpretedScript() const;
212 
215  static void addInterpretedScriptEngine(const std::string&);
216  static bool isInterpretedScriptEngine(const std::string&);
218 
221  virtual void setComments(const std::string&);
222  virtual const std::string& comments() const;
224 
228  virtual void setDescription(const std::string&);
229  virtual const std::string& description() const;
231 
234  virtual void setShowDescriptionInDialog(bool);
235  virtual bool showDescriptionInDialog() const;
237 
241  virtual void setRespectScriptLocation(bool);
242  virtual bool respectScriptLocation() const;
244 
248  virtual void setScriptLocation(const std::string&);
249  virtual const std::string& scriptLocation() const;
251 
253  virtual std::string uiLayoutLocation() const;
254 
258  virtual void setMenuLocations(const std::vector<std::string>&);
259  virtual void addMenuLocation(const std::string&);
260  virtual void removeMenuLocation(const std::string&);
261  virtual void removeMenuLocation(int);
262  virtual const std::vector<std::string>& menuLocations() const;
263  virtual void setShowInMenu(bool);
264  virtual bool showInMenu() const;
266 
269  virtual void setToolbarLocation(const std::string&);
270  virtual const std::string& toolbarLocation() const;
271  virtual void setShowInToolbar(bool);
272  virtual bool showInToolbar() const;
274 
278  virtual void setEntityTypes(const std::vector<DtEntityType>&);
279  virtual void addEntityType(const DtEntityType&);
280  virtual void removeEntityType(const DtEntityType&);
281  virtual void removeEntityType(int);
282  virtual std::vector<DtEntityType> entityTypes() const;
283  virtual bool supportsEntityType(const DtEntityType&) const;
284 
286  virtual bool hasEntityType(const DtEntityType&) const;
288 
293  virtual void setVariables(const std::vector<DtScriptedTaskVariable>&);
294  virtual void addVariable(const DtScriptedTaskVariable&);
295  virtual void insertVariableBefore(const DtScriptedTaskVariable&, const std::string& variable);
296  virtual void insertVariableBefore(const DtScriptedTaskVariable&, int i);
297  virtual void removeVariable(const std::string&);
298  virtual void removeVariable(int);
299 
302  virtual std::vector<DtScriptedTaskVariable> variables() const;
303 
305  virtual std::vector<DtScriptedTaskVariable> scriptedTaskVariables() const;
306 
310  virtual DtRwVariableBindings* defaultVariableBindings() const;
311 
313  virtual void setupDefaultsFromBindings(const DtRwVariableBindings&);
314 
316 
319  virtual void setScript(const std::string&);
320  virtual const std::string& script() const;
321 
324  virtual bool loadScript();
325 
327  virtual bool loadScript(const std::string&);
328 
331  virtual bool loadUiLayout();
332 
334  virtual bool loadUiLayout(const std::string&);
335 
338  virtual void setIsSystemScript(bool);
339  virtual bool isSystemScript() const;
341 
344  virtual void setActionCategories(const std::set<std::string>&);
345  virtual void addActionCategory(const std::string&);
346  virtual void removeActionCategory(const std::string&);
347  virtual bool hasActionCategory(const std::string&) const;
348  virtual const std::set<std::string>& actionCategories() const;
350 
353  virtual void setCanBeExecutedConcurrently(bool);
354  virtual bool canBeExecutedConcurrently() const;
356 
359  virtual void setDoctrines(const std::set<std::string>&);
360  virtual bool addDoctrine(const std::string&);
361  virtual bool removeDoctrine(const std::string&);
362  virtual bool supportsDoctrine(const std::string&) const;
363  virtual const std::set<std::string>& doctrines() const;
364  virtual bool renameDoctrine(const std::string& from, const std::string& to);
365  virtual void setAvailableToAllDoctrines(bool);
366  virtual bool availableToAllDoctrines() const;
368 
371  virtual void setShowOnTopLevelRightClickMenu(bool);
372  virtual bool showOnTopLevelRightClickMenu() const;
374 
377  virtual void setSupportsOneClick(bool);
378  virtual bool supportsOneClick() const;
380 
384  virtual void setDirectoryPath(const std::string&);
385  virtual const std::string& directoryPath() const;
387 
391  virtual const std::set<std::string>& aliases() const;
392  virtual void addAlias(const std::string&);
393  virtual void removeAlias(const std::string&);
394  virtual void clearAliases();
395  virtual void setAliases(const std::set<std::string>&);
396  virtual bool isAliased(const std::string&) const;
398 
400  virtual void assignNewScriptId();
401 
403  virtual bool supports(const DtEntityType&) const;
404 
406  bool operator==(const DtScriptedTaskMetaData&) const;
407  bool operator!=(const DtScriptedTaskMetaData& rhs) const { return !(*this == rhs); };
408 
410  static void setEncryptDecryptFunction(DtEncryptDecryptFcn, void* usr);
411  static void getEncryptDecryptFunction(DtEncryptDecryptFcn&, void*& usr);
412 
414  virtual bool encrypt(const std::string& source, std::string& dest) const;
415 
417  virtual bool encryptScript();
418 
420  virtual bool encryptSize(const std::string& source, int& size) const;
421 
423  virtual bool decrypt(const std::string& source, std::string& dest) const;
424 
427  virtual bool decryptScript();
428 
431  virtual std::unique_ptr<DtRwVariableBindings> upgradeVariables(const DtRwVariableBindings&) const;
432 
437  virtual void setEncrypted(bool);
438  virtual bool encrypted() const;
440 
443  virtual void setFlag(int, bool);
444  virtual bool flagSet(int) const;
446 
452  virtual void loadTranslationFile(const std::string& lang);
453  virtual void translationData(char*& data, unsigned int& len) const;
454  virtual std::string translationLanguage() const;
455  virtual void clearTranslationData();
457 
459  virtual std::string removeTrailingLinefeeds(const std::string&);
460 
462  virtual void makeAllIdsLowercase();
463 
465  virtual unsigned scriptChecksum() const;
466 
468  virtual void setScriptChecksum(unsigned checksum);
469 
472  static unsigned calculateChecksum(std::istream& strm);
473  static unsigned calculateChecksum(std::vector<std::istream*>& strms);
474 
475 protected:
476  virtual std::string readFile(const std::string&) const;
477 
478 protected:
479 
481  friend class boost::serialization::access;
482 
486  template<class Archive>
487  void serialize(Archive & ar, const unsigned int version)
488  {
489  ar & BOOST_SERIALIZATION_NVP(myScriptId);
490  ar & BOOST_SERIALIZATION_NVP(myMenuText);
491  ar & BOOST_SERIALIZATION_NVP(myToolTip);
492  ar & BOOST_SERIALIZATION_NVP(myMenuIcon);
493  ar & BOOST_SERIALIZATION_NVP(myVersion);
494  ar & BOOST_SERIALIZATION_NVP(myScriptEngine);
495  ar & BOOST_SERIALIZATION_NVP(myComments);
496  ar & BOOST_SERIALIZATION_NVP(myMenuLocations);
497  ar & BOOST_SERIALIZATION_NVP(myIsSystemScript);
498  ar & BOOST_SERIALIZATION_NVP(myDescription);
499  ar & BOOST_SERIALIZATION_NVP(myScriptLocation);
500  ar & BOOST_SERIALIZATION_NVP(myDirectoryPath);
501  ar & BOOST_SERIALIZATION_NVP(myEntityTypes);
502  ar & BOOST_SERIALIZATION_NVP(myVariables);
503  ar & BOOST_SERIALIZATION_NVP(myScript);
504 
505  if (version >= 2)
506  {
507  ar & BOOST_SERIALIZATION_NVP(myActionCategories);
508 
509  if (version >= 3)
510  {
511  ar & BOOST_SERIALIZATION_NVP(myShowInMenu);
512  }
513 
514  if (version >= 4)
515  {
516  ar & BOOST_SERIALIZATION_NVP(myEncrypted);
517  }
518 
519  if (version >= 5)
520  {
521  ar & BOOST_SERIALIZATION_NVP(myScriptType);
522  }
523  else
524  {
525  myScriptType = DtScriptedTaskScriptedTask;
526  }
527 
528  if (version >= 6)
529  {
530  ar & BOOST_SERIALIZATION_NVP(myDoctrines);
531  ar & BOOST_SERIALIZATION_NVP(myFlags);
532  }
533  else
534  {
536  }
537 
538  if (version >= 7)
539  {
540  ar & BOOST_SERIALIZATION_NVP(myShowInToolbar);
541  ar & BOOST_SERIALIZATION_NVP(myToolbarLocation);
542  }
543 
544  if (version >= 8)
545  {
546  ar & BOOST_SERIALIZATION_NVP(myExtendedMenuText);
547  }
548 
549  if (version >= 9)
550  {
551  ar & BOOST_SERIALIZATION_NVP(myShortDescription);
552  }
553 
554  if (version >= 10)
555  {
556  ar & BOOST_SERIALIZATION_NVP(myUiLayout);
557  }
558 
559  if (version >= 11)
560  {
561  ar & BOOST_SERIALIZATION_NVP(myAliases);
562  }
563 
564  if (version >= 13)
565  {
566  ar & BOOST_SERIALIZATION_NVP(myCanBeExecutedConcurrently);
567  }
568 
569  if (version >= 14)
570  {
571  ar & BOOST_SERIALIZATION_NVP(myRespectScriptLocation);
572  }
573 
574  if (version >= 15)
575  {
576  ar & BOOST_SERIALIZATION_NVP(myShowDescriptionInDialog);
577  }
578 
579  if (version >= 16)
580  {
581  ar & BOOST_SERIALIZATION_NVP(myUsesBehaviorEngine);
582  }
583 
584  if (version >= 17)
585  {
586  ar & BOOST_SERIALIZATION_NVP(myCommandLevel);
587  }
588 
589  if (Archive::is_loading::value && (version <= 11))
590  {
591  makeAllIdsLowercase();
592  }
593  }
594  }
595 
596 public:
597  std::string myScriptId;
598  std::string myMenuText;
599  std::string myExtendedMenuText;
600  std::string myToolTip;
601  std::string myMenuIcon;
602  std::string myScriptEngine;
603  std::string myComments;
604  std::string myDescription;
605  mutable std::string myScriptLocation;
606  std::string myShortDescription;
607  std::string myUiLayout;
608 
609  mutable std::string myScript;
610  std::string myDirectoryPath;
611  std::vector<std::string> myMenuLocations;
612  std::vector<std::string> myEntityTypes;
613  std::vector<std::string> myVariables;
614  mutable std::map<std::string, DtScriptedTaskVariable> myCachedVariables;
615  std::string myActionCategories;
616  std::string myDoctrines;
618 
619  std::string myToolbarLocation;
621 
622  mutable std::set<std::string> myActionCategoriesSet;
623  mutable std::set<std::string> myDoctrinesSet;
624 
628 
629  double myVersion;
630  mutable DtFilename myFile;
632  mutable bool myEncrypted;
633 
636 
639  int myFlags;
640 
645 
646  mutable DtU32 myChecksum;
647 
648  std::set<std::string> myAliases;
649 
650  static std::vector<std::string> theInterpretedScriptEngines;
651 
652  mutable tbb::spin_rw_mutex myVariableMutex;
653  mutable tbb::spin_rw_mutex myActionCategoriesMutex;
654 };
655 
656 namespace DtBufferSerialize
657 {
659  DT_DLL_vrfutil char *encode(const DtScriptedTaskMetaData& val, char *buffer);
660  DT_DLL_vrfutil const char *decode(DtScriptedTaskMetaData& val, const char *buffer);
661 }
662 
const int DtScriptedTaskBackgroundProcess
Definition: scriptedTaskMetaData.h:44
std::vector< std::string > myVariables
Definition: scriptedTaskMetaData.h:613
std::string myDescription
Definition: scriptedTaskMetaData.h:604
DT_DLL_readerWriter int getSize(const DtString &val)
The number of bytes required to encode the value.
std::string myExtendedMenuText
Definition: scriptedTaskMetaData.h:599
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 3)
bool myShowInToolbar
Definition: scriptedTaskMetaData.h:620
std::vector< std::string > myMenuLocations
Definition: scriptedTaskMetaData.h:611
std::string myScriptEngine
Definition: scriptedTaskMetaData.h:602
std::string myDirectoryPath
Definition: scriptedTaskMetaData.h:610
std::string myActionCategories
Definition: scriptedTaskMetaData.h:615
const int DtScriptedTaskScriptedTask
A class for keeping track of meta data for scripted tasks. The information is currently stored in an ...
Definition: scriptedTaskMetaData.h:42
const int DtScriptedTaskReactiveTask
Definition: scriptedTaskMetaData.h:43
const int DtScriptedTask_MagicCommand
Definition: scriptedTaskMetaData.h:51
std::string myScriptLocation
Definition: scriptedTaskMetaData.h:605
bool operator!=(const DtScriptedTaskMetaData &rhs) const
Definition: scriptedTaskMetaData.h:407
std::string myTranslationLanguage
Definition: scriptedTaskMetaData.h:643
std::string myMenuIcon
Definition: scriptedTaskMetaData.h:601
const char * filename
Definition: ioapi.h:38
static std::vector< std::string > theInterpretedScriptEngines
Definition: scriptedTaskMetaData.h:650
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:48
std::string myScript
Definition: scriptedTaskMetaData.h:609
std::map< std::string, DtScriptedTaskVariable > myCachedVariables
Definition: scriptedTaskMetaData.h:614
bool myEncrypted
Definition: scriptedTaskMetaData.h:632
bool myIsSystemScript
Definition: scriptedTaskMetaData.h:631
std::string myShortDescription
Definition: scriptedTaskMetaData.h:606
std::vector< std::string > myEntityTypes
Definition: scriptedTaskMetaData.h:612
DtU32 myChecksum
Definition: scriptedTaskMetaData.h:646
std::string myToolTip
Definition: scriptedTaskMetaData.h:600
std::set< std::string > myActionCategoriesSet
Definition: scriptedTaskMetaData.h:622
DtU64 myTranslationDataLen
Definition: scriptedTaskMetaData.h:642
std::string myMenuText
Definition: scriptedTaskMetaData.h:598
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:652
bool myShowInMenu
Definition: scriptedTaskMetaData.h:617
int myCommandLevel
Definition: scriptedTaskMetaData.h:644
const int DtScriptedTask_ShowOnTopLevelRightClickMenu
Definition: scriptedTaskMetaData.h:49
std::string myToolbarLocation
Definition: scriptedTaskMetaData.h:619
bool myUsesBehaviorEngine
Definition: scriptedTaskMetaData.h:638
DtFilename myFile
Definition: scriptedTaskMetaData.h:630
std::string myComments
Definition: scriptedTaskMetaData.h:603
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:616
const char * source
Definition: lz4.h:442
int myScriptType
Definition: scriptedTaskMetaData.h:637
std::set< std::string > myAliases
Definition: scriptedTaskMetaData.h:648
const int DtScriptedTask_UseUiFile
Definition: scriptedTaskMetaData.h:50
std::string myScriptId
Definition: scriptedTaskMetaData.h:597
const int DtScriptedTaskScriptedSet
Definition: scriptedTaskMetaData.h:45
static DtEncryptDecryptFcn theEncryptDecryptFunction
Definition: scriptedTaskMetaData.h:634
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:37
std::set< std::string > myDoctrinesSet
Definition: scriptedTaskMetaData.h:623
static void * theEncryptDecryptUserData
Definition: scriptedTaskMetaData.h:635
#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:653
char * myTranslationData
Definition: scriptedTaskMetaData.h:641
const int DtScriptedTask_SupportsOneClick
Definition: scriptedTaskMetaData.h:52
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:627
int myFlags
Definition: scriptedTaskMetaData.h:639
std::string myUiLayout
Definition: scriptedTaskMetaData.h:607
double myVersion
Definition: scriptedTaskMetaData.h:629
const int DtScriptedTaskScriptedBehavior
Definition: scriptedTaskMetaData.h:46
class DtScriptedTaskMetaData
Definition: scriptedTaskMetaData.h:58
bool myCanBeExecutedConcurrently
Definition: scriptedTaskMetaData.h:625
bool myRespectScriptLocation
Definition: scriptedTaskMetaData.h:626
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:487
char * dest
Definition: lz4.h:440

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)