VR-Forces 4.10 Class Documentation
 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 {
28  {
29  protected:
30  typedef boost::function<void (std::vector<DtCmdLine::Arg*>&,
32 
33  public:
35 
37 
39  virtual void processCommandLine(makVrv::DtVrvApplicationConfiguration& appConfig, int argc, char** argv);
40 
42  virtual void removeAutoStartDriver();
43 
44  void setAllowObserverModeFlags(bool);
45 
48  virtual void addAdditionalCommandLineArgument(DtCmdLine::Arg* addlArg);
49 
50  const std::string& autoStartDriver() const
51  {
52  return myAutoStartDriver;
53  }
54 
55  protected:
56  struct BaseArgs
57  {
58  virtual void processArgs(makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args, std::string& autoStartDriver) = 0;
59  virtual std::string driverName() const = 0;
60  virtual std::string driverClass() const = 0;
61 
63  DtCmdLine::ValueArg<int>* siteId;
64  DtCmdLine::ValueArg<int>* appId;
65  DtCmdLine::SwitchArg* useAbsoluteTimeStamps;
66  DtCmdLine::ValueArg<int>* fileTransporterReceivePort;
67  };
68 
69  struct DisArgs : public BaseArgs
70  {
71  virtual void processArgs(makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args, std::string& autoStartDriver);
72  virtual std::string driverName() const;
73  virtual std::string driverClass() const;
74 
75  DtCmdLine::ValueArg<int>* port;
76  DtCmdLine::ValueArg<int>* exerciseId;
77  DtCmdLine::ValueArg<int>* disVersion;
78  DtCmdLine::ValueArg<std::string>* destinationAddress;
79  DtCmdLine::ValueArg<std::string>* deviceAddress;
80  DtCmdLine::ValueArg<std::string>* subnetMask;
81  DtCmdLine::ValueArg<std::string>* hostAddress;
82  DtCmdLine::ValueArg<std::string>* reportedHostAddress;
83  DtCmdLine::ValueArg<std::string>* appIdRange;
84  DtCmdLine::ValueArg<int>* sessionId;
85  DtCmdLine::ValueArg<int>* receiveBufferSize;
86  DtCmdLine::ValueArg<int>* sendBufferSize;
87  DtCmdLine::SwitchArg* useAsynchIO;
88  DtCmdLine::SwitchArg* useIpv6;
89  DtCmdLine::ValueArg<int>* multicastTTL;
90  DtCmdLine::MultiArg<std::string>* multicastAddresses;
91  DtCmdLine::ValueArg<double>* defaultObjectTimeout;
92  };
93 
94  struct Hla13Args : public BaseArgs
95  {
96  virtual void processArgs(makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args, std::string& autoStartDriver);
97  virtual void setupHlaConfiguration(makVrv::DtConfiguration& config, StealthArgs& args);
98  virtual std::string driverName() const;
99  virtual std::string driverClass() const;
100 
101  DtCmdLine::ValueArg<std::string>* execName;
102  DtCmdLine::ValueArg<std::string>* fedFileName;
103  DtCmdLine::ValueArg<std::string>* fomMapperLibName;
104  DtCmdLine::ValueArg<std::string>* fomMapperInitData;
105  DtCmdLine::ValueArg<std::string>* hostAddress;
106  DtCmdLine::ValueArg<std::string>* reportedHostAddress;
107  DtCmdLine::ValueArg<int>* sessionId;
108  DtCmdLine::ValueArg<double>* rprFomVersion;
109  DtCmdLine::ValueArg<int>* rprFomRevision;
110  DtCmdLine::SwitchArg* useAdvisories;
111  DtCmdLine::SwitchArg* useGeographicDdm;
112  DtCmdLine::ValueArg<std::string>* federateType;
113  };
114 
115  struct Hla1516Args : public Hla13Args
116  {
117  virtual std::string driverName() const;
118  virtual std::string driverClass() const;
119  };
120 
121  struct Hla1516eArgs : public Hla13Args
122  {
123  virtual void setupHlaConfiguration(makVrv::DtConfiguration& config, StealthArgs& args);
124 
125  virtual std::string driverName() const;
126  virtual std::string driverClass() const;
127 
128  DtCmdLine::MultiArg<std::string>* fomModule;
129  DtCmdLine::ValueArg<std::string>* federateName;
130  DtCmdLine::ValueArg<std::string>* localSettingsDesignator;
131  };
132 
134  {
135  DtCmdLine::SwitchArg* disMode;
136  DtCmdLine::SwitchArg* hla13Mode;
137  DtCmdLine::SwitchArg* hla1516Mode;
138  DtCmdLine::SwitchArg* hla1516eMode;
139 
140  DtCmdLine::MultiArg<std::string>* pluginsToLoadArg;
141  DtCmdLine::ValueArg<std::string>* loadScenario;
142  DtCmdLine::SwitchArg* doNotLoadDefaultPluginsArg;
143  DtCmdLine::SwitchArg* doNotCheckPluginVersions;
144  DtCmdLine::ValueArg<std::string>* gui;
145  DtCmdLine::ValueArg<std::string>* fowPerspective;
146  DtCmdLine::ValueArg<std::string>* nonVrfObjectsUseUUIDScheme;
147  DtCmdLine::ValueArg<std::string>* useFileCommChannel;
148  DtCmdLine::ValueArg<std::string>* loadSimulationObjectGroup;
149  DtCmdLine::ValueArg<std::string>* defaultSimulationModelSet;
150  DtCmdLine::ValueArg<std::string>* layoutSettingsFile;
151  DtCmdLine::SwitchArg* noAppDataSpotReportDefsLoadingArg;
152  DtCmdLine::MultiArg<std::string>* spotReportDefsHierFilesOrDirs;
153  DtCmdLine::MultiArg<std::string>* spotReportDefsLeafFilesOrDirs;
154  DtCmdLine::ValueArg<std::string>* userScenarioDirectory;
155  DtCmdLine::ValueArg<std::string>* userTerrainDirectory;
156  DtCmdLine::ValueArg<std::string>* sharedSettingsDirectory;
157  DtCmdLine::SwitchArg* useUserSettingsDirectory;
158 
159 #ifdef USE_VLD_MEMORY_TRACKING
160  DtCmdLine::SwitchArg* useVld;
161 #endif
162 
164  DtCmdLine::SwitchArg* pvdModeOnly;
165  DtCmdLine::SwitchArg* stealthModeOnly;
166 
167  std::vector<BaseArgs*> additionalArguments;
168 
170  DtCmdLine::SwitchArg* enableLogFileTimestamps;
171  };
172 
174  virtual void processArgs(makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args);
175  virtual std::vector<DtCmdLine::Arg*> createDefaultArguments(VrfGuiArgs& args);
176 
177  virtual void addArgumentParserAddition(const std::string&, DtAdditionalCommandsFcn fcn);
178 
181  BaseArgs*, std::string& autoStarted);
182 
184  const std::string& driverName, const std::string& driverClass, std::string& fullName);
185  virtual std::string createDriverFileName(const makVrv::DtVrvApplicationConfiguration& a,
186  const std::string& driverClass,const std::string& driverName);
187  virtual void addHlaCommandArguments(std::vector<DtCmdLine::Arg*>& a,
189 
191  virtual void bindObserverModes(const std::vector<std::string>&, makVrf::DtVrfGuiApplication::ObserverModeBindings&) const;
192 
193  protected:
194  virtual void addDisCommandArguments(std::vector<DtCmdLine::Arg*>&,
196  virtual void addHla13CommandArguments(std::vector<DtCmdLine::Arg*>&,
198  virtual void addHla1516CommandArguments(std::vector<DtCmdLine::Arg*>&,
200  virtual void addHla1516eCommandArguments(std::vector<DtCmdLine::Arg*>&,
202 
204 
206  virtual std::vector<std::string> defaultObserverMode() const;
207 
208  protected:
209  std::map<std::string, DtAdditionalCommandsFcn> myAdditionalCommands;
210  std::string myAutoStartDriver;
212 
213  std::vector<DtCmdLine::Arg*> myAdditionalCommandLineArguments;
214  };
215 }
216 
217 #ifndef DtVrfGuiCommandLineParser_INL
218 #include <vrfGuiCore/vrfGuiCommandLineParser.inl>
219 #endif
DtCmdLine::ValueArg< int > * sendBufferSize
Definition: vrfGuiCommandLineParser.h:86
DtCmdLine::SwitchArg * noAppDataSpotReportDefsLoadingArg
Definition: vrfGuiCommandLineParser.h:151
virtual void addHla1516CommandArguments(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)
Definition: vrfGuiCommandLineParser.h:121
DtCmdLine::SwitchArg * doNotLoadDefaultPluginsArg
Definition: vrfGuiCommandLineParser.h:142
virtual std::vector< DtCmdLine::Arg * > createDefaultArguments(VrfGuiArgs &args)
Definition: DtStealthCommandLineProcessor.h:40
DtCmdLine::SwitchArg * useAdvisories
Definition: vrfGuiCommandLineParser.h:110
DtCmdLine::ValueArg< std::string > * defaultSimulationModelSet
Definition: vrfGuiCommandLineParser.h:149
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)
DtCmdLine::ValueArg< int > * sessionId
Definition: vrfGuiCommandLineParser.h:107
DtCmdLine::ValueArg< int > * siteId
Definition: vrfGuiCommandLineParser.h:63
DtCmdLine::ValueArg< std::string > * userTerrainDirectory
Definition: vrfGuiCommandLineParser.h:155
DtCmdLine::ValueArg< std::string > * userScenarioDirectory
Definition: vrfGuiCommandLineParser.h:154
virtual std::string driverClass() const
DtCmdLine::ValueArg< int > * receiveBufferSize
Definition: vrfGuiCommandLineParser.h:85
DtCmdLine::ValueArg< std::string > * fomMapperInitData
Definition: vrfGuiCommandLineParser.h:104
DtCmdLine::ValueArg< std::string > * reportedHostAddress
Definition: vrfGuiCommandLineParser.h:106
DtCmdLine::MultiArg< std::string > * multicastAddresses
Definition: vrfGuiCommandLineParser.h:90
DtCmdLine::ValueArg< double > * rprFomVersion
Definition: vrfGuiCommandLineParser.h:108
DtCmdLine::ValueArg< std::string > * deviceAddress
Definition: vrfGuiCommandLineParser.h:79
DtCmdLine::ValueArg< std::string > * fowPerspective
Definition: vrfGuiCommandLineParser.h:145
virtual std::string driverClass() const
DtCmdLine::ValueArg< int > * disVersion
Definition: vrfGuiCommandLineParser.h:77
DtCmdLine::SwitchArg * stealthModeOnly
Definition: vrfGuiCommandLineParser.h:165
virtual void setupDefaultProtocolArguments(BaseArgs &)
virtual void addArgumentParserAddition(const std::string &, DtAdditionalCommandsFcn fcn)
Definition: vrfGuiCommandLineParser.h:56
DtCmdLine::MultiArg< std::string > * spotReportDefsHierFilesOrDirs
Definition: vrfGuiCommandLineParser.h:152
std::vector< DtCmdLine::Arg * > myAdditionalCommandLineArguments
Definition: vrfGuiCommandLineParser.h:213
virtual std::string createDriverFileName(const makVrv::DtVrvApplicationConfiguration &a, const std::string &driverClass, const std::string &driverName)
Definition: vrfGuiCommandLineParser.h:69
DtCmdLine::ValueArg< int > * rprFomRevision
Definition: vrfGuiCommandLineParser.h:109
virtual std::string driverName() const =0
virtual void removeAutoStartDriver()
Delete the driver created to start.
DtCmdLine::ValueArg< int > * appId
Definition: vrfGuiCommandLineParser.h:64
DtCmdLine::ValueArg< std::string > * localSettingsDesignator
Definition: vrfGuiCommandLineParser.h:130
DtCmdLine::ValueArg< std::string > * nonVrfObjectsUseUUIDScheme
Definition: vrfGuiCommandLineParser.h:146
virtual void setupHlaConfiguration(makVrv::DtConfiguration &config, StealthArgs &args)
DtCmdLine::SwitchArg * useUserSettingsDirectory
Definition: vrfGuiCommandLineParser.h:157
DtCmdLine::SwitchArg * doNotCheckPluginVersions
Definition: vrfGuiCommandLineParser.h:143
Definition: vrfGuiCommandLineParser.h:133
virtual std::string driverClass() const
DtCmdLine::MultiArg< std::string > * spotReportDefsLeafFilesOrDirs
Definition: vrfGuiCommandLineParser.h:153
DtCmdLine::SwitchArg * enableLogFileTimestamps
Whether or not log file timestamps are enabled (default is false)
Definition: vrfGuiCommandLineParser.h:170
DtCmdLine::SwitchArg * useAbsoluteTimeStamps
Definition: vrfGuiCommandLineParser.h:65
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)
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:87
DtCmdLine::ValueArg< int > * fileTransporterReceivePort
Definition: vrfGuiCommandLineParser.h:66
virtual void processArgs(makVrv::DtVrvApplicationConfiguration &appConfig, StealthArgs &args, std::string &autoStartDriver)=0
DtCmdLine::ValueArg< std::string > * useFileCommChannel
Definition: vrfGuiCommandLineParser.h:147
virtual std::string driverName() const
virtual void addDisCommandArguments(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)
DtCmdLine::ValueArg< std::string > * fedFileName
Definition: vrfGuiCommandLineParser.h:102
DtCmdLine::MultiArg< std::string > * fomModule
Definition: vrfGuiCommandLineParser.h:128
The Stealth Application&#39;s command line processor.
Definition: DtStealthCommandLineProcessor.h:20
Definition: vrfGuiCommandLineParser.h:115
DtCmdLine::ValueArg< std::string > * hostAddress
Definition: vrfGuiCommandLineParser.h:105
DtCmdLine::ValueArg< std::string > * execName
Definition: vrfGuiCommandLineParser.h:101
virtual void addHla1516eCommandArguments(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)
boost::function< void(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)> DtAdditionalCommandsFcn
Definition: vrfGuiCommandLineParser.h:31
DtCmdLine::ValueArg< std::string > * hostAddress
Definition: vrfGuiCommandLineParser.h:81
DtCmdLine::SwitchArg * hla1516eMode
Definition: vrfGuiCommandLineParser.h:138
DtCmdLine::ValueArg< std::string > * layoutSettingsFile
Definition: vrfGuiCommandLineParser.h:150
std::vector< BaseArgs * > additionalArguments
Definition: vrfGuiCommandLineParser.h:167
virtual std::string driverName() const
DtCmdLine::ValueArg< std::string > * appIdRange
Definition: vrfGuiCommandLineParser.h:83
DtCmdLine::ValueArg< int > * port
Definition: vrfGuiCommandLineParser.h:75
DtCmdLine::ValueArg< std::string > * gui
Definition: vrfGuiCommandLineParser.h:144
This owns a list of display engine configurations.
Definition: DtVrvApplicationConfiguration.h:27
DtCmdLine::MultiArg< std::string > * pluginsToLoadArg
Definition: vrfGuiCommandLineParser.h:140
DtCmdLine::ValueArg< std::string > * sharedSettingsDirectory
Definition: vrfGuiCommandLineParser.h:156
DtCmdLine::ValueArg< int > * sessionId
Definition: vrfGuiCommandLineParser.h:84
DtCmdLine::ValueArg< std::string > * loadScenario
Definition: vrfGuiCommandLineParser.h:141
DtCmdLine::ValueArg< std::string > * federateName
Definition: vrfGuiCommandLineParser.h:129
virtual std::string driverClass() const
virtual std::string driverClass() const =0
std::map< std::string, DtAdditionalCommandsFcn > myAdditionalCommands
Definition: vrfGuiCommandLineParser.h:209
virtual void addAdditionalCommandLineArgument(DtCmdLine::Arg *addlArg)
Adds a new command line argument that will be added when parsing the command line.
Definition: vrfGuiCommandLineParser.h:94
DtCmdLine::ValueArg< int > * multicastTTL
Definition: vrfGuiCommandLineParser.h:89
DtCmdLine::ValueArg< std::string > * destinationAddress
Definition: vrfGuiCommandLineParser.h:78
DtCmdLine::SwitchArg * useIpv6
Definition: vrfGuiCommandLineParser.h:88
DtCmdLine::ValueArg< std::string > * reportedHostAddress
Definition: vrfGuiCommandLineParser.h:82
The MAK Stealth Application&#39;s command line processor.
Definition: vrfGuiCommandLineParser.h:27
DtCmdLine::SwitchArg * hla1516Mode
Definition: vrfGuiCommandLineParser.h:137
virtual void addHla13CommandArguments(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)
DtCmdLine::ValueArg< std::string > * federateType
Definition: vrfGuiCommandLineParser.h:112
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:210
Contains makVrv::DtStealthCommandLineProcessor class.
DtCmdLine::ValueArg< std::string > * fomMapperLibName
Definition: vrfGuiCommandLineParser.h:103
DtCmdLine::SwitchArg * hla13Mode
Definition: vrfGuiCommandLineParser.h:136
DtCmdLine::SwitchArg * useGeographicDdm
Definition: vrfGuiCommandLineParser.h:111
DtCmdLine::ValueArg< std::string > * subnetMask
Definition: vrfGuiCommandLineParser.h:80
std::map< std::string, std::string > ObserverModeBindings
Definition: vrfGuiApplication.h:43
bool myAllowObserverModeFlags
Definition: vrfGuiCommandLineParser.h:211
DtCmdLine::ValueArg< double > * defaultObjectTimeout
Definition: vrfGuiCommandLineParser.h:91
virtual std::string driverName() const
const std::string & autoStartDriver() const
Definition: vrfGuiCommandLineParser.h:50
DtCmdLine::SwitchArg * disMode
Definition: vrfGuiCommandLineParser.h:135
DtCmdLine::ValueArg< std::string > * loadSimulationObjectGroup
Definition: vrfGuiCommandLineParser.h:148
DtCmdLine::ValueArg< int > * exerciseId
Definition: vrfGuiCommandLineParser.h:76
DtVrfGuiCommandLineParser * myParser
Definition: vrfGuiCommandLineParser.h:62
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:164

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)