BLOCXX_NAMESPACE::CmdLineParser Class Reference

Do command line parsing. More...

#include <CmdLineParser.hpp>

List of all members.

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

Classes

struct  Option


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_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.

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.


Constructor & Destructor Documentation

BLOCXX_NAMESPACE::CmdLineParser::CmdLineParser ( int  argc,
char const *const *const   argv,
const Option options,
EAllowNonOptionArgsFlag  allowNonOptionArgs 
)


Member Function Documentation

String BLOCXX_NAMESPACE::CmdLineParser::getOptionValue ( int  id,
const char *  defaultValue = "" 
) const

Read out a string option.

Parameters:
id The id of the option.
defaultValue The 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 317 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::mustGetOptionValue ( int  id,
const char *  exceptionMessage = "" 
) const

Read out a string option.

Parameters:
id The 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:
exceptionMessage If an exception is thrown this string will be used as the exception message.
Exceptions:
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::getOptionValueList ( int  id  )  const

Read out all occurences of a string option.

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

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.

StringArray BLOCXX_NAMESPACE::CmdLineParser::mustGetOptionValueList ( int  id,
const char *  exceptionMessage = "" 
) const

Read out all occurences of a string option.

Parameters:
id The id of the option.
Returns:
The value of the option.
Parameters:
exceptionMessage If an exception is thrown this string will be used as the exception message.
Exceptions:
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.

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.

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::getNonOptionArg ( size_t  n  )  const

Read out an non-option argument.

Parameters:
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.

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:
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::StringBuffer::length(), BLOCXX_NAMESPACE::String::npos, BLOCXX_NAMESPACE::StringBuffer::releaseString(), BLOCXX_NAMESPACE::CmdLineParser::Option::shortopt, BLOCXX_NAMESPACE::String::substring(), and BLOCXX_NAMESPACE::StringBuffer::toString().


Member Data Documentation


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

Generated on Wed Feb 25 19:05:02 2009 for blocxx by  doxygen 1.5.6