ALib C++ Library
Library Version: 2412 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
arguments.hpp
Go to the documentation of this file.
1//==================================================================================================
2/// \file
3/// This header file is part of module \alib_cli of the \aliblong.
4///
5/// \emoji :copyright: 2013-2024 A-Worx GmbH, Germany.
6/// Published under \ref mainpage_license "Boost Software License".
7//==================================================================================================
8#ifndef HPP_ALIB_CLI_ARGUMENTS
9#define HPP_ALIB_CLI_ARGUMENTS 1
10#pragma once
11# include "alib/cli/clicamp.hpp"
13
14
15namespace alib { namespace cli {
16
17
18/// Struct used as parent for types
19/// - \alib{cli;Command},
20/// - \alib{cli;Option}, and
21/// - \alib{cli;Parameter}.
22///
23/// Stores
24/// - a pointer to the \alib{cli;CommandLine} object,
25/// - the position in \alib{ARG_VN}, respectively \alib{ARG_VW} where the object was found, and
26/// - the number of arguments consumed when reading the object.
27///
28/// \note
29/// For technical reasons, other members that are shared between the derived types named above,
30/// have to be declared (each three times) with the types themselves.
31struct Parsed
32{
33 /// The cli command line.
35
36 /// The index in \alib{ARG_VN}, respectively \alib{ARG_VW}, that this instance (derived option
37 /// or parameter ) was found at.
39
40 /// The number of command line arguments that a command consumed. This includes the command name
41 /// itself. If the method \b Read of derived types leaves this to <c>0</c>, then the option or
42 /// parameter was not found.
44
45 /// Constructor
46 /// @param cmdLine The command line instance.
47 Parsed( CommandLine* cmdLine )
48 : CmdLine (cmdLine)
49 , Position ((std::numeric_limits<integer>::max)())
51 {}
52};
53
54
55// #################################################################################################
56// Decl and Def versions of commands, options, parameters and ExitCodes
57// #################################################################################################
58
59
60/// \ref alib_enums_records "ALib Enum Record" type used by class \alib{cli;ParameterDecl}.
62 {
63 /// The identifier of the parameter.
65
66 /// An optional separator string (usually "=") that separates the parameter name from a
67 /// value given within the parameter itself.
69
70 /// A separator character for parsing multiple values.
71 /// If set to <c>'C'</c>, method \alib{cli;ParameterDecl::ValueListSeparator} will return
72 /// <c>','</c> instead.
74
75 /// The number of arguments to consume and store in \alib{cli;Parameter::Args}.
76 /// If negative, parsing stops. If previous field, separator string is set and this
77 /// value is equal or greater to \c 1, then a missing separator string leads to
78 /// a parsing exception.
80
81 /// Denotes if this is an optional parameter.
83
84 /// Default constructor leaving the record undefined. (Implementation required as documented
85 /// \alib{enums;EnumRecordPrototype::EnumRecordPrototype();here}.)
86 ERParameterDecl() noexcept = default;
87
88 /// Implementation of \alib{enums;EnumRecordPrototype::Parse}.
90 void Parse();
91 };
92
93/// A parameter of a \alib{cli;CommandDecl}.
94///
95/// Construction is done by passing a custom enum element of an enum type equipped with
96/// \ref alib_enums_records "ALib Enum Records" of type \alib{cli;ERParameterDecl}.
97///
98/// When bootstrapping \alib_cli_nl, method \alib{cli;CommandLine::DefineParameters} has to be
99/// invoked for (each) enum type.
101{
102 protected:
103 /// The enumeration element given with construction.
105
106 /// A copy (!) of the enum record.
108
109 /// The resource information of the enumeration type given with construction.
111
112 public:
113 /// Templated constructor which takes an enum element of a custom type equipped with
114 /// \ref alib_enums_records "ALib Enum Records" of type \alib{cli;ERParameterDecl}.
115 ///
116 /// @tparam TEnum C++ enum type equipped with corresponding \alib Enum Records.
117 /// @param element The enum element
118 template<typename TEnum>
119 ParameterDecl( TEnum element )
120 : declElement( element )
121 , resourceInfo(element)
122 {
123 // make a copy of the resourced record
124 record= enums::GetRecord(element);
125
126 // fix separator character
127 if( record.valueListSeparator == 'C' )
128 record.valueListSeparator= ',';
129 }
130
131 /// Returns the type and integral value of the enumeration element used with construction.
132 /// @return The enumeration element used with construction.
133 const Enum& Element() const
134 {
135 return declElement;
136 }
137
138 /// Returns the name of the parameter. This is not the identifier. The name is just for
139 /// help and configuration output.
140 ///
141 /// \see Method #Identifier.
142 ///
143 /// @return The name of the enum element.
144 const String& Name()
145 {
146 return record.EnumElementName;
147 }
148
149 /// Returns the identifier of the parameter. If this is empty, the parameter is not optional
150 /// and hence has no identifier.
151 ///
152 /// @return The name of the enum element.
154 {
155 return record.identifier;
156 }
157
158 /// Returns the minimum parse length of the identifier.
159 /// @return The minimum characters to satisfy the parameter.
161 {
162 return record.MinimumRecognitionLength;
163 }
164
165 /// An optional separator string (usually "="), that separates the parameter name from a
166 /// parameter value.
167 /// @return The separator string.
169 {
170 return record.valueSeparator;
171 }
172
173 /// A separator character for parsing multiple values.
174 /// @return The separator character.
176 {
177 return record.valueListSeparator != 'C' ? record.valueListSeparator : ',';
178 }
179
180 /// The number of CLI arguments to consume and store in \alib{cli;Option::Args} with method
181 /// \alib{cli;Parameter::Read}.
182 ///
183 /// @return The parameter identifier.
185 {
186 return record.RequiredArguments;
187 }
188
189 /// Returns \c true if the parameter is optional. The information about this attribute is
190 /// used to create help messages and usage format strings only. It does not automatically
191 /// raise an exception if a parameter is not given. Such exception or other error treatment
192 /// is up to the user code.
193 /// @return \c true if the parameter is optional, \c false otherwise.
195 {
196 return record.isOptional;
197 }
198
199 /// Returns the short help text.
200 /// Loads the string from #resourceInfo using resource name \c "THelpParShtNN",
201 /// where \c NN is the enum element's integral value.
202 /// @return The help text.
204 {
205 return resourceInfo.Get( NString64("THlpParSht_" ) << Name() ALIB_DBG(, true) );
206 }
207
208 /// Returns the long help text.
209 /// Loads the string from #resourceInfo using resource name \c "THelpParLngNN",
210 /// where \c NN is the enum element's integral value.
211 /// @return The help text.
213 {
214 return resourceInfo.Get( String64("THlpParLng_" ) << Name() ALIB_DBG(, true));
215 }
216}; // ParameterDecl
217
218/// A declaration for a \alib{cli::Parameter}.
219struct Parameter : public Parsed
220{
221 /// The underlying declaration.
223
224 /// Arguments belonging to us.
226
227 /// Constructor
228 /// @param cmdLine The command line instance.
229 inline
230 Parameter( CommandLine* cmdLine );
231
232 /// Tries to read the object from the front of \alib{cli;CommandLine::ArgsLeft}.
233 /// Success is indicated by setting inherited fields \alib{cli;Parsed::Position} and
234 /// \alib{cli;Parsed::ConsumedArguments} to values greater than \c 0.
235 ///
236 /// If it could not be decided if the actual CLI argument contains this parameter, \c false
237 /// is returned to indicate that parsing commands has to stop now.
238 ///
239 /// This is done in the following cases:
240 /// - When \alib{cli;ParameterDecl::Identifier} is empty and the parameter is
241 /// \alib{cli;ParameterDecl::IsOptional} gives \c true.
242 /// - When it was successfully read, but \alib{cli;ParameterDecl::QtyExpectedArgsFollowing}
243 /// is defined \c -1.
244 ///
245 /// See \alib{cli;CommandLine;ReadNextCommands} for details
246 ///
247 /// @param decl The declaration used for reading
248 /// @return The \c true on success, \c false indicates that parsing has to end here.
250 bool Read( ParameterDecl& decl );
251};
252
253/// \ref alib_enums_records "ALib Enum Record" type used by class \alib{cli;OptionDecl}.
255{
256 /// The name of the option as parsed from command line if single hyphen <c>'-'</c> is used.
257 /// Defined as string to be able to have empty strings, which disables single character
258 /// options.
260
261 /// An optional separator string (usually "=") that separates the option name from a value
262 /// within the first argument itself.
263 /// If this is not given, field #RequiredArguments has to be \c 0.
265
266 /// The number of arguments to consume and store in \alib{cli;Option::Args}.
267 /// If this field is set and this value is not \c 0, then a missing separator string leads
268 /// to a parsing exception.
270
271 /// If not empty, the argument string will be replaced by this and the search for next options
272 /// continues.
273 /// Note: Shortcut options have to occur earlier in the enumeration's resource definition.
275
276 /// Defaulted constructor leaving the record undefined.
277 /// (Implementation required as documented
278 /// \alib{enums;EnumRecordPrototype::EnumRecordPrototype();here}.)
279 EROptionDecl() noexcept = default;
280
281 /// Implementation of \alib{enums;EnumRecordPrototype::Parse}.
283 void Parse();
284};
285
286/// A declaration for an \alib{cli::Option}.
287///
288/// Construction is done by passing a custom enum element of an enum type equipped with
289/// \ref alib_enums_records "ALib Enum Records" of type \alib{cli;EROptionDecl}.
290///
291/// When bootstrapping \alib_cli_nl, method \alib{cli;CommandLine::DefineOptions} has to be
292/// invoked for (each) enum type.
293///
295{
296 protected:
297 /// The enumeration element given with construction.
299
300 /// A copy (!) of the enum record.
302
303 /// The resource information of the enumeration type given with construction.
305
306
307 public:
308 /// Templated constructor which takes an enum element of a custom type equipped with
309 /// \ref alib_enums_records "ALib Enum Records" of type \alib{cli;EROptionDecl}.
310 ///
311 /// @tparam TEnum C++ enum type equipped with corresponding \alib Enum Records.
312 /// @param element The enum element
313 template<typename TEnum>
314 OptionDecl( TEnum element )
315 : declElement( element )
316 , resourceInfo(element)
317 {
318 // make a copy of the resourced record
319 record= enums::GetRecord(element);
320 }
321
322 /// Returns the type and integral value of the enumeration element used with construction.
323 /// @return The enumeration element used with construction.
324 const Enum& Element() const
325 {
326 return declElement;
327 }
328
329 /// Returns the identifier of the option if double hyphen <c>'--'</c> is used.
330 /// @return The option identifier.
332 {
333 return record.EnumElementName;
334 }
335
336 /// Returns the minimum parse length of the identifier if double hyphen <c>'--'</c> is used.
337 /// @return The minimum characters to satisfy the option.
339 {
340 return record.MinimumRecognitionLength;
341 }
342
343 /// Returns the identifier of the option if single hyphen <c>'-'</c> is used.
344 /// @return The option identifier.
346 {
347 return record.identifierChar.IsNotEmpty() ? record.identifierChar.CharAtStart()
348 : '\0';
349 }
350
351 /// An optional separator string (usually "="), that separates the parameter name from a
352 /// parameter value.
353 /// @return The separator string.
355 {
356 return record.valueSeparator;
357 }
358
359 /// The number of CLI arguments to consume and store in \alib{cli;Option::Args} with method
360 /// \alib{cli;Option::Read}.
361 /// @return The option identifier.
363 {
364 return record.RequiredArguments;
365 }
366
367 /// If an option is a shortcut to another one, this string replaces the argument given.
368 /// @return The option identifier.
370 {
371 return record.shortcutReplacementString;
372 }
373
374
375 /// Returns a formal description of the usage.
376 /// Loads the string from #resourceInfo using resource name \c "TOptUsgNN",
377 /// where \c NN is the enum element's integral value.
378 /// @return The help text.
380 {
381 return resourceInfo.Get( NString64("TOptUsg_" ) << Identifier() ALIB_DBG(, true) );
382 }
383
384 /// Returns the help text.
385 /// Loads the string from #resourceInfo using resource name \c "TOptHlpNN",
386 /// where \c NN is the enum element's integral value.
387 /// @return The help text.
389 {
390 return resourceInfo.Get( NString64("TOptHlp_" ) << Identifier() ALIB_DBG(, true) );
391 }
392}; // OptionDecl
393
394/// An option of a command line. Options are read "automatically" using their declaration
395/// information defined with externalized strings (resources) accessed through
396/// \ref alib_enums_records "ALib Enum Records" associated with enum elements of enum custom types.
397///
398/// However, such automatic read is limited due to the fact, that the simple values and flags
399/// defined with \alib{cli;OptionDecl}, cannot provide the flexibility needed to perfectly
400/// parse options with a complex syntax.
401///
402/// In this case, the way out is to use custom code that invokes \alib{cli;CommandLine;ReadOptions}
403/// and then processes all options that may have remaining arguments left in the list.
404/// Using field #Position further arguments may be consumed from \alib{cli;CommandLine::ArgsLeft}.<br>
405/// Note, "processing all options" may mean a nested loop. The outer is over the option types
406/// of \alib{cli;CommandLine;OptionsFound}, the inner is over the vector of options per type.
407///
408struct Option : public Parsed
409{
410 /// The declaration struct.
412
413 /// Arguments belonging to this option.
415
416 /// Constructor
417 /// @param cmdLine The command line main object.
418 inline
419 Option( CommandLine* cmdLine );
420
421 /// Tries to read the object from the current CLI arg(s).
422 /// \note
423 /// Unlike the read methods \alib{cli;Command::Read} and \alib{cli;Parameter::Read}, this
424 /// method expects the argument to test not only by number with \p{argNo} but as well
425 /// with string parameter \p{arg}.<br>
426 /// This redundancy is needed to easily implement shortcut options, that just
427 /// replace a shortcut option read to another one, probably with a preset argument included.
428 ///
429 /// @param decl The declaration used for reading.
430 /// @param arg The argument string starting with one or two hyphens.
431 /// @param argNo The position of reading.
432 /// @return The \c true on success, \c false otherwise.
434 bool Read( OptionDecl& decl, String& arg, const integer argNo );
435};
436
437/// \ref alib_enums_records "ALib Enum Record" type used by class \alib{cli;CommandDecl}.
439 {
440 /// List of parameters attached. Separated by <c>'/'</c>.
442
443 /// Default constructor leaving the record undefined.
444 /// (Implementation required as documented
445 /// \alib{enums;EnumRecordPrototype::EnumRecordPrototype();here}.)
446 ERCommandDecl() noexcept = default;
447
448 /// Implementation of \alib{enums;EnumRecordPrototype::Parse}.
450 void Parse();
451 };
452
453/// A declaration for a \alib{cli::Command}.
454///
455/// Construction is done by passing a custom enum element of an enum type equipped with
456/// \ref alib_enums_records "ALib Enum Records" of type \alib{cli;ERCommandDecl}.
457///
458/// When bootstrapping \alib_cli_nl, method \alib{cli;CommandLine::DefineCommands} has to be
459/// invoked for (each) enum type.
460///
462{
463 protected:
464 /// The enumeration element given with construction.
466
467 /// A copy (!) of the enum record.
469
470 /// The resource information of the enumeration type given with construction.
472
473 public :
474 /// The command line instance we belong to.
476
477 /// Command parameters.
479
480 /// Templated constructor which takes an enum element of a custom type equipped with
481 /// \ref alib_enums_records "ALib Enum Records" of type \alib{cli;ERCommandDecl}.
482 ///
483 /// Field #Parameters is filled as specified in the enum record.
484 ///
485 /// @tparam TEnum C++ enum type equipped with corresponding \alib Enum Records.
486 /// @param element The enum element
487 /// @param cmdLine The command line object. Will be stored.
488 template<typename TEnum>
489 inline
490 CommandDecl( TEnum element, CommandLine& cmdLine );
491
492 /// Returns the type and integral value of the enumeration element used with construction.
493 /// @return The enumeration element used with construction.
494 const Enum& Element() const
495 {
496 return declElement;
497 }
498
499 /// Returns the identifier (name) of the command
500 /// @return The command identifier.
502 {
503 return record.EnumElementName;
504 }
505
506 /// Returns the minimum parse length of the identifier.
507 /// @return The minimum characters to satisfy the command to be parsed.
509 {
510 return record.MinimumRecognitionLength;
511 }
512
513 /// Returns the short version of the help text.
514 /// Loads the string from #resourceInfo using resource name \c "THlpCmdShtNN",
515 /// where \c NN is the enum element's integral value.
516 /// @return The help text.
518 {
519 return resourceInfo.Get( NString64("THlpCmdSht_" ) << Identifier() ALIB_DBG(, true) );
520 }
521
522 /// Returns the long version of the help text.
523 /// Loads the string from #resourceInfo using resource name \c "THlpCmdLngNN",
524 /// where \c NN is the enum element's integral value.
525 /// @return The help text.
527 {
528 return resourceInfo.Get( NString64("THlpCmdLng_" ) << Identifier() ALIB_DBG(, true) );
529 }
530
531 /// Searches in #Parameters for the declaration of parameter \p{name}.
532 /// @param name The declaration name of the parameter.
533 /// @return A pointer to the parameter's declaration, \c nullptr if parameter was not
534 /// declared.
536 ParameterDecl* GetParameterDecl(const String& name );
537
538 protected:
539 /// Called from the constructor. Parses field \alib{cli;ERCommandDecl::parameters} of the
540 /// enum record, and loads the corresponding parameters.
542 void addParamDecls();
543};
544
545/// A command of a \alib_cli_nl command line.
546struct Command : public Parsed
547{
548 /// The underlying declaration.
550
551 /// Mandatory parameters parsed.
553
554 /// Optional parameters parsed.
556
557 /// Constructor
558 /// @param cmdLine The command line instance.
559 inline
560 Command( CommandLine* cmdLine );
561
562 /// Tries to read the object from the front of \alib{cli;CommandLine::ArgsLeft}.
563 /// @param decl The declaration used for reading.
564 /// @return The \c true on success, \c false otherwise.
566 bool Read( CommandDecl& decl );
567
568 /// Searches in #ParametersMandatory and #ParametersOptional for parameter \p{name}.
569 /// @param name The declaration name of the parameter.
570 /// @return A pointer to the parameter, \c nullptr if parameter was not parsed.
572 Parameter* GetParsedParameter(const String& name );
573
574 /// Searches in #ParametersMandatory and #ParametersOptional for parameter \p{name} and returns
575 /// its (first) argument.
576 /// @param name The declaration name of the parameter.
577 /// @return The argument string, \b NULL_STRING if parameter was not parsed if not given.
579 String GetParsedParameterArg( const String& name );
580};
581
582/// \ref alib_enums_records "ALib Enum Record" type used by class \alib{cli;ExitCodeDecl}.
583/// \note Field \alib{enums;ERSerializable::MinimumRecognitionLength} is not read from the string,
584/// but set to fixed value \c 0.
586{
587 /// The CLI module exception associated to this exit code.
589
590 /// Default constructor leaving the record undefined.
591 /// (Implementation required as documented
592 /// \alib{enums;EnumRecordPrototype::EnumRecordPrototype();here}.)
593 ERExitCodeDecl() noexcept
594 : ERSerializable()
595 {}
596
597 /// Implementation of \alib{enums;EnumRecordPrototype::Parse}.
599 void Parse();
600};
601
602/// An exit code of a cli application.
603///
604/// Construction is done by passing a custom enum element of an enum type equipped with
605/// \ref alib_enums_records "ALib Enum Records" of type \alib{cli;ERExitCodeDecl}.
606///
607/// When bootstrapping \alib_cli_nl, method \alib{cli;CommandLine::DefineExitCodes} has to be
608/// invoked for (each) enum type.
609///
610/// Announcing the main application's exit codes to the \alib_cli_nl module has two reasons:
611/// - The exit codes are included in the help output text utility methods provided by class
612/// \alib{cli;CommandLine}.
613/// - \alib_cli_nl module exit codes can be translated to valid exit codes using
614/// method \alib{cli;CLIUtil::GetExitCode}.
616{
617 protected:
618 /// The enumeration element given with construction.
620
621 /// A copy (!) of the enum record.
623
624 /// The resource information of the enumeration type given with construction.
626
627
628 public:
629 /// Templated constructor which takes an enum element of a custom type equipped with
630 /// \ref alib_enums_records "ALib Enum Records" of type \alib{cli;ERExitCodeDecl}.
631 ///
632 /// @tparam TEnum C++ enum type equipped with corresponding \alib Enum Records.
633 /// @param element The enum element.
634 template<typename TEnum>
635 ExitCodeDecl( TEnum element )
636 : declElement( element )
637 , resourceInfo(element)
638 {
639 // make a copy of the resourced record
640 record= enums::GetRecord(element);
641 }
642
643 /// Returns the name of the enum element
644 /// @return The name of the enum element.
645 const String& Name()
646 {
647 return record.EnumElementName;
648 }
649
650 /// If an element of enum type \alib{cli;Exceptions} is associated with this exit code, it
651 /// is returned. Otherwise <c>cli::ExitCodes(-1)</c>.
652 ///
653 /// \see Method \alib{cli;CLIUtil::GetExitCode}.
654 /// @return The associated element of cli::Exceptions.
659
660 /// Returns the format string associated with this exit code.
661 /// Loads the string from #resourceInfo using resource name \c "TExitNN",
662 /// where \c NN is the enum element's integral value.
663 /// @return The format string.
665 {
666 return resourceInfo.Get( NString64("TExit" ) << declElement.Integral() ALIB_DBG(, true) );
667 }
668};
669
670}} // namespace [alib::cli]
671
672
673#endif // HPP_ALIB_CLI_ARGUMENTS
674
ERCommandDecl record
A copy (!) of the enum record.
CommandLine & CmdLine
The command line instance we belong to.
const String & Identifier()
const String & HelpTextLong()
const String & HelpTextShort()
Enum declElement
The enumeration element given with construction.
List< MonoAllocator, ParameterDecl * > Parameters
Command parameters.
ResourceInfo resourceInfo
The resource information of the enumeration type given with construction.
const Enum & Element() const
const String & FormatString()
Enum declElement
The enumeration element given with construction.
ExitCodeDecl(TEnum element)
ERExitCodeDecl record
A copy (!) of the enum record.
ResourceInfo resourceInfo
The resource information of the enumeration type given with construction.
const String & Name()
cli::Exceptions AssociatedCLIException()
OptionDecl(TEnum element)
const String & Identifier()
const String & ValueSeparator()
Enum declElement
The enumeration element given with construction.
EROptionDecl record
A copy (!) of the enum record.
const String & ShortcutReplacementString()
character IdentifierChar()
integer QtyExpectedArgsFollowing()
const String & HelpText()
ResourceInfo resourceInfo
The resource information of the enumeration type given with construction.
const String & HelpUsageLine()
const Enum & Element() const
const String & Identifier()
ERParameterDecl record
A copy (!) of the enum record.
const String & GetHelpTextShort()
const String & ValueSeparator()
const String & GetHelpTextLong()
Enum declElement
The enumeration element given with construction.
ParameterDecl(TEnum element)
ResourceInfo resourceInfo
The resource information of the enumeration type given with construction.
const Enum & Element() const
const String & Name()
constexpr bool IsNotEmpty() const
Definition string.hpp:389
TChar CharAtStart() const
Definition string.hpp:466
#define ALIB_API
Definition alib.hpp:639
#define ALIB_DBG(...)
Definition alib.hpp:390
const T_EnumRecords< TEnum >::Type & GetRecord(TEnum element)
Definition alib.cpp:69
LocalString< 64 > String64
Type alias name for TLocalString<character,64>.
NLocalString< 64 > NString64
Type alias name for TLocalString<nchar,64>.
characters::character character
Type alias in namespace alib.
characters::nchar nchar
Type alias in namespace alib.
lang::integer integer
Type alias in namespace alib.
Definition integers.hpp:273
integer Integral() const
Definition enum.hpp:119
A command of a ALib CLI command line.
List< MonoAllocator, Parameter *, Recycling::Shared > ParametersMandatory
Mandatory parameters parsed.
List< MonoAllocator, Parameter *, Recycling::Shared > ParametersOptional
Optional parameters parsed.
ALib Enum Record type used by class CommandDecl.
ERCommandDecl() noexcept=default
String parameters
List of parameters attached. Separated by '/'.
int associatedCLIException
The CLI module exception associated to this exit code.
ALib Enum Record type used by class OptionDecl.
EROptionDecl() noexcept=default
ALib Enum Record type used by class ParameterDecl.
Definition arguments.hpp:62
ERParameterDecl() noexcept=default
bool isOptional
Denotes if this is an optional parameter.
Definition arguments.hpp:82
String identifier
The identifier of the parameter.
Definition arguments.hpp:64
ALIB_API void Parse()
Implementation of EnumRecordPrototype::Parse.
List< MonoAllocator, String, Recycling::Shared > Args
Arguments belonging to this option.
A declaration for a cli::Parameter.
List< MonoAllocator, String, Recycling::Shared > Args
Arguments belonging to us.
CommandLine * CmdLine
The cli command line.
Definition arguments.hpp:34
Parsed(CommandLine *cmdLine)
Definition arguments.hpp:47
integer ConsumedArguments
Definition arguments.hpp:43
String EnumElementName
The name of the enum element.
Definition records.hpp:660