WSF
WsfExe.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFEXE_HPP
13#define WSFEXE_HPP
14
15#include <string>
16
17// Qt
18#include <QFuture>
19
20// Utilities
21#include "UtCallback.hpp"
22#include "UtMemory.hpp"
23#include "UtPath.hpp"
24
25// Application specific
27#include "ViExport.hpp"
28
29// WSF
30#include "WsfPProxyRegistry.hpp"
32
33// Base class declaration
34#include "UtReferenceTracked.hpp"
35
36// Forward declarations
37class QSettings;
38
39namespace wizard
40{
41class WsfScriptTypes;
42class WsfStyler;
43class XML_Context;
44
45class VI_EXPORT WsfExe : public UtReferenceTracked
46{
47public:
48 explicit WsfExe(const UtPath& aExePath);
49 WsfExe(std::shared_ptr<WsfParseDefinitions>& aParseDefinition, const std::string& aGrammar);
50 WsfExe(const WsfExe&) = delete;
51 WsfExe(WsfExe&&) = default;
52 WsfExe& operator=(const WsfExe&) = delete;
53 WsfExe& operator=(WsfExe&&) = default;
54 virtual ~WsfExe();
55
56 bool LoadFromDisk();
57 bool IsLoaded() const;
58 static WsfExe* FromDisk(const UtPath& aExePath);
59 const UtPath& GetPath() const { return mExePath; }
60 const std::string& GetVersion() const { return mVersion; }
61 const std::string& GetApplication() const { return mApplication; }
62 const std::string& GetGrammar();
63 std::shared_ptr<WsfParseDefinitions> GetParseDefinitions();
64 std::shared_ptr<GrammarDocumentation> GetGrammarDocumentation();
65 std::shared_ptr<WsfPProxyRegistry> GetProxyRegistry() const { return mProxyRegistry; }
66 std::string GetAlias() const { return mAlias; }
67 void SetAlias(const std::string& aAlias) { mAlias = aAlias; }
68 std::string GetDescriptiveName() const;
69
70 virtual void ExeTypeToXML(XML_Context& aInput);
71
72 WsfScriptTypes* TakeScriptTypes();
73 void GiveScriptTypes(WsfScriptTypes* aScriptTypesPtr);
75
76 static UtCallbackListN<void(WsfExe*)> ExeUpdated;
77
79 {
80 public:
82 : majorNo(0)
83 , minorNo(0)
84 , patchNo(0)
85 {
86 }
87 GrammarVersion(int aMajorNo, int aMinorNo, int aPatchNo)
88 : majorNo(aMajorNo)
89 , minorNo(aMinorNo)
90 , patchNo(aPatchNo)
91 {
92 }
93 explicit GrammarVersion(const std::string& aVersion);
94
95 VI_EXPORT bool operator<(const GrammarVersion& aRhs) const;
96
97 // Note: It's tempting to call these "major" and "minor", but doing so
98 // makes it possible to cause name collisions on Linux with glibc
99 // functions of the same names.
103 };
104
106
107 static std::string GetDescriptiveNameFor(const std::string& aApplicationName, const std::string& aVersion);
108
109protected:
110 void BeginBuildDoc();
111 void Cleanup();
112 void ProcessData(const std::string& aBlockName, const std::string& aText);
113 void BuildProxyRegistry();
114
115 UtPath mExePath;
116 std::string mVersion;
117 std::string mApplication;
118 std::string mAlias;
119 std::string mGrammarText;
120 std::shared_ptr<WsfParseDefinitions> mParseDefinitions;
121
122 // Because the script types do not change, we recycle these objects.
123 // This allows us to re-use the same 2 or 3 instances
124 std::vector<WsfScriptTypes*> mScriptTypesObjects;
125 std::set<WsfScriptTypes*> mGivenScriptTypes;
126 std::shared_ptr<GrammarDocumentation> mGrammarDocumentation;
128 QFuture<std::shared_ptr<GrammarDocumentation>> mGrammarDocumentationFuture;
130 std::shared_ptr<WsfPProxyRegistry> mProxyRegistry;
132};
133} // namespace wizard
134
135#endif
#define VI_EXPORT
Definition ViExport.hpp:38
Definition WsfExe.hpp:79
int minorNo
Definition WsfExe.hpp:101
GrammarVersion()
Definition WsfExe.hpp:81
GrammarVersion(int aMajorNo, int aMinorNo, int aPatchNo)
Definition WsfExe.hpp:87
int patchNo
Definition WsfExe.hpp:102
int majorNo
Definition WsfExe.hpp:100
UtPath mExePath
Definition WsfExe.hpp:115
std::shared_ptr< WsfPProxyRegistry > mProxyRegistry
Definition WsfExe.hpp:130
std::set< WsfScriptTypes * > mGivenScriptTypes
Definition WsfExe.hpp:125
WsfStyler * mWSF_StylerPtr
Definition WsfExe.hpp:129
WsfExe(WsfExe &&)=default
std::shared_ptr< WsfPProxyRegistry > GetProxyRegistry() const
Definition WsfExe.hpp:65
std::vector< WsfScriptTypes * > mScriptTypesObjects
Definition WsfExe.hpp:124
WsfStyler * GetStyler()
Definition WsfExe.hpp:74
static WsfExe * FromDisk(const UtPath &aExePath)
Definition WsfExe.cpp:144
WsfExe(const WsfExe &)=delete
std::string GetAlias() const
Definition WsfExe.hpp:66
std::string mVersion
Definition WsfExe.hpp:116
bool IsLoaded() const
Definition WsfExe.cpp:139
bool mGrammarDocumentationFutureStarted
Definition WsfExe.hpp:127
std::string mApplication
Definition WsfExe.hpp:117
WsfExe(const UtPath &aExePath)
Definition WsfExe.cpp:31
WsfExe & operator=(const WsfExe &)=delete
GrammarVersion GetGrammarVersion() const
Definition WsfExe.hpp:105
const std::string & GetVersion() const
Definition WsfExe.hpp:60
bool LoadFromDisk()
Definition WsfExe.cpp:67
WsfExe & operator=(WsfExe &&)=default
std::shared_ptr< GrammarDocumentation > mGrammarDocumentation
Definition WsfExe.hpp:126
static UtCallbackListN< void(WsfExe *)> ExeUpdated
Definition WsfExe.hpp:76
const UtPath & GetPath() const
Definition WsfExe.hpp:59
QFuture< std::shared_ptr< GrammarDocumentation > > mGrammarDocumentationFuture
Definition WsfExe.hpp:128
void SetAlias(const std::string &aAlias)
Definition WsfExe.hpp:67
std::string mGrammarText
Definition WsfExe.hpp:119
std::string mAlias
Definition WsfExe.hpp:118
GrammarVersion mGrammarVersion
Definition WsfExe.hpp:131
std::shared_ptr< WsfParseDefinitions > mParseDefinitions
Definition WsfExe.hpp:120
const std::string & GetApplication() const
Definition WsfExe.hpp:61
Definition WsfScriptData.hpp:213
syntax-highlights a WSF file.
Definition WsfStyler.hpp:37
Definition XML_Context.hpp:58
Definition Runner.hpp:22
Copyrights Multiple, All Rights Reserved