|
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_ASSERT, BLOCXX_THROW_ERR, 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(), m_nonOptionArgs, m_parsedOptions, BLOCXX_NAMESPACE::String::npos, BLOCXX_NAMESPACE::operator==(), BLOCXX_NAMESPACE::Array< T >::push_back(), and BLOCXX_NAMESPACE::String::substring().
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, and BLOCXX_NAMESPACE::operator==().
| 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(), m_parsedOptions, and BLOCXX_NAMESPACE::operator==().
| 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(), m_parsedOptions, and BLOCXX_NAMESPACE::operator==().
|
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::npos, BLOCXX_NAMESPACE::operator==(), BLOCXX_NAMESPACE::StringBuffer::releaseString(), BLOCXX_NAMESPACE::CmdLineParser::Option::shortopt, and BLOCXX_NAMESPACE::String::substring().
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(), m_parsedOptions, and BLOCXX_NAMESPACE::operator==().
| 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(), m_parsedOptions, and BLOCXX_NAMESPACE::operator==().
|
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().