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 
53 
58 {
59 public:
60 
63 
65  virtual ~DtScriptedTaskMetaData();
66 
69 
71  DtScriptedTaskMetaData& operator=(const DtScriptedTaskMetaData& orig);
72 
74  virtual bool load(const DtFilename&);
75 
77  virtual bool load(const std::string&);
78 
80  virtual bool load(std::istream&);
81 
83  virtual bool hasUserEntryVariables() const;
84 
87  virtual bool save(const DtFilename&) const;
88 
90  virtual bool save(std::string&) const;
91 
93  virtual bool save(std::ostream&) const;
94 
96  virtual bool save() const;
97 
99  virtual void setFilename(const DtFilename&);
100 
103  virtual const DtFilename& filename() const;
104 
107  virtual const std::string& scriptId() const;
108 
111  virtual void setScriptId(const std::string&, bool makeAliasIfSystemScript = true);
112 
114  virtual void setScriptType(int);
115 
117  virtual int scriptType() const;
118 
121  virtual bool usesBehaviorEngine() const;
122  virtual void setUsesBehaviorEngine(const bool uses);
123 
125  virtual int commandLevel() const;
126  virtual void setCommandLevel(int);
127 
130  virtual void setMenuText(const std::string&);
131  virtual const std::string& menuText() const;
133 
136  virtual void setExtendedMenuText(const std::string&);
137  virtual const std::string& extendedMenuText() const;
139 
142  virtual void setToolTip(const std::string&);
143  virtual const std::string& toolTip() const;
145 
148  virtual void setMenuIcon(const std::string&);
149  virtual const std::string& menuIcon() const;
151 
154  virtual void setUseUiFile(bool);
155  virtual bool useUiFile() const;
156 
157  virtual void setUiLayout(const std::string&);
158  virtual const std::string& uiLayout() const;
160 
163  virtual void setMagicCommand(bool);
164  virtual bool magicCommand() const;
166 
171  virtual void setVersion(double);
172  virtual double version() const;
174 
178  virtual void setPriority(int);
179  virtual int priority() const;
181 
185  virtual void setEnabled(bool);
186  virtual bool enabled() const;
188 
193  virtual void setShortDescription(const std::string&);
194  virtual const std::string& shortDescription() const;
196 
199  virtual bool variable(const std::string& s, DtScriptedTaskVariable& var) const;
200 
203  virtual void setScriptEngine(const std::string&);
204  virtual const std::string& scriptEngine() const;
205 
209  virtual bool isInterpretedScript() const;
211 
214  static void addInterpretedScriptEngine(const std::string&);
215  static bool isInterpretedScriptEngine(const std::string&);
217 
220  virtual void setComments(const std::string&);
221  virtual const std::string& comments() const;
223 
227  virtual void setDescription(const std::string&);
228  virtual const std::string& description() const;
230 
233  virtual void setShowDescriptionInDialog(bool);
234  virtual bool showDescriptionInDialog() const;
236 
240  virtual void setRespectScriptLocation(bool);
241  virtual bool respectScriptLocation() const;
243 
247  virtual void setScriptLocation(const std::string&);
248  virtual const std::string& scriptLocation() const;
250 
252  virtual std::string uiLayoutLocation() const;
253 
257  virtual void setMenuLocations(const std::vector<std::string>&);
258  virtual void addMenuLocation(const std::string&);
259  virtual void removeMenuLocation(const std::string&);
260  virtual void removeMenuLocation(int);
261  virtual const std::vector<std::string>& menuLocations() const;
262  virtual void setShowInMenu(bool);
263  virtual bool showInMenu() const;
265 
268  virtual void setToolbarLocation(const std::string&);
269  virtual const std::string& toolbarLocation() const;
270  virtual void setShowInToolbar(bool);
271  virtual bool showInToolbar() const;
273 
277  virtual void setEntityTypes(const std::vector<DtEntityType>&);
278  virtual void addEntityType(const DtEntityType&);
279  virtual void removeEntityType(const DtEntityType&);
280  virtual void removeEntityType(int);
281  virtual std::vector<DtEntityType> entityTypes() const;
282  virtual bool supportsEntityType(const DtEntityType&) const;
283 
285  virtual bool hasEntityType(const DtEntityType&) const;
287 
292  virtual void setVariables(const std::vector<DtScriptedTaskVariable>&);
293  virtual void addVariable(const DtScriptedTaskVariable&);
294  virtual void insertVariableBefore(const DtScriptedTaskVariable&, const std::string& variable);
295  virtual void insertVariableBefore(const DtScriptedTaskVariable&, int i);
296  virtual void removeVariable(const std::string&);
297  virtual void removeVariable(int);
298 
301  virtual std::vector<DtScriptedTaskVariable> variables() const;
302 
304  virtual std::vector<DtScriptedTaskVariable> scriptedTaskVariables() const;
305 
309  virtual DtRwVariableBindings* defaultVariableBindings() const;
310 
312  virtual void setupDefaultsFromBindings(const DtRwVariableBindings&);
313 
315 
318  virtual void setScript(const std::string&);
319  virtual const std::string& script() const;
320 
323  virtual bool loadScript();
324 
326  virtual bool loadScript(const std::string&);
327 
330  virtual bool loadUiLayout();
331 
333  virtual bool loadUiLayout(const std::string&);
334 
337  virtual void setIsSystemScript(bool);
338  virtual bool isSystemScript() const;
340 
343  virtual void setActionCategories(const std::set<std::string>&);
344  virtual void addActionCategory(const std::string&);
345  virtual void removeActionCategory(const std::string&);
346  virtual bool hasActionCategory(const std::string&) const;
347  virtual const std::set<std::string>& actionCategories() const;
349 
352  virtual void setCanBeExecutedConcurrently(bool);
353  virtual bool canBeExecutedConcurrently() const;
355 
358  virtual void setDoctrines(const std::set<std::string>&);
359  virtual bool addDoctrine(const std::string&);
360  virtual bool removeDoctrine(const std::string&);
361  virtual bool supportsDoctrine(const std::string&) const;
362  virtual const std::set<std::string>& doctrines() const;
363  virtual bool renameDoctrine(const std::string& from, const std::string& to);
364  virtual void setAvailableToAllDoctrines(bool);
365  virtual bool availableToAllDoctrines() const;
367 
370  virtual void setShowOnTopLevelRightClickMenu(bool);
371  virtual bool showOnTopLevelRightClickMenu() const;
373 
377  virtual void setDirectoryPath(const std::string&);
378  virtual const std::string& directoryPath() const;
380 
384  virtual const std::set<std::string>& aliases() const;
385  virtual void addAlias(const std::string&);
386  virtual void removeAlias(const std::string&);
387  virtual void clearAliases();
388  virtual void setAliases(const std::set<std::string>&);
389  virtual bool isAliased(const std::string&) const;
391 
393  virtual void assignNewScriptId();
394 
396  virtual bool supports(const DtEntityType&) const;
397 
399  bool operator==(const DtScriptedTaskMetaData&) const;
400  bool operator!=(const DtScriptedTaskMetaData& rhs) const { return !(*this == rhs); };
401 
403  static void setEncryptDecryptFunction(DtEncryptDecryptFcn, void* usr);
404  static void getEncryptDecryptFunction(DtEncryptDecryptFcn&, void*& usr);
405 
407  virtual bool encrypt(const std::string& source, std::string& dest) const;
408 
410  virtual bool encryptScript();
411 
413  virtual bool encryptSize(const std::string& source, int& size) const;
414 
416  virtual bool decrypt(const std::string& source, std::string& dest) const;
417 
420  virtual bool decryptScript();
421 
424  virtual std::auto_ptr<DtRwVariableBindings> upgradeVariables(const DtRwVariableBindings&) const;
425 
430  virtual void setEncrypted(bool);
431  virtual bool encrypted() const;
433 
436  virtual void setFlag(int, bool);
437  virtual bool flagSet(int) const;
439 
445  virtual void loadTranslationFile(const std::string& lang);
446  virtual void translationData(char*& data, unsigned int& len) const;
447  virtual std::string translationLanguage() const;
448  virtual void clearTranslationData();
450 
452  virtual std::string removeTrailingLinefeeds(const std::string&);
453 
455  virtual void makeAllIdsLowercase();
456 
458  virtual unsigned scriptChecksum() const;
459 
461  virtual void setScriptChecksum(unsigned checksum);
462 
465  static unsigned calculateChecksum(std::istream& strm);
466  static unsigned calculateChecksum(std::vector<std::istream*>& strms);
467 
468 protected:
469  virtual std::string readFile(const std::string&) const;
470 
471 protected:
472 
474  friend class boost::serialization::access;
475 
479  template<class Archive>
480  void serialize(Archive & ar, const unsigned int version)
481  {
482  ar & BOOST_SERIALIZATION_NVP(myScriptId);
483  ar & BOOST_SERIALIZATION_NVP(myMenuText);
484  ar & BOOST_SERIALIZATION_NVP(myToolTip);
485  ar & BOOST_SERIALIZATION_NVP(myMenuIcon);
486  ar & BOOST_SERIALIZATION_NVP(myVersion);
487  ar & BOOST_SERIALIZATION_NVP(myScriptEngine);
488  ar & BOOST_SERIALIZATION_NVP(myComments);
489  ar & BOOST_SERIALIZATION_NVP(myMenuLocations);
490  ar & BOOST_SERIALIZATION_NVP(myIsSystemScript);
491  ar & BOOST_SERIALIZATION_NVP(myDescription);
492  ar & BOOST_SERIALIZATION_NVP(myScriptLocation);
493  ar & BOOST_SERIALIZATION_NVP(myDirectoryPath);
494  ar & BOOST_SERIALIZATION_NVP(myEntityTypes);
495  ar & BOOST_SERIALIZATION_NVP(myVariables);
496  ar & BOOST_SERIALIZATION_NVP(myScript);
497 
498  if (version >= 2)
499  {
500  ar & BOOST_SERIALIZATION_NVP(myActionCategories);
501 
502  if (version >= 3)
503  {
504  ar & BOOST_SERIALIZATION_NVP(myShowInMenu);
505  }
506 
507  if (version >= 4)
508  {
509  ar & BOOST_SERIALIZATION_NVP(myEncrypted);
510  }
511 
512  if (version >= 5)
513  {
514  ar & BOOST_SERIALIZATION_NVP(myScriptType);
515  }
516  else
517  {
518  myScriptType = DtScriptedTaskScriptedTask;
519  }
520 
521  if (version >= 6)
522  {
523  ar & BOOST_SERIALIZATION_NVP(myDoctrines);
524  ar & BOOST_SERIALIZATION_NVP(myFlags);
525  }
526  else
527  {
529  }
530 
531  if (version >= 7)
532  {
533  ar & BOOST_SERIALIZATION_NVP(myShowInToolbar);
534  ar & BOOST_SERIALIZATION_NVP(myToolbarLocation);
535  }
536 
537  if (version >= 8)
538  {
539  ar & BOOST_SERIALIZATION_NVP(myExtendedMenuText);
540  }
541 
542  if (version >= 9)
543  {
544  ar & BOOST_SERIALIZATION_NVP(myShortDescription);
545  }
546 
547  if (version >= 10)
548  {
549  ar & BOOST_SERIALIZATION_NVP(myUiLayout);
550  }
551 
552  if (version >= 11)
553  {
554  ar & BOOST_SERIALIZATION_NVP(myAliases);
555  }
556 
557  if (version >= 13)
558  {
559  ar & BOOST_SERIALIZATION_NVP(myCanBeExecutedConcurrently);
560  }
561 
562  if (version >= 14)
563  {
564  ar & BOOST_SERIALIZATION_NVP(myRespectScriptLocation);
565  }
566 
567  if (version >= 15)
568  {
569  ar & BOOST_SERIALIZATION_NVP(myShowDescriptionInDialog);
570  }
571 
572  if (version >= 16)
573  {
574  ar & BOOST_SERIALIZATION_NVP(myUsesBehaviorEngine);
575  }
576 
577  if (version >= 17)
578  {
579  ar & BOOST_SERIALIZATION_NVP(myCommandLevel);
580  }
581 
582  if (Archive::is_loading::value && (version <= 11))
583  {
584  makeAllIdsLowercase();
585  }
586  }
587  }
588 
589 public:
590  std::string myScriptId;
591  std::string myMenuText;
592  std::string myExtendedMenuText;
593  std::string myToolTip;
594  std::string myMenuIcon;
595  std::string myScriptEngine;
596  std::string myComments;
597  std::string myDescription;
598  mutable std::string myScriptLocation;
599  std::string myShortDescription;
600  std::string myUiLayout;
601 
602  mutable std::string myScript;
603  std::string myDirectoryPath;
604  std::vector<std::string> myMenuLocations;
605  std::vector<std::string> myEntityTypes;
606  std::vector<std::string> myVariables;
607  mutable std::map<std::string, DtScriptedTaskVariable> myCachedVariables;
608  std::string myActionCategories;
609  std::string myDoctrines;
611 
612  std::string myToolbarLocation;
614 
615  mutable std::set<std::string> myActionCategoriesSet;
616  mutable std::set<std::string> myDoctrinesSet;
617 
621 
622  double myVersion;
623  mutable DtFilename myFile;
625  mutable bool myEncrypted;
626 
629 
632  int myFlags;
633 
638 
639  mutable DtU32 myChecksum;
640 
641  std::set<std::string> myAliases;
642 
643  static std::vector<std::string> theInterpretedScriptEngines;
644 
645  mutable tbb::spin_rw_mutex myVariableMutex;
646  mutable tbb::spin_rw_mutex myActionCategoriesMutex;
647 };
648 
649 namespace DtBufferSerialize
650 {
652  DT_DLL_vrfutil char *encode(const DtScriptedTaskMetaData& val, char *buffer);
653  DT_DLL_vrfutil const char *decode(DtScriptedTaskMetaData& val, const char *buffer);
654 }
655 
const int DtScriptedTaskBackgroundProcess
Definition: scriptedTaskMetaData.h:44
std::vector< std::string > myVariables
Definition: scriptedTaskMetaData.h:606
std::string myDescription
Definition: scriptedTaskMetaData.h:597
DT_DLL_readerWriter int getSize(const DtString &val)
The number of bytes required to encode the value.
std::string myExtendedMenuText
Definition: scriptedTaskMetaData.h:592
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 3)
bool myShowInToolbar
Definition: scriptedTaskMetaData.h:613
std::vector< std::string > myMenuLocations
Definition: scriptedTaskMetaData.h:604
std::string myScriptEngine
Definition: scriptedTaskMetaData.h:595
std::string myDirectoryPath
Definition: scriptedTaskMetaData.h:603
std::string myActionCategories
Definition: scriptedTaskMetaData.h:608
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:598
bool operator!=(const DtScriptedTaskMetaData &rhs) const
Definition: scriptedTaskMetaData.h:400
std::string myTranslationLanguage
Definition: scriptedTaskMetaData.h:636
std::string myMenuIcon
Definition: scriptedTaskMetaData.h:594
const char * filename
Definition: ioapi.h:38
static std::vector< std::string > theInterpretedScriptEngines
Definition: scriptedTaskMetaData.h:643
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:602
std::map< std::string, DtScriptedTaskVariable > myCachedVariables
Definition: scriptedTaskMetaData.h:607
bool myEncrypted
Definition: scriptedTaskMetaData.h:625
bool myIsSystemScript
Definition: scriptedTaskMetaData.h:624
std::string myShortDescription
Definition: scriptedTaskMetaData.h:599
std::vector< std::string > myEntityTypes
Definition: scriptedTaskMetaData.h:605
DtU32 myChecksum
Definition: scriptedTaskMetaData.h:639
std::string myToolTip
Definition: scriptedTaskMetaData.h:593
std::set< std::string > myActionCategoriesSet
Definition: scriptedTaskMetaData.h:615
DtU64 myTranslationDataLen
Definition: scriptedTaskMetaData.h:635
std::string myMenuText
Definition: scriptedTaskMetaData.h:591
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:645
bool myShowInMenu
Definition: scriptedTaskMetaData.h:610
int myCommandLevel
Definition: scriptedTaskMetaData.h:637
const int DtScriptedTask_ShowOnTopLevelRightClickMenu
Definition: scriptedTaskMetaData.h:49
std::string myToolbarLocation
Definition: scriptedTaskMetaData.h:612
bool myUsesBehaviorEngine
Definition: scriptedTaskMetaData.h:631
DtFilename myFile
Definition: scriptedTaskMetaData.h:623
std::string myComments
Definition: scriptedTaskMetaData.h:596
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:609
const char * source
Definition: lz4.h:442
int myScriptType
Definition: scriptedTaskMetaData.h:630
std::set< std::string > myAliases
Definition: scriptedTaskMetaData.h:641
const int DtScriptedTask_UseUiFile
Definition: scriptedTaskMetaData.h:50
std::string myScriptId
Definition: scriptedTaskMetaData.h:590
const int DtScriptedTaskScriptedSet
Definition: scriptedTaskMetaData.h:45
static DtEncryptDecryptFcn theEncryptDecryptFunction
Definition: scriptedTaskMetaData.h:627
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:616
static void * theEncryptDecryptUserData
Definition: scriptedTaskMetaData.h:628
#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:646
char * myTranslationData
Definition: scriptedTaskMetaData.h:634
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:620
int myFlags
Definition: scriptedTaskMetaData.h:632
std::string myUiLayout
Definition: scriptedTaskMetaData.h:600
double myVersion
Definition: scriptedTaskMetaData.h:622
const int DtScriptedTaskScriptedBehavior
Definition: scriptedTaskMetaData.h:46
class DtScriptedTaskMetaData
Definition: scriptedTaskMetaData.h:57
bool myCanBeExecutedConcurrently
Definition: scriptedTaskMetaData.h:618
bool myRespectScriptLocation
Definition: scriptedTaskMetaData.h:619
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:480
char * dest
Definition: lz4.h:440

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)