13 for(
auto* paramDecl :
CmdLine.ParameterDecls )
21 "Parameter named \"{}\" not found while loading resources of command \"{}\".",
27 if( param->Name().Equals<
NC>( name ) )
38 auto argsLeft =
CmdLine->ArgsLeft.size() -1;
44 if( valueSeparator > 0 )
47 bool potentialIllegalContinuation=
false;
66 if( potentialIllegalContinuation ) {
68 if( !isalnum( nextChar ) )
70 identifier, argNo,
CmdLine->GetArg(argNo) );
81 if( valueSeparator > 0) {
82 Args.push_back( inArgArgument );
89 if ( argsExpected >
integer(argsLeft) )
92 argsExpected, argsLeft );
95 for(
integer i= 0; i < argsExpected; ++i )
119 while( paramDeclIt != decl.
Parameters.end() ) {
121 bool continueReading= param.
Read( **paramDeclIt );
125 if ( (*paramDeclIt)->IsOptional() )
137 if( !continueReading )
148 if( paramDecl->Name().Equals<
NC>(name) ) {
152 ALIB_ASSERT_ERROR( found,
"CLI",
"Requested parameter \"{}\" not defined.", name )
156 if( param->Declaration->Name().Equals<
NC>( name ) )
160 if( param->Declaration->Name().Equals<
NC>( name ) )
168 return param && param->
Args.IsNotEmpty() ? param->
Args.front()
179 if ( identifier.IsEmpty() && decl.
IsOptional() )
184 if( valueSeparator > 0 )
187 if ( identifier.IsEmpty()
198 Args.push_back( arg );
201 Args.push_back( inArgArgument );
206 if( argsExpected < 0 )
213 argsExpected,
CmdLine->ArgsLeft.size() );
216 for(
size_t i= 0; i < size_t( argsExpected ); ++i ) {
227void ERCommandDecl ::Parse() {
233void EROptionDecl ::Parse() {
252void ERExitCodeDecl ::Parse() {
#define ALIB_CALLER_NULLED
#define ALIB_ASSERT_ERROR(cond, domain,...)
CommandLine & CmdLine
The command-line instance we belong to.
ListMA< ParameterDecl * > Parameters
Command parameters.
ERCommandDecl record
A copy (!) of the enum record.
int MinimumRecognitionLength()
ParameterDecl * GetParameterDecl(const String &name)
const String & Identifier()
character IdentifierChar()
integer QtyExpectedArgsFollowing()
const String & Identifier()
int MinimumRecognitionLength()
const String & ValueSeparator()
int MinimumRecognitionLength()
const String & ValueSeparator()
const String & Identifier()
int QtyExpectedArgsFollowing()
constexpr integer Length() const
constexpr bool IsEmpty() const
integer IndexOf(TChar needle, integer startIdx=0) const
TChar CharAt(integer idx) const
constexpr bool IsNotEmpty() const
constexpr bool IsNull() const
bool StartsWith(const TString &needle) const
bool ConsumeString(const TString< TChar > &consumable)
TSubstring & Split(integer position, TSubstring &target, integer separatorWidth=0, bool trim=false)
TSubstring< TChar > Actual
TSubstring< TChar > & Next(lang::Whitespaces trimming=lang::Whitespaces::Trim, TChar newDelim='\0')
@ IllegalOptionNameContinuation
constexpr String NULL_STRING
A nulled string of the default character type.
strings::util::TTokenizer< character > Tokenizer
Type alias in namespace #"%alib".
lang::integer integer
Type alias in namespace #"%alib".
strings::TString< character > String
Type alias in namespace #"%alib".
strings::TSubstring< character > Substring
Type alias in namespace #"%alib".
exceptions::Exception Exception
Type alias in namespace #"%alib".
characters::character character
Type alias in namespace #"%alib".
CommandDecl * Declaration
The underlying declaration.
ListMA< Parameter *, Recycling::Shared > ParametersMandatory
Mandatory parameters parsed.
ListMA< Parameter *, Recycling::Shared > ParametersOptional
Optional parameters parsed.
Parameter * GetParsedParameter(const String &name)
String GetParsedParameterArg(const String &name)
bool Read(CommandDecl &decl)
String parameters
List of parameters attached. Separated by '/'.
String shortcutReplacementString
integer RequiredArguments
String identifier
The identifier of the parameter.
bool isOptional
Denotes if this is an optional parameter.
void Parse()
Implementation of #"EnumRecordPrototype::Parse;*".
bool Read(OptionDecl &decl, String &arg, const integer argNo)
ListMA< String, Recycling::Shared > Args
Arguments belonging to this option.
OptionDecl * Declaration
The declaration struct.
A declaration for a #"app::Parameter".
bool Read(ParameterDecl &decl)
ListMA< String, Recycling::Shared > Args
Arguments belonging to us.
ParameterDecl * Declaration
The underlying declaration.
integer ConsumedArguments
CommandLine * CmdLine
The cli command-line.
static void Get(String &result, bool isLastField=false)