VR-Forces 5.0.1 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfGuiCommandLineParser.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 #include <vrfGuiCore/vrfDe.h>
16 
18 
19 #include <cmdLine/cmdArg.h>
20 #include <cmdLine/cmdLine.h>
21 
22 #include <boost/function.hpp>
23 
24 namespace makVrf
25 {
32  {
33  protected:
34  typedef boost::function<void (std::vector<DtCmdLine::Arg*>&,
36 
37  public:
39 
41 
43  virtual void processCommandLine(makVrv::DtVrvApplicationConfiguration& appConfig, int argc, char** argv);
44 
46  virtual void removeAutoStartDriver();
47 
48  void setAllowObserverModeFlags(bool);
49 
52  virtual void addAdditionalCommandLineArgument(DtCmdLine::Arg* addlArg);
53 
54  const std::string& autoStartDriver() const
55  {
56  return myAutoStartDriver;
57  }
58 
59  protected:
60  struct BaseArgs
61  {
62  virtual void processArgs(makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args, std::string& autoStartDriver) = 0;
63  virtual std::string driverName() const = 0;
64  virtual std::string driverClass() const = 0;
65 
67  DtCmdLine::ValueArg<int>* siteId;
68  DtCmdLine::ValueArg<int>* appId;
69  DtCmdLine::SwitchArg* useAbsoluteTimeStamps;
70  DtCmdLine::ValueArg<int>* fileTransporterReceivePort;
71  DtCmdLine::ValueArg<int>* numberOfRemoteNetworkThreads;
72  DtCmdLine::SwitchArg* disableRemoteDiscovery;
73  };
74 
75  struct LegionArgs : public BaseArgs
76  {
77  virtual void processArgs(makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args, std::string& autoStartDriver);
78  virtual std::string driverName() const;
79  virtual std::string driverClass() const;
80 
81  DtCmdLine::ValueArg<int>* port;
82  DtCmdLine::ValueArg<int>* siteId;
83  DtCmdLine::ValueArg<int>* appId;
84  DtCmdLine::ValueArg<int>* sessionId;
85  DtCmdLine::ValueArg<std::string>* serverAddress;
86  DtCmdLine::ValueArg<std::string>* deviceAddress;
87  DtCmdLine::ValueArg<std::string>* hostAddress;
88  DtCmdLine::ValueArg<std::string>* reportedHostAddress;
89  };
90 
91  struct DisArgs : public BaseArgs
92  {
93  virtual void processArgs(makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args, std::string& autoStartDriver);
94  virtual std::string driverName() const;
95  virtual std::string driverClass() const;
96 
97  DtCmdLine::ValueArg<int>* port;
98  DtCmdLine::ValueArg<int>* exerciseId;
99  DtCmdLine::ValueArg<int>* disVersion;
100  DtCmdLine::ValueArg<std::string>* destinationAddress;
101  DtCmdLine::ValueArg<std::string>* deviceAddress;
102  DtCmdLine::ValueArg<std::string>* subnetMask;
103  DtCmdLine::ValueArg<std::string>* hostAddress;
104  DtCmdLine::ValueArg<std::string>* reportedHostAddress;
105  DtCmdLine::ValueArg<std::string>* appIdRange;
106  DtCmdLine::ValueArg<int>* sessionId;
107  DtCmdLine::ValueArg<int>* receiveBufferSize;
108  DtCmdLine::ValueArg<int>* sendBufferSize;
109  DtCmdLine::SwitchArg* useAsynchIO;
110  DtCmdLine::SwitchArg* useIpv6;
111  DtCmdLine::ValueArg<int>* multicastTTL;
112  DtCmdLine::MultiArg<std::string>* multicastAddresses;
113  DtCmdLine::ValueArg<double>* defaultObjectTimeout;
114  };
115 
116  struct Hla13Args : public BaseArgs
117  {
118  virtual void processArgs(makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args, std::string& autoStartDriver);
119  virtual void setupHlaConfiguration(makVrv::DtConfiguration& config, StealthArgs& args);
120  virtual std::string driverName() const;
121  virtual std::string driverClass() const;
122 
123  DtCmdLine::ValueArg<std::string>* execName;
124  DtCmdLine::ValueArg<std::string>* fedFileName;
125  DtCmdLine::ValueArg<std::string>* fomMapperLibName;
126  DtCmdLine::ValueArg<std::string>* fomMapperInitData;
127  DtCmdLine::ValueArg<std::string>* hostAddress;
128  DtCmdLine::ValueArg<std::string>* reportedHostAddress;
129  DtCmdLine::ValueArg<int>* sessionId;
130  DtCmdLine::ValueArg<double>* rprFomVersion;
131  DtCmdLine::ValueArg<int>* rprFomRevision;
132  DtCmdLine::SwitchArg* useAdvisories;
133  DtCmdLine::SwitchArg* useGeographicDdm;
134  DtCmdLine::ValueArg<std::string>* federateType;
135  DtCmdLine::SwitchArg* disableRequestUpdates;
136  DtCmdLine::SwitchArg* requestWhenInitialized;
137  };
138 
139  struct Hla1516Args : public Hla13Args
140  {
141  virtual std::string driverName() const;
142  virtual std::string driverClass() const;
143  };
144 
145  struct Hla1516eArgs : public Hla13Args
146  {
147  virtual void setupHlaConfiguration(makVrv::DtConfiguration& config, StealthArgs& args);
148 
149  virtual std::string driverName() const;
150  virtual std::string driverClass() const;
151 
152  DtCmdLine::MultiArg<std::string>* fomModule;
153  DtCmdLine::ValueArg<std::string>* federateName;
154  DtCmdLine::ValueArg<std::string>* localSettingsDesignator;
155  };
156 
158  {
159  DtCmdLine::SwitchArg* disMode;
160  DtCmdLine::SwitchArg* legionMode;
161  DtCmdLine::SwitchArg* hla13Mode;
162  DtCmdLine::SwitchArg* hla1516Mode;
163  DtCmdLine::SwitchArg* hla1516eMode;
164 
165  DtCmdLine::MultiArg<std::string>* pluginsToLoadArg;
166  DtCmdLine::ValueArg<std::string>* loadScenario;
167  DtCmdLine::SwitchArg* doNotLoadDefaultPluginsArg;
168  DtCmdLine::SwitchArg* doNotCheckPluginVersions;
169  DtCmdLine::ValueArg<std::string>* gui;
170  DtCmdLine::ValueArg<std::string>* fowPerspective;
171  DtCmdLine::ValueArg<std::string>* nonVrfObjectsUseUUIDScheme;
172  DtCmdLine::ValueArg<std::string>* useFileCommChannel;
173  DtCmdLine::ValueArg<std::string>* loadSimulationObjectGroup;
174  DtCmdLine::ValueArg<std::string>* defaultSimulationModelSet;
175  DtCmdLine::ValueArg<std::string>* layoutSettingsFile;
176  DtCmdLine::SwitchArg* noAppDataSpotReportDefsLoadingArg;
177  DtCmdLine::MultiArg<std::string>* spotReportDefsHierFilesOrDirs;
178  DtCmdLine::MultiArg<std::string>* spotReportDefsLeafFilesOrDirs;
179  DtCmdLine::ValueArg<std::string>* userScenarioDirectory;
180  DtCmdLine::ValueArg<std::string>* userTerrainDirectory;
181  DtCmdLine::ValueArg<std::string>* sharedSettingsDirectory;
182  DtCmdLine::SwitchArg* useUserSettingsDirectory;
183 
184 #ifdef USE_VLD_MEMORY_TRACKING
185  DtCmdLine::SwitchArg* useVld;
186 #endif
187 
189  DtCmdLine::SwitchArg* pvdModeOnly;
190  DtCmdLine::SwitchArg* stealthModeOnly;
191 
192  std::vector<BaseArgs*> additionalArguments;
193 
195  DtCmdLine::SwitchArg* enableLogFileTimestamps;
196  };
197 
199  virtual void processArgs(makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args);
200  virtual std::vector<DtCmdLine::Arg*> createDefaultArguments(VrfGuiArgs& args);
201 
202  virtual void addArgumentParserAddition(const std::string&, DtAdditionalCommandsFcn fcn);
203 
206  BaseArgs*, std::string& autoStarted);
207 
209  const std::string& driverName, const std::string& driverClass, std::string& fullName);
210  virtual std::string createDriverFileName(const makVrv::DtVrvApplicationConfiguration& a,
211  const std::string& driverClass,const std::string& driverName);
212  virtual void addHlaCommandArguments(std::vector<DtCmdLine::Arg*>& a,
214 
216  virtual void bindObserverModes(const std::vector<std::string>&, makVrf::DtVrfGuiApplication::ObserverModeBindings&) const;
217 
218  protected:
219  virtual void addLegionCommandArguments(std::vector<DtCmdLine::Arg*>&,
221  virtual void addDisCommandArguments(std::vector<DtCmdLine::Arg*>&,
223  virtual void addHla13CommandArguments(std::vector<DtCmdLine::Arg*>&,
225  virtual void addHla1516CommandArguments(std::vector<DtCmdLine::Arg*>&,
227  virtual void addHla1516eCommandArguments(std::vector<DtCmdLine::Arg*>&,
229 
231 
233  virtual std::vector<std::string> defaultObserverMode() const;
234 
235  protected:
236  std::map<std::string, DtAdditionalCommandsFcn> myAdditionalCommands;
237  std::string myAutoStartDriver;
239 
240  std::vector<DtCmdLine::Arg*> myAdditionalCommandLineArguments;
241  };
242 }
243 
244 #ifndef DtVrfGuiCommandLineParser_INL
245 #include <vrfGuiCore/vrfGuiCommandLineParser.inl>
246 #endif
DtCmdLine::ValueArg< int > * sendBufferSize
Definition: vrfGuiCommandLineParser.h:108
DtCmdLine::SwitchArg * noAppDataSpotReportDefsLoadingArg
Definition: vrfGuiCommandLineParser.h:176
DtCmdLine::SwitchArg * requestWhenInitialized
Definition: vrfGuiCommandLineParser.h:136
virtual void processArgs(makVrv::DtVrvApplicationConfiguration &appConfig, StealthArgs &args, std::string &autoStartDriver)
virtual void addHla1516CommandArguments(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)
DtCmdLine::SwitchArg * legionMode
Definition: vrfGuiCommandLineParser.h:160
Definition: vrfGuiCommandLineParser.h:145
DtCmdLine::SwitchArg * doNotLoadDefaultPluginsArg
Definition: vrfGuiCommandLineParser.h:167
virtual std::vector< DtCmdLine::Arg * > createDefaultArguments(VrfGuiArgs &args)
virtual void addLegionCommandArguments(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)
Definition: DtStealthCommandLineProcessor.h:40
DtCmdLine::SwitchArg * useAdvisories
Definition: vrfGuiCommandLineParser.h:132
DtCmdLine::ValueArg< std::string > * defaultSimulationModelSet
Definition: vrfGuiCommandLineParser.h:174
virtual std::vector< std::string > defaultObserverMode() const
Default observer mode in case of none. Plan_View is default.
virtual void processArgs(makVrv::DtVrvApplicationConfiguration &appConfig, StealthArgs &args, std::string &autoStartDriver)
virtual std::string driverClass() const
DtCmdLine::ValueArg< int > * sessionId
Definition: vrfGuiCommandLineParser.h:129
DtCmdLine::ValueArg< int > * siteId
Definition: vrfGuiCommandLineParser.h:67
DtCmdLine::ValueArg< std::string > * userTerrainDirectory
Definition: vrfGuiCommandLineParser.h:180
DtCmdLine::ValueArg< std::string > * userScenarioDirectory
Definition: vrfGuiCommandLineParser.h:179
virtual std::string driverClass() const
DtCmdLine::ValueArg< int > * receiveBufferSize
Definition: vrfGuiCommandLineParser.h:107
DtCmdLine::ValueArg< std::string > * fomMapperInitData
Definition: vrfGuiCommandLineParser.h:126
DtCmdLine::ValueArg< std::string > * reportedHostAddress
Definition: vrfGuiCommandLineParser.h:128
Definition: vrfGuiCommandLineParser.h:75
DtCmdLine::MultiArg< std::string > * multicastAddresses
Definition: vrfGuiCommandLineParser.h:112
DtCmdLine::ValueArg< double > * rprFomVersion
Definition: vrfGuiCommandLineParser.h:130
DtCmdLine::ValueArg< std::string > * deviceAddress
Definition: vrfGuiCommandLineParser.h:101
DtCmdLine::ValueArg< std::string > * fowPerspective
Definition: vrfGuiCommandLineParser.h:170
virtual std::string driverClass() const
DtCmdLine::ValueArg< int > * disVersion
Definition: vrfGuiCommandLineParser.h:99
DtCmdLine::SwitchArg * stealthModeOnly
Definition: vrfGuiCommandLineParser.h:190
virtual void setupDefaultProtocolArguments(BaseArgs &)
virtual void addArgumentParserAddition(const std::string &, DtAdditionalCommandsFcn fcn)
Definition: vrfGuiCommandLineParser.h:60
DtCmdLine::MultiArg< std::string > * spotReportDefsHierFilesOrDirs
Definition: vrfGuiCommandLineParser.h:177
DtCmdLine::ValueArg< int > * sessionId
Definition: vrfGuiCommandLineParser.h:84
std::vector< DtCmdLine::Arg * > myAdditionalCommandLineArguments
Definition: vrfGuiCommandLineParser.h:240
virtual std::string createDriverFileName(const makVrv::DtVrvApplicationConfiguration &a, const std::string &driverClass, const std::string &driverName)
Definition: vrfGuiCommandLineParser.h:91
DtCmdLine::ValueArg< int > * rprFomRevision
Definition: vrfGuiCommandLineParser.h:131
virtual std::string driverName() const =0
DtCmdLine::ValueArg< int > * siteId
Definition: vrfGuiCommandLineParser.h:82
virtual void removeAutoStartDriver()
Delete the driver created to start.
DtCmdLine::ValueArg< int > * appId
Definition: vrfGuiCommandLineParser.h:68
DtCmdLine::ValueArg< std::string > * localSettingsDesignator
Definition: vrfGuiCommandLineParser.h:154
DtCmdLine::ValueArg< std::string > * nonVrfObjectsUseUUIDScheme
Definition: vrfGuiCommandLineParser.h:171
virtual void setupHlaConfiguration(makVrv::DtConfiguration &config, StealthArgs &args)
DtCmdLine::SwitchArg * useUserSettingsDirectory
Definition: vrfGuiCommandLineParser.h:182
DtCmdLine::SwitchArg * doNotCheckPluginVersions
Definition: vrfGuiCommandLineParser.h:168
Definition: vrfGuiCommandLineParser.h:157
virtual std::string driverClass() const
DtCmdLine::MultiArg< std::string > * spotReportDefsLeafFilesOrDirs
Definition: vrfGuiCommandLineParser.h:178
DtCmdLine::ValueArg< int > * numberOfRemoteNetworkThreads
Definition: vrfGuiCommandLineParser.h:71
DtCmdLine::SwitchArg * enableLogFileTimestamps
Whether or not log file timestamps are enabled (default is false)
Definition: vrfGuiCommandLineParser.h:195
DtCmdLine::SwitchArg * useAbsoluteTimeStamps
Definition: vrfGuiCommandLineParser.h:69
virtual void processArgs(makVrv::DtVrvApplicationConfiguration &appConfig, StealthArgs &args)
Modify the app configuration based on the passed-in command line arguments.
virtual void processArgs(makVrv::DtVrvApplicationConfiguration &appConfig, StealthArgs &args, std::string &autoStartDriver)
DtCmdLine::SwitchArg * disableRequestUpdates
Definition: vrfGuiCommandLineParser.h:135
virtual void processCommandLine(makVrv::DtVrvApplicationConfiguration &appConfig, int argc, char **argv)
Parse the command line and modify the appConfig accordingly.
DtCmdLine::SwitchArg * useAsynchIO
Definition: vrfGuiCommandLineParser.h:109
DtCmdLine::ValueArg< int > * fileTransporterReceivePort
Definition: vrfGuiCommandLineParser.h:70
virtual void processArgs(makVrv::DtVrvApplicationConfiguration &appConfig, StealthArgs &args, std::string &autoStartDriver)=0
DtCmdLine::ValueArg< std::string > * useFileCommChannel
Definition: vrfGuiCommandLineParser.h:172
virtual std::string driverName() const
DtCmdLine::ValueArg< std::string > * reportedHostAddress
Definition: vrfGuiCommandLineParser.h:88
virtual void addDisCommandArguments(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)
DtCmdLine::ValueArg< std::string > * fedFileName
Definition: vrfGuiCommandLineParser.h:124
DtCmdLine::MultiArg< std::string > * fomModule
Definition: vrfGuiCommandLineParser.h:152
The Stealth Application&#39;s command line processor.
Definition: DtStealthCommandLineProcessor.h:20
Definition: vrfGuiCommandLineParser.h:139
DtCmdLine::ValueArg< std::string > * hostAddress
Definition: vrfGuiCommandLineParser.h:127
DtCmdLine::ValueArg< std::string > * deviceAddress
Definition: vrfGuiCommandLineParser.h:86
DtCmdLine::ValueArg< std::string > * execName
Definition: vrfGuiCommandLineParser.h:123
virtual void addHla1516eCommandArguments(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)
boost::function< void(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)> DtAdditionalCommandsFcn
Definition: vrfGuiCommandLineParser.h:35
DtCmdLine::ValueArg< std::string > * hostAddress
Definition: vrfGuiCommandLineParser.h:103
DtCmdLine::ValueArg< std::string > * hostAddress
Definition: vrfGuiCommandLineParser.h:87
DtCmdLine::SwitchArg * hla1516eMode
Definition: vrfGuiCommandLineParser.h:163
DtCmdLine::SwitchArg * disableRemoteDiscovery
Definition: vrfGuiCommandLineParser.h:72
DtCmdLine::ValueArg< std::string > * layoutSettingsFile
Definition: vrfGuiCommandLineParser.h:175
std::vector< BaseArgs * > additionalArguments
Definition: vrfGuiCommandLineParser.h:192
virtual std::string driverName() const
DtCmdLine::ValueArg< std::string > * appIdRange
Definition: vrfGuiCommandLineParser.h:105
DtCmdLine::ValueArg< int > * appId
Definition: vrfGuiCommandLineParser.h:83
virtual std::string driverName() const
DtCmdLine::ValueArg< int > * port
Definition: vrfGuiCommandLineParser.h:97
DtCmdLine::ValueArg< std::string > * gui
Definition: vrfGuiCommandLineParser.h:169
This owns a list of display engine configurations.
Definition: DtVrvApplicationConfiguration.h:30
DtCmdLine::MultiArg< std::string > * pluginsToLoadArg
Definition: vrfGuiCommandLineParser.h:165
DtCmdLine::ValueArg< std::string > * sharedSettingsDirectory
Definition: vrfGuiCommandLineParser.h:181
DtCmdLine::ValueArg< int > * sessionId
Definition: vrfGuiCommandLineParser.h:106
DtCmdLine::ValueArg< std::string > * loadScenario
Definition: vrfGuiCommandLineParser.h:166
DtCmdLine::ValueArg< std::string > * federateName
Definition: vrfGuiCommandLineParser.h:153
virtual std::string driverClass() const
virtual std::string driverClass() const =0
std::map< std::string, DtAdditionalCommandsFcn > myAdditionalCommands
Definition: vrfGuiCommandLineParser.h:236
virtual void addAdditionalCommandLineArgument(DtCmdLine::Arg *addlArg)
Adds a new command line argument that will be added when parsing the command line. This class does not take memory ownership. It is up to the supplier of the argument to delete this argument.
Definition: vrfGuiCommandLineParser.h:116
DtCmdLine::ValueArg< int > * multicastTTL
Definition: vrfGuiCommandLineParser.h:111
DtCmdLine::ValueArg< std::string > * destinationAddress
Definition: vrfGuiCommandLineParser.h:100
DtCmdLine::SwitchArg * useIpv6
Definition: vrfGuiCommandLineParser.h:110
DtCmdLine::ValueArg< std::string > * reportedHostAddress
Definition: vrfGuiCommandLineParser.h:104
The MAK Stealth Application&#39;s command line processor.
Definition: vrfGuiCommandLineParser.h:31
DtCmdLine::SwitchArg * hla1516Mode
Definition: vrfGuiCommandLineParser.h:162
virtual void addHla13CommandArguments(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)
DtCmdLine::ValueArg< std::string > * federateType
Definition: vrfGuiCommandLineParser.h:134
The base implementation of a configuration.
Definition: DtConfiguration.h:24
virtual void createDriver(const makVrv::DtVrvApplicationConfiguration &, const makVrv::DtConfiguration &, BaseArgs *, std::string &autoStarted)
Removes all existing drivers created by VR-Forces from the drivers path and creates a new driver...
virtual void addHlaCommandArguments(std::vector< DtCmdLine::Arg * > &a, makVrv::DtStealthCommandLineProcessor::StealthArgs &args, Hla13Args *hlaArgs)
std::string myAutoStartDriver
Definition: vrfGuiCommandLineParser.h:237
DtCmdLine::ValueArg< std::string > * serverAddress
Definition: vrfGuiCommandLineParser.h:85
Contains makVrv::DtStealthCommandLineProcessor class.
DtCmdLine::ValueArg< std::string > * fomMapperLibName
Definition: vrfGuiCommandLineParser.h:125
DtCmdLine::SwitchArg * hla13Mode
Definition: vrfGuiCommandLineParser.h:161
DtCmdLine::SwitchArg * useGeographicDdm
Definition: vrfGuiCommandLineParser.h:133
DtCmdLine::ValueArg< std::string > * subnetMask
Definition: vrfGuiCommandLineParser.h:102
std::map< std::string, std::string > ObserverModeBindings
Definition: vrfGuiApplication.h:49
bool myAllowObserverModeFlags
Definition: vrfGuiCommandLineParser.h:238
DtCmdLine::ValueArg< double > * defaultObjectTimeout
Definition: vrfGuiCommandLineParser.h:113
virtual std::string driverName() const
const std::string & autoStartDriver() const
Definition: vrfGuiCommandLineParser.h:54
DtCmdLine::SwitchArg * disMode
Definition: vrfGuiCommandLineParser.h:159
DtCmdLine::ValueArg< std::string > * loadSimulationObjectGroup
Definition: vrfGuiCommandLineParser.h:173
DtCmdLine::ValueArg< int > * port
Definition: vrfGuiCommandLineParser.h:81
DtCmdLine::ValueArg< int > * exerciseId
Definition: vrfGuiCommandLineParser.h:98
DtVrfGuiCommandLineParser * myParser
Definition: vrfGuiCommandLineParser.h:66
virtual void setupHlaConfiguration(makVrv::DtConfiguration &config, StealthArgs &args)
virtual void bindObserverModes(const std::vector< std::string > &, makVrf::DtVrfGuiApplication::ObserverModeBindings &) const
Parses the observer modes binding line and places result in map. Format is Observer, Mode.
DtCmdLine::SwitchArg * pvdModeOnly
Experimental command line arguments. Available in debug mode only.
Definition: vrfGuiCommandLineParser.h:189

Document ID: Generated on Mon Jun 20 00:38:30 EDT 2022 from SVN revision 244029
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)