mirror of
https://github.com/cuberite/TCLAP.git
synced 2025-09-10 04:41:57 -04:00
allowing blank flags
This commit is contained in:
parent
d91d422210
commit
84a061ca4e
54
src/Arg.cpp
54
src/Arg.cpp
@ -31,6 +31,7 @@ const char Arg::blankChar = '*';
|
|||||||
const char Arg::flagStartChar = '-';
|
const char Arg::flagStartChar = '-';
|
||||||
const string Arg::flagStartString = "-";
|
const string Arg::flagStartString = "-";
|
||||||
const string Arg::nameStartString = "--";
|
const string Arg::nameStartString = "--";
|
||||||
|
const string Arg::ignoreNameString = "ignore_rest";
|
||||||
|
|
||||||
Arg::Arg( const string& flag,
|
Arg::Arg( const string& flag,
|
||||||
const string& name,
|
const string& name,
|
||||||
@ -53,6 +54,24 @@ Arg::Arg( const string& flag,
|
|||||||
if ( _flag.length() > 1 )
|
if ( _flag.length() > 1 )
|
||||||
throw(ArgException("Argument flag can only be one character long",
|
throw(ArgException("Argument flag can only be one character long",
|
||||||
toString() ) );
|
toString() ) );
|
||||||
|
|
||||||
|
if ( _name != ignoreNameString &&
|
||||||
|
( _flag == Arg::flagStartString ||
|
||||||
|
_flag == Arg::nameStartString ||
|
||||||
|
_flag == " " ) )
|
||||||
|
throw(ArgException("Argument flag cannot be either '" +
|
||||||
|
Arg::flagStartString + "' or '" +
|
||||||
|
Arg::nameStartString + "' or a space.",
|
||||||
|
toString() ) );
|
||||||
|
|
||||||
|
if ( ( _name.find( Arg::flagStartString, 0 ) != string::npos ) ||
|
||||||
|
( _name.find( Arg::nameStartString, 0 ) != string::npos ) ||
|
||||||
|
( _name.find( " ", 0 ) != string::npos ) )
|
||||||
|
throw(ArgException("Argument name cannot contain either '" +
|
||||||
|
Arg::flagStartString + "' or '" +
|
||||||
|
Arg::nameStartString + "' or space.",
|
||||||
|
toString() ) );
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Arg::Arg()
|
Arg::Arg()
|
||||||
@ -107,7 +126,10 @@ string Arg::shortID( const string& valueId ) const
|
|||||||
{
|
{
|
||||||
string id = "";
|
string id = "";
|
||||||
|
|
||||||
id = Arg::flagStartString + _flag;
|
if ( _flag != "" )
|
||||||
|
id = Arg::flagStartString + _flag;
|
||||||
|
else
|
||||||
|
id = Arg::nameStartString + _name;
|
||||||
|
|
||||||
string delim = " ";
|
string delim = " ";
|
||||||
delim[0] = Arg::_delimiter; // ugly!!!
|
delim[0] = Arg::_delimiter; // ugly!!!
|
||||||
@ -125,13 +147,17 @@ string Arg::longID( const string& valueId ) const
|
|||||||
{
|
{
|
||||||
string id = "";
|
string id = "";
|
||||||
|
|
||||||
id = Arg::flagStartString + _flag;
|
if ( _flag != "" )
|
||||||
|
{
|
||||||
|
id += Arg::flagStartString + _flag;
|
||||||
|
|
||||||
if ( _valueRequired )
|
if ( _valueRequired )
|
||||||
id += " <" + valueId + ">";
|
id += " <" + valueId + ">";
|
||||||
|
|
||||||
|
id += ", ";
|
||||||
|
}
|
||||||
|
|
||||||
|
id += Arg::nameStartString + _name;
|
||||||
id += ", " + Arg::nameStartString + _name;
|
|
||||||
|
|
||||||
if ( _valueRequired )
|
if ( _valueRequired )
|
||||||
id += " <" + valueId + ">";
|
id += " <" + valueId + ">";
|
||||||
@ -142,7 +168,7 @@ string Arg::longID( const string& valueId ) const
|
|||||||
|
|
||||||
bool Arg::operator==(const Arg& a)
|
bool Arg::operator==(const Arg& a)
|
||||||
{
|
{
|
||||||
if ( _flag == a._flag ||
|
if ( ( _flag != "" && _flag == a._flag ) ||
|
||||||
_name == a._name ||
|
_name == a._name ||
|
||||||
_description == a._description )
|
_description == a._description )
|
||||||
return true;
|
return true;
|
||||||
@ -157,8 +183,6 @@ bool Arg::processArg(int* i, vector<string>& args)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const string& Arg::getName() const { return _name; } ;
|
|
||||||
|
|
||||||
string Arg::getDescription() const
|
string Arg::getDescription() const
|
||||||
{
|
{
|
||||||
string desc = "";
|
string desc = "";
|
||||||
@ -173,7 +197,11 @@ string Arg::getDescription() const
|
|||||||
};
|
};
|
||||||
|
|
||||||
const string& Arg::getFlag() const { return _flag; };
|
const string& Arg::getFlag() const { return _flag; };
|
||||||
|
|
||||||
|
const string& Arg::getName() const { return _name; } ;
|
||||||
|
|
||||||
bool Arg::isRequired() const { return _required; }
|
bool Arg::isRequired() const { return _required; }
|
||||||
|
|
||||||
bool Arg::isValueRequired() const { return _valueRequired; }
|
bool Arg::isValueRequired() const { return _valueRequired; }
|
||||||
|
|
||||||
bool Arg::isSet() const
|
bool Arg::isSet() const
|
||||||
@ -202,7 +230,13 @@ bool Arg::argMatches( const string& argFlag ) const
|
|||||||
|
|
||||||
string Arg::toString() const
|
string Arg::toString() const
|
||||||
{
|
{
|
||||||
string s = Arg::flagStartString + _flag + " (" + Arg::nameStartString + _name + ")";
|
string s = "";
|
||||||
|
|
||||||
|
if ( _flag != "" )
|
||||||
|
s += Arg::flagStartString + _flag + " ";
|
||||||
|
|
||||||
|
s += "(" + Arg::nameStartString + _name + ")";
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +58,8 @@ void CmdLine::_constructor()
|
|||||||
false, new VersionVisitor( this ) );
|
false, new VersionVisitor( this ) );
|
||||||
add( *vers );
|
add( *vers );
|
||||||
|
|
||||||
SwitchArg* ignore = new SwitchArg(Arg::flagStartString,"ignore_rest",
|
SwitchArg* ignore = new SwitchArg(Arg::flagStartString,
|
||||||
|
Arg::ignoreNameString,
|
||||||
"Ignores the rest of the labeled arguments following this flag.",
|
"Ignores the rest of the labeled arguments following this flag.",
|
||||||
false, new IgnoreRestVisitor() );
|
false, new IgnoreRestVisitor() );
|
||||||
add( *ignore );
|
add( *ignore );
|
||||||
|
@ -43,11 +43,12 @@ bool SwitchArg::getValue() { return _value; };
|
|||||||
bool SwitchArg::combinedSwitchesMatch(string& combinedSwitches )
|
bool SwitchArg::combinedSwitchesMatch(string& combinedSwitches )
|
||||||
{
|
{
|
||||||
// make sure this is actually a combined switch
|
// make sure this is actually a combined switch
|
||||||
if ( combinedSwitches[0] != '-' )
|
if ( combinedSwitches[0] != Arg::flagStartString[0] )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// make sure it isn't a long name
|
// make sure it isn't a long name
|
||||||
if ( combinedSwitches[1] == '-' )
|
if ( combinedSwitches.substr( 0, Arg::nameStartString.length() ) ==
|
||||||
|
Arg::nameStartString )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// ok, we're not specifying a ValueArg, so we know that we have
|
// ok, we're not specifying a ValueArg, so we know that we have
|
||||||
|
Loading…
x
Reference in New Issue
Block a user