VR-Engage  2.2
Loading...
Searching...
No Matches
vreCommandLineProcessor.h
Go to the documentation of this file.
1/*******************************************************************************
2** Copyright (c) 2025 MAK Technologies
3** All rights reserved.
4*******************************************************************************/
5
6//! \file vreCommandLineProcessor.h
7//! \ingroup vreUtil
8//! \brief Processes command line arguments for VREngage application
9//!
10//! This file contains the DtVreCommandLineProcessor class which handles command line
11//! processing for the VREngage application. It supports various connection protocols
12//! including DIS, HLA13, HLA1516, and HLA1516e, and enables automatic driver creation
13//! and configuration based on command line arguments.
14
15#pragma once
16
17#include "vreUtil/export.h"
18
19#include <vrvCore/DtStealthCommandLineProcessor.h>
20#include <vrvCore/DtVrvApplicationConfiguration.h>
21
22#include <vrvUtil/DtDisplayConfiguration.h>
23#include <vrvUtil/DtVrvCommandLineParser.h>
24
25#include <cmdLine/cmdArg.h>
26#include <cmdLine/cmdLine.h>
27
28namespace makVre
29{
30//! \brief Command line processor for the VREngage application
31//!
32//! This class processes command line arguments for the VREngage application
33//! and configures the application accordingly. It extends the VR-Forces command
34//! line processor with support for protocol-specific options (--dis, --hla13,
35//! --hla1516, or --hla1516e). Using these options generates and auto-starts
36//! a new driver using the supplied arguments.
37class UTIL_DLL DtVreCommandLineProcessor : public makVrv::DtStealthCommandLineProcessor
38{
39protected:
41 boost::function<void(std::vector<DtCmdLine::Arg*>&, makVrv::DtStealthCommandLineProcessor::StealthArgs&)>;
42
43public:
44 //! \brief Default constructor
45 //!
46 //! Creates a command line processor for VREngage and initializes the
47 //! command line options
49
50 //! \brief Virtual destructor
51 //!
52 //! Cleans up any resources allocated by the command line processor
53 virtual ~DtVreCommandLineProcessor() override;
54
55 //! \brief Processes command line arguments and updates application configuration
56 //! \param appConfig Application configuration to update based on command line args
57 //! \param argc Number of command line arguments
58 //! \param argv Array of command line argument strings
59 //!
60 //! This method parses the command line arguments and modifies the application
61 //! configuration accordingly. It handles protocol-specific options and creates
62 //! drivers as needed.
63 virtual void processCommandLine(makVrv::DtVrvApplicationConfiguration& appConfig, int argc, char** argv) override;
64
65 //! \brief Removes any automatically created driver
66 //!
67 //! This method deletes any driver that was created by the command line processor
68 //! for automatic connection startup
69 virtual void removeAutoStartDriver();
70
71 //! \brief Gets the name of the automatically created driver
72 //! \return Name of the auto-start driver, or empty string if none created
73 //!
74 //! This method returns the name of the driver that was automatically created
75 //! based on command line arguments
76 const std::string& autoStartDriver() const { return myAutoStartDriver; }
77
78 //! \brief Gets the initialization settings file path
79 //! \return Path to the initialization settings file
80 //!
81 //! Returns the initialization settings file path specified on the command line
82 std::string customSettingsFile() const;
83
84
85 std::string customSettingsString() const;
86
87 //! \brief Gets the station name
88 //! \return Station name specified on the command line
89 //!
90 //! Returns the station name specified on the command line
91 std::string stationName() const;
92
93 //! \brief Gets the application mode
94 //! \return Application mode specified on the command line
95 //!
96 //! Returns the application mode specified on the command line (e.g., air, ground, sensor)
97 std::string applicationMode() const;
98
99protected:
100 //! \brief Base structure for protocol-independent parameters
101 //!
102 //! This struct contains parameters common to all protocol types and serves
103 //! as a base class for protocol-specific parameter structures
104 struct BaseArgs
105 {
106 virtual void processArgs(
107 makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args, std::string& autoStartDriver) = 0;
108 virtual std::string driverName() const = 0;
109 virtual std::string driverClass() const = 0;
110
112 DtCmdLine::ValueArg<int>* siteId;
113 DtCmdLine::ValueArg<int>* appId;
114 DtCmdLine::SwitchArg* useAbsoluteTimeStamps;
115 DtCmdLine::ValueArg<int>* fileTransporterReceivePort;
116 };
117
118 //! \brief Structure containing DIS-specific parameters
119 //!
120 //! This structure extends BaseArgs with parameters specific to the
121 //! Distributed Interactive Simulation (DIS) protocol
122 struct DisArgs : public BaseArgs
123 {
124 virtual void processArgs(
125 makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args, std::string& autoStartDriver) override;
126 virtual std::string driverName() const override;
127 virtual std::string driverClass() const override;
128
129 DtCmdLine::ValueArg<int>* port;
130 DtCmdLine::ValueArg<int>* exerciseId;
131 DtCmdLine::ValueArg<int>* disVersion;
132 DtCmdLine::ValueArg<std::string>* destinationAddress;
133 DtCmdLine::ValueArg<std::string>* deviceAddress;
134 DtCmdLine::ValueArg<std::string>* subnetMask;
135 DtCmdLine::ValueArg<std::string>* hostAddress;
136 DtCmdLine::ValueArg<std::string>* reportedHostAddress;
137 DtCmdLine::ValueArg<std::string>* appIdRange;
138 DtCmdLine::ValueArg<int>* sessionId;
139 DtCmdLine::ValueArg<int>* receiveBufferSize;
140 DtCmdLine::ValueArg<int>* sendBufferSize;
141 DtCmdLine::SwitchArg* useAsynchIO;
142 DtCmdLine::SwitchArg* useIpv6;
143 DtCmdLine::ValueArg<int>* multicastTTL;
144 DtCmdLine::MultiArg<std::string>* multicastAddresses;
145 DtCmdLine::ValueArg<double>* defaultObjectTimeout;
146 };
147
148 //! \brief Structure containing HLA 1.3 specific parameters
149 //!
150 //! This structure extends BaseArgs with parameters specific to the
151 //! High Level Architecture (HLA) 1.3 protocol
152 struct Hla13Args : public BaseArgs
153 {
154 virtual void processArgs(
155 makVrv::DtVrvApplicationConfiguration& appConfig, StealthArgs& args, std::string& autoStartDriver) override;
156 virtual void setupHlaConfiguration(makVrv::DtConfiguration& config, StealthArgs& args);
157 virtual std::string driverName() const override;
158 virtual std::string driverClass() const override;
159
160 DtCmdLine::ValueArg<std::string>* execName;
161 DtCmdLine::ValueArg<std::string>* fedFileName;
162 DtCmdLine::ValueArg<std::string>* fomMapperLibName;
163 DtCmdLine::ValueArg<std::string>* fomMapperInitData;
164 DtCmdLine::ValueArg<std::string>* hostAddress;
165 DtCmdLine::ValueArg<std::string>* reportedHostAddress;
166 DtCmdLine::ValueArg<int>* sessionId;
167 DtCmdLine::ValueArg<double>* rprFomVersion;
168 DtCmdLine::ValueArg<int>* rprFomRevision;
169 DtCmdLine::SwitchArg* useAdvisories;
170 DtCmdLine::SwitchArg* useGeographicDdm;
171 DtCmdLine::ValueArg<std::string>* federateType;
172 };
173
174 //! \brief Structure containing HLA 1516 specific parameters
175 //!
176 //! This structure extends Hla13Args with parameters specific to the
177 //! High Level Architecture (HLA) 1516 protocol
178 struct Hla1516Args : public Hla13Args
179 {
180 virtual std::string driverName() const override;
181 virtual std::string driverClass() const override;
182 };
183
184 //! \brief Structure containing HLA 1516e specific parameters
185 //!
186 //! This structure extends Hla13Args with parameters specific to the
187 //! High Level Architecture (HLA) 1516e protocol
188 struct Hla1516eArgs : public Hla13Args
189 {
190 virtual void setupHlaConfiguration(makVrv::DtConfiguration& config, StealthArgs& args) override;
191
192 virtual std::string driverName() const override;
193 virtual std::string driverClass() const override;
194
195 DtCmdLine::MultiArg<std::string>* fomModule;
196 DtCmdLine::ValueArg<std::string>* federateName;
197 DtCmdLine::ValueArg<std::string>* localSettingsDesignator;
198 };
199
200 //! \brief Structure containing VREngage specific parameters
201 //!
202 //! This structure extends StealthArgs with parameters specific to VREngage
203 //! and VR-Forces, as well as connection-specific parameters. Based on
204 //! the VR-Forces DtVrfGuiCommandLineParser::VrfGuiArgs structure.
205 struct VreArgs : public makVrv::DtStealthCommandLineProcessor::StealthArgs
206 {
207 DtCmdLine::SwitchArg* disMode;
208 DtCmdLine::SwitchArg* hla13Mode;
209 DtCmdLine::SwitchArg* hla1516Mode;
210 DtCmdLine::SwitchArg* hla1516eMode;
211 DtCmdLine::SwitchArg* enableSensorFX;
212
213 DtCmdLine::ValueArg<std::string>* customSettingsFile;
214 DtCmdLine::ValueArg<std::string>* customSettingsString;
215 DtCmdLine::ValueArg<std::string>* stationName;
216
217 makVrv::SwitchArg* airMode;
218 makVrv::SwitchArg* groundMode;
219 makVrv::SwitchArg* sensorMode;
220
221 DtCmdLine::ValueArg<std::string>* applicationModeArg;
222 makVrv::SwitchArg* enableAdminMode;
223 makVrv::SwitchArg* disableEscapeKeyArg;
224
225 makVrv::SwitchArg* windowedMode;
226
227 std::vector<BaseArgs*> additionalArguments;
228 };
229
230 //! \brief Updates application configuration based on parsed arguments
231 //! \param appConfig Application configuration to update
232 //! \param args Parsed command line arguments
233 //!
234 //! This method updates the application configuration based on the command line
235 //! arguments that have been parsed into the VreArgs structure
236 virtual void processArgs(makVrv::DtVrvApplicationConfiguration& appConfig, VreArgs& args);
237
238 //! \brief Creates a new driver after removing existing VR-Forces drivers
239 //! \param appConfig Application configuration
240 //! \param config Driver configuration
241 //! \param baseArgs Base arguments for driver creation
242 //! \param autoStarted Output parameter to store the name of the created driver
243 //!
244 //! This method removes all existing drivers created by VR-Forces from the
245 //! drivers path and creates a new driver based on the provided configuration
246 virtual void createDriver(const makVrv::DtVrvApplicationConfiguration& appConfig,
247 const makVrv::DtConfiguration& config, BaseArgs* baseArgs, std::string& autoStarted);
248
249 //! \brief Creates a new driver file with specific name and class
250 //! \param app Application configuration
251 //! \param config Driver configuration
252 //! \param driverName Name for the driver
253 //! \param driverClass Class of the driver
254 //! \param fullName Output parameter to store the full path of the created driver
255 //! \return Name of the created driver
256 //!
257 //! This method creates a new driver file based on the provided configuration,
258 //! with the specified name and class
259 virtual std::string createDriver(const makVrv::DtVrvApplicationConfiguration& app,
260 const makVrv::DtConfiguration& config, const std::string& driverName, const std::string& driverClass,
261 std::string& fullName);
262
263 //! \brief Generates a filename for a new auto-start driver file
264 //! \param app Application configuration
265 //! \param driverClass Class of the driver
266 //! \param driverName Name of the driver
267 //! \return Generated filename for the driver
268 //!
269 //! This method generates an appropriate filename for a new auto-start driver file
270 virtual std::string createDriverFileName(
271 const makVrv::DtVrvApplicationConfiguration& app, const std::string& driverClass, const std::string& driverName);
272
273protected:
274 //! \name Protocol-Specific Argument Handlers
275 //! \brief Methods to add protocol-specific flags to the parser
276 //!
277 //! These methods are called when the optional flags "--dis", "--hla13", etc. are
278 //! found on the command line to add protocol-specific command line arguments.
279 //! @{
280
281 //! \brief Adds DIS-specific command line arguments
282 //! \param argumentOrder Vector of arguments to append to
283 //! \param args VreArgs structure to update with new arguments
284 virtual void addDisCommandArguments(std::vector<DtCmdLine::Arg*>& argumentOrder, VreArgs& args);
285
286 //! \brief Adds HLA 1.3 specific command line arguments
287 //! \param argumentOrder Vector of arguments to append to
288 //! \param args VreArgs structure to update with new arguments
289 virtual void addHla13CommandArguments(std::vector<DtCmdLine::Arg*>& argumentOrder, VreArgs& args);
290
291 //! \brief Adds HLA 1516 specific command line arguments
292 //! \param argumentOrder Vector of arguments to append to
293 //! \param args VreArgs structure to update with new arguments
294 virtual void addHla1516CommandArguments(std::vector<DtCmdLine::Arg*>& argumentOrder, VreArgs& args);
295
296 //! \brief Adds HLA 1516e specific command line arguments
297 //! \param argumentOrder Vector of arguments to append to
298 //! \param args VreArgs structure to update with new arguments
299 virtual void addHla1516eCommandArguments(std::vector<DtCmdLine::Arg*>& argumentOrder, VreArgs& args);
300 //! @}
301
302 //! \brief Adds command line arguments common to all HLA versions
303 //! \param argumentOrder Vector of arguments to append to
304 //! \param args VreArgs structure to update with new arguments
305 //! \param hlaArgs HLA-specific arguments structure to update
306 //!
307 //! This method adds command line arguments that are common to all HLA versions
308 virtual void addHlaCommandArguments(std::vector<DtCmdLine::Arg*>& argumentOrder, VreArgs& args, Hla13Args* hlaArgs);
309
310 //! \brief Sets up default argument values
311 //! \param args VreArgs structure to set up defaults for
312 //! \param argumentOrder Vector of arguments to append to
313 //!
314 //! This method initializes default values for any command line arguments
315 //! not explicitly specified by the user
316 virtual void setupArguments(VreArgs& args, std::vector<DtCmdLine::Arg*>& argumentOrder);
317
318 //! \brief Map of command names to handler functions for additional commands
319 std::map<std::string, DtAdditionalCommandsFcn> myAdditionalCommands;
320
321 //! \brief Name of the automatically created driver
322 std::string myAutoStartDriver;
323
324 //! \brief List of additional command line arguments
325 std::vector<DtCmdLine::Arg*> myAdditionalCommandLineArguments;
326
327 //! \brief Current application mode
328 std::string myApplicationMode;
329};
330
331} // namespace makVre
virtual void processArgs(makVrv::DtVrvApplicationConfiguration &appConfig, VreArgs &args)
Updates application configuration based on parsed arguments.
virtual void processCommandLine(makVrv::DtVrvApplicationConfiguration &appConfig, int argc, char **argv) override
Processes command line arguments and updates application configuration.
boost::function< void(std::vector< DtCmdLine::Arg * > &, makVrv::DtStealthCommandLineProcessor::StealthArgs &)> DtAdditionalCommandsFcn
Definition vreCommandLineProcessor.h:40
virtual void removeAutoStartDriver()
Removes any automatically created driver.
virtual void addHla1516eCommandArguments(std::vector< DtCmdLine::Arg * > &argumentOrder, VreArgs &args)
Adds HLA 1516e specific command line arguments.
virtual std::string createDriverFileName(const makVrv::DtVrvApplicationConfiguration &app, const std::string &driverClass, const std::string &driverName)
Generates a filename for a new auto-start driver file.
virtual void createDriver(const makVrv::DtVrvApplicationConfiguration &appConfig, const makVrv::DtConfiguration &config, BaseArgs *baseArgs, std::string &autoStarted)
Creates a new driver after removing existing VR-Forces drivers.
virtual void setupArguments(VreArgs &args, std::vector< DtCmdLine::Arg * > &argumentOrder)
Sets up default argument values.
virtual void addDisCommandArguments(std::vector< DtCmdLine::Arg * > &argumentOrder, VreArgs &args)
Adds DIS-specific command line arguments.
std::string applicationMode() const
Gets the application mode.
std::string myAutoStartDriver
Name of the automatically created driver.
Definition vreCommandLineProcessor.h:322
virtual void addHla13CommandArguments(std::vector< DtCmdLine::Arg * > &argumentOrder, VreArgs &args)
Adds HLA 1.3 specific command line arguments.
const std::string & autoStartDriver() const
Gets the name of the automatically created driver.
Definition vreCommandLineProcessor.h:76
virtual ~DtVreCommandLineProcessor() override
Virtual destructor.
virtual void addHla1516CommandArguments(std::vector< DtCmdLine::Arg * > &argumentOrder, VreArgs &args)
Adds HLA 1516 specific command line arguments.
std::vector< DtCmdLine::Arg * > myAdditionalCommandLineArguments
List of additional command line arguments.
Definition vreCommandLineProcessor.h:325
virtual std::string createDriver(const makVrv::DtVrvApplicationConfiguration &app, const makVrv::DtConfiguration &config, const std::string &driverName, const std::string &driverClass, std::string &fullName)
Creates a new driver file with specific name and class.
std::string stationName() const
Gets the station name.
std::string customSettingsString() const
std::string myApplicationMode
Current application mode.
Definition vreCommandLineProcessor.h:328
std::string customSettingsFile() const
Gets the initialization settings file path.
DtVreCommandLineProcessor()
Default constructor.
std::map< std::string, DtAdditionalCommandsFcn > myAdditionalCommands
Map of command names to handler functions for additional commands.
Definition vreCommandLineProcessor.h:319
virtual void addHlaCommandArguments(std::vector< DtCmdLine::Arg * > &argumentOrder, VreArgs &args, Hla13Args *hlaArgs)
Adds command line arguments common to all HLA versions.
Defines export macros for the VREngage Utility library.
#define UTIL_DLL
Export/import macro for non-Windows platforms.
Definition export.h:39
Include export definitions for this library.
Definition glsVreMessageUtil.h:49
Base structure for protocol-independent parameters.
Definition vreCommandLineProcessor.h:105
DtCmdLine::ValueArg< int > * appId
Definition vreCommandLineProcessor.h:113
virtual std::string driverClass() const =0
DtCmdLine::SwitchArg * useAbsoluteTimeStamps
Definition vreCommandLineProcessor.h:114
virtual void processArgs(makVrv::DtVrvApplicationConfiguration &appConfig, StealthArgs &args, std::string &autoStartDriver)=0
virtual std::string driverName() const =0
DtCmdLine::ValueArg< int > * siteId
Definition vreCommandLineProcessor.h:112
DtVreCommandLineProcessor * myParser
Definition vreCommandLineProcessor.h:111
DtCmdLine::ValueArg< int > * fileTransporterReceivePort
Definition vreCommandLineProcessor.h:115
Structure containing DIS-specific parameters.
Definition vreCommandLineProcessor.h:123
virtual std::string driverName() const override
DtCmdLine::ValueArg< std::string > * destinationAddress
Definition vreCommandLineProcessor.h:132
DtCmdLine::ValueArg< int > * disVersion
Definition vreCommandLineProcessor.h:131
virtual std::string driverClass() const override
DtCmdLine::ValueArg< std::string > * subnetMask
Definition vreCommandLineProcessor.h:134
DtCmdLine::ValueArg< std::string > * appIdRange
Definition vreCommandLineProcessor.h:137
DtCmdLine::ValueArg< std::string > * reportedHostAddress
Definition vreCommandLineProcessor.h:136
DtCmdLine::MultiArg< std::string > * multicastAddresses
Definition vreCommandLineProcessor.h:144
DtCmdLine::SwitchArg * useIpv6
Definition vreCommandLineProcessor.h:142
DtCmdLine::ValueArg< std::string > * hostAddress
Definition vreCommandLineProcessor.h:135
DtCmdLine::SwitchArg * useAsynchIO
Definition vreCommandLineProcessor.h:141
DtCmdLine::ValueArg< int > * multicastTTL
Definition vreCommandLineProcessor.h:143
DtCmdLine::ValueArg< int > * sessionId
Definition vreCommandLineProcessor.h:138
DtCmdLine::ValueArg< int > * port
Definition vreCommandLineProcessor.h:129
DtCmdLine::ValueArg< int > * receiveBufferSize
Definition vreCommandLineProcessor.h:139
DtCmdLine::ValueArg< std::string > * deviceAddress
Definition vreCommandLineProcessor.h:133
DtCmdLine::ValueArg< int > * exerciseId
Definition vreCommandLineProcessor.h:130
DtCmdLine::ValueArg< double > * defaultObjectTimeout
Definition vreCommandLineProcessor.h:145
virtual void processArgs(makVrv::DtVrvApplicationConfiguration &appConfig, StealthArgs &args, std::string &autoStartDriver) override
DtCmdLine::ValueArg< int > * sendBufferSize
Definition vreCommandLineProcessor.h:140
Structure containing HLA 1.3 specific parameters.
Definition vreCommandLineProcessor.h:153
virtual std::string driverClass() const override
DtCmdLine::ValueArg< double > * rprFomVersion
Definition vreCommandLineProcessor.h:167
DtCmdLine::SwitchArg * useGeographicDdm
Definition vreCommandLineProcessor.h:170
DtCmdLine::ValueArg< int > * rprFomRevision
Definition vreCommandLineProcessor.h:168
DtCmdLine::ValueArg< std::string > * fomMapperInitData
Definition vreCommandLineProcessor.h:163
DtCmdLine::SwitchArg * useAdvisories
Definition vreCommandLineProcessor.h:169
DtCmdLine::ValueArg< std::string > * reportedHostAddress
Definition vreCommandLineProcessor.h:165
DtCmdLine::ValueArg< std::string > * fedFileName
Definition vreCommandLineProcessor.h:161
virtual void processArgs(makVrv::DtVrvApplicationConfiguration &appConfig, StealthArgs &args, std::string &autoStartDriver) override
DtCmdLine::ValueArg< std::string > * execName
Definition vreCommandLineProcessor.h:160
DtCmdLine::ValueArg< std::string > * federateType
Definition vreCommandLineProcessor.h:171
DtCmdLine::ValueArg< std::string > * hostAddress
Definition vreCommandLineProcessor.h:164
virtual std::string driverName() const override
DtCmdLine::ValueArg< std::string > * fomMapperLibName
Definition vreCommandLineProcessor.h:162
virtual void setupHlaConfiguration(makVrv::DtConfiguration &config, StealthArgs &args)
DtCmdLine::ValueArg< int > * sessionId
Definition vreCommandLineProcessor.h:166
Structure containing HLA 1516 specific parameters.
Definition vreCommandLineProcessor.h:179
virtual std::string driverClass() const override
virtual std::string driverName() const override
Structure containing HLA 1516e specific parameters.
Definition vreCommandLineProcessor.h:189
DtCmdLine::ValueArg< std::string > * localSettingsDesignator
Definition vreCommandLineProcessor.h:197
virtual void setupHlaConfiguration(makVrv::DtConfiguration &config, StealthArgs &args) override
DtCmdLine::ValueArg< std::string > * federateName
Definition vreCommandLineProcessor.h:196
DtCmdLine::MultiArg< std::string > * fomModule
Definition vreCommandLineProcessor.h:195
virtual std::string driverClass() const override
virtual std::string driverName() const override
Structure containing VREngage specific parameters.
Definition vreCommandLineProcessor.h:206
DtCmdLine::SwitchArg * hla1516eMode
Definition vreCommandLineProcessor.h:210
makVrv::SwitchArg * airMode
Definition vreCommandLineProcessor.h:217
makVrv::SwitchArg * windowedMode
Definition vreCommandLineProcessor.h:225
makVrv::SwitchArg * sensorMode
Definition vreCommandLineProcessor.h:219
DtCmdLine::SwitchArg * hla13Mode
Definition vreCommandLineProcessor.h:208
DtCmdLine::ValueArg< std::string > * customSettingsString
Definition vreCommandLineProcessor.h:214
std::vector< BaseArgs * > additionalArguments
Definition vreCommandLineProcessor.h:227
DtCmdLine::ValueArg< std::string > * stationName
Definition vreCommandLineProcessor.h:215
DtCmdLine::ValueArg< std::string > * customSettingsFile
Definition vreCommandLineProcessor.h:213
DtCmdLine::SwitchArg * enableSensorFX
Definition vreCommandLineProcessor.h:211
makVrv::SwitchArg * disableEscapeKeyArg
Definition vreCommandLineProcessor.h:223
makVrv::SwitchArg * enableAdminMode
Definition vreCommandLineProcessor.h:222
DtCmdLine::SwitchArg * disMode
Definition vreCommandLineProcessor.h:207
DtCmdLine::SwitchArg * hla1516Mode
Definition vreCommandLineProcessor.h:209
makVrv::SwitchArg * groundMode
Definition vreCommandLineProcessor.h:218
DtCmdLine::ValueArg< std::string > * applicationModeArg
Definition vreCommandLineProcessor.h:221