- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Hierarchy
- Class Members

Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
G::GetOpt Class Reference

A command line switch parser. More...

`#include <ggetopt.h>`

## Classes
struct | Level
| Used by G::GetOpt for extra type safety. More...
struct | SwitchSpec
| A private implementation structure used by G::GetOpt. More...

## Public Types
typedef std::string::size_type | size_type

## Public Member Functions
| GetOpt (const Arg &arg, const std::string &spec, char sep_major= '|', char sep_minor= '/', char escape= '\\')
| Constructor taking a Arg reference and a specification string. More...
Arg | args () const
| Returns all the non-switch command-line arguments. More...
Strings | errorList () const
| Returns the list of errors. More...
std::string | usageSummary (const std::string &exe, const std::string &args, const std::string &introducer=introducerDefault(), Level level=levelDefault(), size_type wrap_width=wrapDefault()) const
| Returns a one-line usage summary, as "usage: <exe> <usageSummarySwitches()> <args>". More...
std::string | usageSummarySwitches (Level level=levelDefault()) const
| Returns the one-line summary of switches. More...
std::string | usageHelp (Level level=levelDefault(), size_type tab_stop=tabDefault(), size_type wrap_width=wrapDefault(), bool level_exact=false, bool extra=true) const
| Returns a multi-line string giving help on each switch. More...
void | showUsage (std::ostream &stream, const std::string &exe, const std::string &args, const std::string &introducer=introducerDefault(), Level level=levelDefault(), size_type tab_stop=tabDefault(), size_type wrap_width=wrapDefault(), bool extra=true) const
| Streams out multi-line usage text using usageSummary() and usageHelp(). More...
void | showUsage (std::ostream &stream, const std::string &args, bool verbose) const
| Streams out multi-line usage text using usageSummary() and usageHelp(). More...
bool | hasErrors () const
| Returns true if there are errors. More...
void | showErrors (std::ostream &stream, std::string prefix_1, std::string prefix_2=std::string(": ")) const
| A convenience function which streams out each errorList() item to the given stream, prefixed with the given prefix(es). More...
void | showErrors (std::ostream &stream) const
| An overload which uses Arg::prefix() as 'prefix_1'. More...
void | show (std::ostream &stream, std::string prefix) const
| For debugging. More...
bool | contains (char switch_letter) const
| Returns true if the command line contains the given switch. More...
bool | contains (const std::string &switch_name) const
| Returns true if the command line contains the given switch. More...
std::string | value (const std::string &switch_name) const
| Returns the value related to the given value-based switch. More...
std::string | value (char switch_letter) const
| Returns the value related to the given value-based switch. More...

## Static Public Member Functions
static size_type | wrapDefault ()
| Returns a default word-wrapping width. More...
static size_type | tabDefault ()
| Returns a default tab-stop. More...
static Level | levelDefault ()
| Returns the default level. More...
static std::string | introducerDefault ()
| Returns "usage: ". More...

## Detailed Description

A command line switch parser.

Usage:

G::Arg arg( argc , argv ) ;
G::GetOpt opt( arg , "e/extra/does something/extra/1/arg/1" ) ;
if( opt.hasErrors() ) opt.showErrors( std::cerr ) ;
if( opt.contains("extra") ) do_extra( opt.value("extra") ) ;

See also
  G::Arg

Definition at line 51 of file ggetopt.h.

## Member Typedef Documentation

typedef std::string::size_type G::GetOpt::size_type

Definition at line 57 of file ggetopt.h.

## Constructor & Destructor Documentation

G::GetOpt::GetOpt | ( | const Arg & | arg,
|  | const std::string & | spec,
|  | char | sep_major = `'|'`,
|  | char | sep_minor = `'/'`,
|  | char | escape = `'\\'`
| ) |  |

Constructor taking a Arg reference and a specification string.

Uses specifications like "p/port/defines the port number//1/port/1|v/verbose/shows more logging//0//1". made up of the following parts: 'single-character-switch-letter' 'multi-character-switch-name' 'switch-description' 'switch-description-extra' 'value-type' (0 is none, and 1 is a string) 'value-description' 'level'

By convention mainstream switches should have a level of 1, and obscure ones level 2 and above. If the switch-description field is empty or if the level is zero then the switch is hidden.

Definition at line 46 of file ggetopt.cpp.

## Member Function Documentation

G::Arg G::GetOpt::args | ( |  | ) | const

Returns all the non-switch command-line arguments.

Definition at line 490 of file ggetopt.cpp.

bool G::GetOpt::contains | ( | char | switch_letter | ) | const

Returns true if the command line contains the given switch.

Definition at line 463 of file ggetopt.cpp.

bool G::GetOpt::contains | ( | const std::string & | switch_name | ) | const

Returns true if the command line contains the given switch.

Definition at line 469 of file ggetopt.cpp.

G::Strings G::GetOpt::errorList | ( |  | ) | const

Returns the list of errors.

Definition at line 458 of file ggetopt.cpp.

bool G::GetOpt::hasErrors | ( |  | ) | const

Returns true if there are errors.

Definition at line 517 of file ggetopt.cpp.

std::string G::GetOpt::introducerDefault | ( |  | ) |
| static

Returns "usage: ".

Definition at line 129 of file ggetopt.cpp.

Referenced by Main::CommandLineImp::showUsage().

G::GetOpt::Level G::GetOpt::levelDefault | ( |  | ) |
| static

Returns the default level.

Definition at line 134 of file ggetopt.cpp.

Referenced by Main::CommandLineImp::showUsage().

void G::GetOpt::show | ( | std::ostream & | stream,
|  | std::string | prefix
| ) |  | const

For debugging.

Definition at line 495 of file ggetopt.cpp.

void G::GetOpt::showErrors | ( | std::ostream & | stream,
|  | std::string | prefix_1,
|  | std::string | prefix_2 = `std::string(": ")`
| ) |  | const

A convenience function which streams out each errorList() item to the given stream, prefixed with the given prefix(es).

The two prefixes are simply concatenated.

Definition at line 527 of file ggetopt.cpp.

void G::GetOpt::showErrors | ( | std::ostream & | stream | ) | const

An overload which uses Arg::prefix() as 'prefix_1'.

Definition at line 522 of file ggetopt.cpp.

void G::GetOpt::showUsage | ( | std::ostream & | stream,
|  | const std::string & | exe,
|  | const std::string & | args,
|  | const std::string & | introducer = `introducerDefault()`,
|  | Level | level = `levelDefault()`,
|  | size_type | tab_stop = `tabDefault()`,
|  | size_type | wrap_width = `wrapDefault()`,
|  | bool | extra = `true`
| ) |  | const

Streams out multi-line usage text using usageSummary() and usageHelp().

The 'args' parameter should represent the non-switch arguments (with a leading space), like " <foo> [<bar>]".

Definition at line 150 of file ggetopt.cpp.

void G::GetOpt::showUsage | ( | std::ostream & | stream,
|  | const std::string & | args,
|  | bool | verbose
| ) |  | const

Streams out multi-line usage text using usageSummary() and usageHelp().

Shows only level one switches if 'verbose' is false.

Definition at line 144 of file ggetopt.cpp.

G::GetOpt::size_type G::GetOpt::tabDefault | ( |  | ) |
| static

Returns a default tab-stop.

Definition at line 124 of file ggetopt.cpp.

std::string G::GetOpt::usageHelp | ( | Level | level = `levelDefault()`,
|  | size_type | tab_stop = `tabDefault()`,
|  | size_type | wrap_width = `wrapDefault()`,
|  | bool | level_exact = `false`,
|  | bool | extra = `true`
| ) |  | const

Returns a multi-line string giving help on each switch.

Definition at line 236 of file ggetopt.cpp.

std::string G::GetOpt::usageSummary | ( | const std::string & | exe,
|  | const std::string & | args,
|  | const std::string & | introducer = `introducerDefault()`,
|  | Level | level = `levelDefault()`,
|  | size_type | wrap_width = `wrapDefault()`
| ) |  | const

Returns a one-line usage summary, as "usage: <exe> <usageSummarySwitches()> <args>".

Definition at line 158 of file ggetopt.cpp.

References G::Str::wrap().

std::string G::GetOpt::usageSummarySwitches | ( | Level | level = `levelDefault()` | ) | const

Returns the one-line summary of switches.

Does not include the usual "usage: <exe>" prefix or non-switch arguments.

Definition at line 172 of file ggetopt.cpp.

std::string G::GetOpt::value | ( | const std::string & | switch_name | ) | const

Returns the value related to the given value-based switch.

Precondition: contains(switch_name)

Definition at line 484 of file ggetopt.cpp.

References G_ASSERT.

std::string G::GetOpt::value | ( | char | switch_letter | ) | const

Returns the value related to the given value-based switch.

Precondition: contains(switch_letter)

Definition at line 476 of file ggetopt.cpp.

References G_ASSERT.

G::GetOpt::size_type G::GetOpt::wrapDefault | ( |  | ) |
| static

Returns a default word-wrapping width.

Definition at line 113 of file ggetopt.cpp.

References G::Environment::get(), and G::Str::toUInt().

Referenced by Main::CommandLineImp::showUsage().

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

- ggetopt.h
- ggetopt.cpp