blocxx
|
Do command line parsing. More...
#include <CmdLineParser.hpp>
Classes | |
struct | Option |
Public Types | |
enum | EArgumentTypeFlag { E_NO_ARG , E_REQUIRED_ARG , E_OPTIONAL_ARG } |
enum | EErrorCodes { E_INVALID_OPTION , E_MISSING_ARGUMENT , E_INVALID_NON_OPTION_ARG , E_MISSING_OPTION } |
enum | EAllowNonOptionArgsFlag { E_NON_OPTION_ARGS_ALLOWED , E_NON_OPTION_ARGS_INVALID } |
Public Member Functions | |
CmdLineParser (int argc, char const *const *const argv, const Option *options, EAllowNonOptionArgsFlag allowNonOptionArgs) | |
String | getOptionValue (int id, const char *defaultValue="") const |
Read out a string option. | |
String | mustGetOptionValue (int id, const char *exceptionMessage="") const |
Read out a string option. | |
StringArray | getOptionValueList (int id) const |
Read out all occurences of a string option. | |
StringArray | mustGetOptionValueList (int id, const char *exceptionMessage="") const |
Read out all occurences of a string option. | |
bool | isSet (int id) const |
Read out a boolean option or check for the presence of string option. | |
size_t | getNonOptionCount () const |
Read the number of arguments that aren't options (but, for example, filenames). | |
String | getNonOptionArg (size_t n) const |
Read out an non-option argument. | |
StringArray | getNonOptionArgs () const |
Read out the non-option args. | |
Static Public Member Functions | |
static String | getUsage (const Option *options, unsigned int maxColumns=80) |
Generate a usage string for the options, for example: | |
Private Types | |
typedef SortedVectorMap< int, StringArray > | optionsMap_t |
Private Attributes | |
optionsMap_t | m_parsedOptions |
StringArray | m_nonOptionArgs |
Do command line parsing.
Thread safety: read/write Copy semantics: Value Exception safety: Strong
Definition at line 58 of file CmdLineParser.hpp.
Definition at line 196 of file CmdLineParser.hpp.
Enumerator | |
---|---|
E_NON_OPTION_ARGS_ALLOWED | Non-option arguments are allowed. |
E_NON_OPTION_ARGS_INVALID | Non-option arguments are invalid. |
Definition at line 87 of file CmdLineParser.hpp.
Enumerator | |
---|---|
E_NO_ARG | the option does not take an argument |
E_REQUIRED_ARG | the option requires an argument |
E_OPTIONAL_ARG | the option might have an argument |
Definition at line 61 of file CmdLineParser.hpp.
Definition at line 69 of file CmdLineParser.hpp.
BLOCXX_NAMESPACE::CmdLineParser::CmdLineParser | ( | int | argc, |
char const *const *const | argv, | ||
const Option * | options, | ||
EAllowNonOptionArgsFlag | allowNonOptionArgs ) |
argc | Count of pointers in argv. Pass value from main(). |
argv | Arguments. Pass value from main(). Value is not saved. |
options | An array of Option terminated by a final entry that has a '\0' shortopt && 0 longopt. Value is not saved. |
allowNonOptionArgs | Indicate whether the presense of non-option arguments is an error. |
CmdLineParserException | if the given command line is invalid. |
Definition at line 88 of file CmdLineParser.cpp.
References BLOCXX_NAMESPACE::CmdLineParser::Option::argtype, BLOCXX_ASSERT, BLOCXX_THROW_ERR, BLOCXX_NAMESPACE::String::c_str(), BLOCXX_NAMESPACE::CmdLineParser::Option::defaultValue, E_INVALID_NON_OPTION_ARG, E_INVALID_OPTION, E_MISSING_ARGUMENT, E_NO_ARG, E_NON_OPTION_ARGS_INVALID, E_OPTIONAL_ARG, E_REQUIRED_ARG, BLOCXX_NAMESPACE::String::empty(), BLOCXX_NAMESPACE::CmdLineParser::Option::id, BLOCXX_NAMESPACE::String::indexOf(), BLOCXX_NAMESPACE::String::length(), BLOCXX_NAMESPACE::CmdLineParser::Option::longopt, m_nonOptionArgs, m_parsedOptions, BLOCXX_NAMESPACE::String::npos, BLOCXX_NAMESPACE::Array< T >::push_back(), BLOCXX_NAMESPACE::CmdLineParser::Option::shortopt, and BLOCXX_NAMESPACE::String::substring().
String BLOCXX_NAMESPACE::CmdLineParser::getNonOptionArg | ( | size_t | n | ) | const |
Read out an non-option argument.
n | The 0-based index of the argument. Valid values are 0 to count()-1. |
Definition at line 382 of file CmdLineParser.cpp.
References m_nonOptionArgs.
StringArray BLOCXX_NAMESPACE::CmdLineParser::getNonOptionArgs | ( | ) | const |
Read out the non-option args.
Definition at line 389 of file CmdLineParser.cpp.
References m_nonOptionArgs.
size_t BLOCXX_NAMESPACE::CmdLineParser::getNonOptionCount | ( | ) | const |
Read the number of arguments that aren't options (but, for example, filenames).
Definition at line 375 of file CmdLineParser.cpp.
References m_nonOptionArgs, and BLOCXX_NAMESPACE::Array< T >::size().
String BLOCXX_NAMESPACE::CmdLineParser::getOptionValue | ( | int | id, |
const char * | defaultValue = "" ) const |
Read out a string option.
id | The id of the option. |
defaultValue | The return value if the option wasn't set. |
Definition at line 317 of file CmdLineParser.cpp.
References BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::end(), BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::find(), and m_parsedOptions.
StringArray BLOCXX_NAMESPACE::CmdLineParser::getOptionValueList | ( | int | id | ) | const |
Read out all occurences of a string option.
id | The id of the option. |
Definition at line 343 of file CmdLineParser.cpp.
References BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::end(), BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::find(), and m_parsedOptions.
|
static |
Generate a usage string for the options, for example:
The E_OPTIONAL_ARG option arguments are indicated by squared brackets
and E_REQUIRED_ARG option arguments by angle brackets
.
options | An array of Option terminated by a final entry that has a '\0' shortopt && 0 longopt. |
maxColumns | Wrap the descriptions so no line of the usage string exceeds the specified number of columns. |
Definition at line 209 of file CmdLineParser.cpp.
References E_OPTIONAL_ARG, E_REQUIRED_ARG, i, BLOCXX_NAMESPACE::String::indexOf(), BLOCXX_NAMESPACE::String::lastIndexOf(), BLOCXX_NAMESPACE::StringBuffer::length(), BLOCXX_NAMESPACE::String::npos, BLOCXX_NAMESPACE::StringBuffer::releaseString(), BLOCXX_NAMESPACE::CmdLineParser::Option::shortopt, BLOCXX_NAMESPACE::String::substring(), and BLOCXX_NAMESPACE::StringBuffer::toString().
bool BLOCXX_NAMESPACE::CmdLineParser::isSet | ( | int | id | ) | const |
Read out a boolean option or check for the presence of string option.
Definition at line 368 of file CmdLineParser.cpp.
References BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::count(), and m_parsedOptions.
String BLOCXX_NAMESPACE::CmdLineParser::mustGetOptionValue | ( | int | id, |
const char * | exceptionMessage = "" ) const |
Read out a string option.
id | The id of the option. |
exceptionMessage | If an exception is thrown this string will be used as the exception message. |
CmdLineParserException | with code E_MISSING_OPTION if the option wasn't specified. |
Definition at line 330 of file CmdLineParser.cpp.
References BLOCXX_THROW_ERR, E_MISSING_OPTION, BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::end(), BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::find(), and m_parsedOptions.
StringArray BLOCXX_NAMESPACE::CmdLineParser::mustGetOptionValueList | ( | int | id, |
const char * | exceptionMessage = "" ) const |
Read out all occurences of a string option.
id | The id of the option. |
exceptionMessage | If an exception is thrown this string will be used as the exception message. |
CmdLineParserException | with code E_MISSING_OPTION if the option wasn't specified. |
Definition at line 356 of file CmdLineParser.cpp.
References BLOCXX_THROW_ERR, E_MISSING_OPTION, BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::end(), BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::find(), and m_parsedOptions.
|
private |
Definition at line 198 of file CmdLineParser.hpp.
Referenced by CmdLineParser(), getNonOptionArg(), getNonOptionArgs(), and getNonOptionCount().
|
private |
Definition at line 197 of file CmdLineParser.hpp.
Referenced by CmdLineParser(), getOptionValue(), getOptionValueList(), isSet(), mustGetOptionValue(), and mustGetOptionValueList().