blocxx
Classes | Public Types | Public Member Functions | Static Public Member Functions | Private Types | Private Attributes

BLOCXX_NAMESPACE::CmdLineParser Class Reference

Do command line parsing. More...

#include <CmdLineParser.hpp>

List of all members.

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

Detailed Description

Do command line parsing.

Thread safety: read/write Copy semantics: Value Exception safety: Strong

Definition at line 58 of file CmdLineParser.hpp.


Member Typedef Documentation

Definition at line 196 of file CmdLineParser.hpp.


Member Enumeration Documentation

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.

Enumerator:
E_INVALID_OPTION 

an unknown option was specified

E_MISSING_ARGUMENT 

an option for which argtype == E_REQUIRED_ARG did not have an argument

E_INVALID_NON_OPTION_ARG 

a non-option argument was specified, but they are not allowed

E_MISSING_OPTION 

the option wasn't specified

Definition at line 69 of file CmdLineParser.hpp.


Constructor & Destructor Documentation

BLOCXX_NAMESPACE::CmdLineParser::CmdLineParser ( int  argc,
char const *const *const  argv,
const Option options,
EAllowNonOptionArgsFlag  allowNonOptionArgs 
)
Parameters:
argcCount of pointers in argv. Pass value from main().
argvArguments. Pass value from main(). Value is not saved.
optionsAn array of Option terminated by a final entry that has a '\0' shortopt && 0 longopt. Value is not saved.
allowNonOptionArgsIndicate whether the presense of non-option arguments is an error.
Exceptions:
CmdLineParserExceptionif the given command line is invalid.

Definition at line 89 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().


Member Function Documentation

String BLOCXX_NAMESPACE::CmdLineParser::getNonOptionArg ( size_t  n) const

Read out an non-option argument.

Parameters:
nThe 0-based index of the argument. Valid values are 0 to count()-1.

Definition at line 383 of file CmdLineParser.cpp.

References m_nonOptionArgs.

StringArray BLOCXX_NAMESPACE::CmdLineParser::getNonOptionArgs ( ) const

Read out the non-option args.

Definition at line 390 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 376 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.

Parameters:
idThe id of the option.
defaultValueThe return value if the option wasn't set.
Returns:
The value of the option, if given, otherwise defaultValue. If the option was specified more than once, the value from the last occurence will be returned.

Definition at line 318 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.

Parameters:
idThe id of the option.
Returns:
The value of the option, if given, otherwise an empty StringArray.

Definition at line 344 of file CmdLineParser.cpp.

References BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::end(), BLOCXX_NAMESPACE::SortedVectorMap< Key, T, Compare >::find(), and m_parsedOptions.

String BLOCXX_NAMESPACE::CmdLineParser::getUsage ( const Option options,
unsigned int  maxColumns = 80 
) [static]

Generate a usage string for the options, for example:

 "Options:\n"
 "  -1, --one                 first description\n"
 "  -2, --two [arg]           second description (default is optional)\n"
 "  -3, --three <arg>         third description\n"

The E_OPTIONAL_ARG option arguments are indicated by squared brackets

 "[arg]" 

and E_REQUIRED_ARG option arguments by angle brackets

 "<arg>" 

.

Parameters:
optionsAn array of Option terminated by a final entry that has a '\0' shortopt && 0 longopt.
maxColumnsWrap the descriptions so no line of the usage string exceeds the specified number of columns.

Definition at line 210 of file CmdLineParser.cpp.

References E_OPTIONAL_ARG, E_REQUIRED_ARG, i, BLOCXX_NAMESPACE::String::indexOf(), 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 369 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.

Parameters:
idThe id of the option.
Returns:
The value of the option. If the option was specified more than once, the value from the last occurence will be returned.
Parameters:
exceptionMessageIf an exception is thrown this string will be used as the exception message.
Exceptions:
CmdLineParserExceptionwith code E_MISSING_OPTION if the option wasn't specified.

Definition at line 331 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.

Parameters:
idThe id of the option.
Returns:
The value of the option.
Parameters:
exceptionMessageIf an exception is thrown this string will be used as the exception message.
Exceptions:
CmdLineParserExceptionwith code E_MISSING_OPTION if the option wasn't specified.

Definition at line 357 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.


Member Data Documentation


The documentation for this class was generated from the following files: