Parse commandline options. More...
#include <engine.h>
Public Member Functions | |
const std::string & | name () const |
Option * | add (Option *o) |
Add an Option to this engine. | |
OptionGroup * | add (OptionGroup *group) |
Add an OptionGroup to this engine. | |
Engine * | add (Engine *o) |
Add a Engine to this engine. | |
template<typename T > | |
T * | create (const std::string &name, char shortName, const std::string &longName, const std::string &usage=std::string(), const std::string &description=std::string()) |
Create an option. | |
template<typename T > | |
T * | add (const std::string &name, char shortName, const std::string &longName, const std::string &usage=std::string(), const std::string &description=std::string()) |
Create an option and add to this engine. | |
OptionGroup * | createGroup (const std::string &description) |
Create an OptionGroup. | |
OptionGroup * | addGroup (const std::string &description) |
Create an OptionGroup and add it to this engine. | |
Engine * | createEngine (const std::string &name, const std::string &usage=std::string(), const std::string &description=std::string(), const std::string &longDescription=std::string()) |
Create a Engine. | |
Engine * | addEngine (const std::string &name, const std::string &usage=std::string(), const std::string &description=std::string(), const std::string &longDescription=std::string()) |
Create a Engine and add it to this engine as a command. | |
const std::vector< OptionGroup * > & | groups () const |
Get the OptionGroups that have been added to this engine. | |
const std::vector< Option * > & | options () const |
Get the Options that have been added to this engine. | |
const std::vector< Engine * > & | commands () const |
Get the Engines that have been added to this engine. | |
Engine * | command (const std::string &name) const |
bool | hasOptions () const |
Returns true if this Engine has options to parse. | |
Engine * | foundCommand () const |
Return the command that has been found in the commandline, or NULL if none have been found. | |
void | dump (std::ostream &out, const std::string &prefix=std::string()) |
Public Attributes | |
std::string | primaryAlias |
std::vector< std::string > | aliases |
std::string | usage |
std::string | description |
std::string | longDescription |
std::string | examples |
bool | hidden |
bool | no_switches_after_first_arg |
Protected Member Functions | |
void | addWithoutAna (Option *o) |
void | addWithoutAna (const std::vector< Option * > &o) |
void | add (const std::string &alias, Engine *o) |
void | rebuild () |
std::pair< ArgList::iterator, bool > | parseFirstIfKnown (ArgList &list, ArgList::iterator begin) |
Handle the commandline switch at 'begin'. | |
ArgList::iterator | parseKnownSwitches (ArgList &list, ArgList::iterator begin) |
Parse all known Options and leave the rest in list. | |
ArgList::iterator | parseList (ArgList &list) |
Parse the list of arguments, starting at the beginning and removing the arguments it successfully parses. | |
ArgList::iterator | parse (ArgList &list, ArgList::iterator begin) |
Parse all the switches in list, leaving only the non-switch arguments or the arguments following "--". | |
Engine (MemoryManager *mman=0, const std::string &name=std::string(), const std::string &usage=std::string(), const std::string &description=std::string(), const std::string &longDescription=std::string()) | |
Protected Attributes | |
std::vector< OptionGroup * > | m_groups |
std::vector< Option * > | m_options |
std::vector< Engine * > | m_commands |
std::map< char, Option * > | m_short |
std::map< std::string, Option * > | m_long |
std::map< std::string, Engine * > | m_aliases |
Engine * | m_found_command |
Friends | |
class | Parser |
Parse commandline options.
Normally it parses short or long switches all starting with '-'
If other engines are added, then looks in the commandline for a non-switch command to select the operation mode. This allow to have a custom set of commandline options for every non-switch command.
wibble::commandline::Engine::Engine | ( | MemoryManager * | mman = 0 , |
|
const std::string & | name = std::string() , |
|||
const std::string & | usage = std::string() , |
|||
const std::string & | description = std::string() , |
|||
const std::string & | longDescription = std::string() | |||
) | [inline, protected] |
Referenced by createEngine().
T* wibble::commandline::Engine::add | ( | const std::string & | name, | |
char | shortName, | |||
const std::string & | longName, | |||
const std::string & | usage = std::string() , |
|||
const std::string & | description = std::string() | |||
) | [inline] |
Create an option and add to this engine.
References add(), description, and usage.
Add a Engine to this engine.
References m_commands.
OptionGroup * Engine::add | ( | OptionGroup * | group | ) |
Add an OptionGroup to this engine.
References m_groups.
void Engine::add | ( | const std::string & | alias, | |
Engine * | o | |||
) | [protected] |
References wibble::iterator(), and m_aliases.
Referenced by add(), addEngine(), addGroup(), Engine2::Engine2(), rebuild(), and withCommands().
Engine* wibble::commandline::Engine::addEngine | ( | const std::string & | name, | |
const std::string & | usage = std::string() , |
|||
const std::string & | description = std::string() , |
|||
const std::string & | longDescription = std::string() | |||
) | [inline] |
Create a Engine and add it to this engine as a command.
References add(), createEngine(), description, longDescription, and usage.
Referenced by TestCommandlineDoc::basic(), wibble::commandline::StandardParserWithMandatoryCommand::StandardParserWithMandatoryCommand(), and withCommands().
OptionGroup* wibble::commandline::Engine::addGroup | ( | const std::string & | description | ) | [inline] |
Create an OptionGroup and add it to this engine.
References add(), and createGroup().
Referenced by TestCommandlineDoc::basic(), wibble::commandline::StandardParser::StandardParser(), and withCommands().
void Engine::addWithoutAna | ( | const std::vector< Option * > & | o | ) | [protected] |
References addWithoutAna().
void Engine::addWithoutAna | ( | Option * | o | ) | [protected] |
References wibble::iterator(), wibble::commandline::Option::longNames, m_long, m_short, and wibble::commandline::Option::shortNames.
Referenced by addWithoutAna(), and rebuild().
Engine* wibble::commandline::Engine::command | ( | const std::string & | name | ) | const [inline] |
References m_aliases.
Referenced by wibble::commandline::StandardParserWithMandatoryCommand::parse().
const std::vector<Engine*>& wibble::commandline::Engine::commands | ( | ) | const [inline] |
Get the Engines that have been added to this engine.
References m_commands.
Referenced by wibble::commandline::Manpage::output(), and wibble::commandline::Help::outputHelp().
T* wibble::commandline::Engine::create | ( | const std::string & | name, | |
char | shortName, | |||
const std::string & | longName, | |||
const std::string & | usage = std::string() , |
|||
const std::string & | description = std::string() | |||
) | [inline] |
Create an option.
References wibble::commandline::MemoryManager::add(), description, and usage.
Engine* wibble::commandline::Engine::createEngine | ( | const std::string & | name, | |
const std::string & | usage = std::string() , |
|||
const std::string & | description = std::string() , |
|||
const std::string & | longDescription = std::string() | |||
) | [inline] |
Create a Engine.
References wibble::commandline::MemoryManager::add(), description, Engine(), longDescription, and usage.
Referenced by addEngine().
OptionGroup* wibble::commandline::Engine::createGroup | ( | const std::string & | description | ) | [inline] |
Create an OptionGroup.
References wibble::commandline::MemoryManager::add().
Referenced by addGroup().
void Engine::dump | ( | std::ostream & | out, | |
const std::string & | prefix = std::string() | |||
) |
Engine* wibble::commandline::Engine::foundCommand | ( | ) | const [inline] |
Return the command that has been found in the commandline, or NULL if none have been found.
References m_found_command.
Referenced by wibble::commandline::StandardParser::outputHelp(), wibble::commandline::StandardParserWithMandatoryCommand::parse(), and withCommands().
const std::vector<OptionGroup*>& wibble::commandline::Engine::groups | ( | ) | const [inline] |
Get the OptionGroups that have been added to this engine.
References m_groups.
bool wibble::commandline::Engine::hasOptions | ( | ) | const [inline] |
Returns true if this Engine has options to parse.
References m_groups, and m_options.
Referenced by wibble::commandline::Help::outputHelp().
const std::string& wibble::commandline::Engine::name | ( | ) | const [inline] |
Referenced by dump(), wibble::commandline::Manpage::output(), wibble::commandline::StandardParser::outputHelp(), wibble::commandline::StandardParserWithMandatoryCommand::parse(), wibble::commandline::StandardParserWithManpage::parse(), wibble::commandline::StandardParser::parse(), parseFirstIfKnown(), wibble::commandline::StandardParserWithManpage::StandardParserWithManpage(), and withCommands().
const std::vector<Option*>& wibble::commandline::Engine::options | ( | ) | const [inline] |
Get the Options that have been added to this engine.
References m_options.
ArgList::iterator Engine::parse | ( | ArgList & | list, | |
ArgList::iterator | begin | |||
) | [protected] |
Parse all the switches in list, leaving only the non-switch arguments or the arguments following "--".
References wibble::commandline::ArgList::isSwitch(), wibble::iterator(), m_aliases, m_commands, m_found_command, no_switches_after_first_arg, parse(), parseKnownSwitches(), and rebuild().
Referenced by parse(), and parseList().
std::pair< ArgList::iterator, bool > Engine::parseFirstIfKnown | ( | ArgList & | list, | |
ArgList::iterator | begin | |||
) | [protected] |
Handle the commandline switch at 'begin'.
If the switch at 'begin' cannot be handled, the list is untouched and 'begin',false is returned. Else, the switch is removed and the new begin is returned.
References wibble::commandline::ArgList::eraseAndAdvance(), wibble::iterator(), m_long, m_short, and name().
Referenced by parseKnownSwitches().
ArgList::iterator Engine::parseKnownSwitches | ( | ArgList & | list, | |
ArgList::iterator | begin | |||
) | [protected] |
Parse all known Options and leave the rest in list.
References wibble::commandline::ArgList::isSwitch(), wibble::iterator(), no_switches_after_first_arg, and parseFirstIfKnown().
Referenced by parse().
ArgList::iterator wibble::commandline::Engine::parseList | ( | ArgList & | list | ) | [inline, protected] |
Parse the list of arguments, starting at the beginning and removing the arguments it successfully parses.
References parse().
Referenced by wibble::commandline::Parser::parse().
void Engine::rebuild | ( | ) | [protected] |
References add(), addWithoutAna(), m_aliases, m_commands, m_groups, m_long, m_options, and m_short.
friend class Parser [friend] |
std::vector<std::string> wibble::commandline::Engine::aliases |
Referenced by wibble::commandline::Help::outputHelp().
std::string wibble::commandline::Engine::description |
std::string wibble::commandline::Engine::examples |
std::string wibble::commandline::Engine::longDescription |
Referenced by addEngine(), createEngine(), wibble::commandline::Manpage::output(), and withCommands().
std::map<std::string, Engine*> wibble::commandline::Engine::m_aliases [protected] |
std::vector<Engine*> wibble::commandline::Engine::m_commands [protected] |
Referenced by add(), commands(), dump(), parse(), and rebuild().
Engine* wibble::commandline::Engine::m_found_command [protected] |
Referenced by foundCommand(), and parse().
std::vector<OptionGroup*> wibble::commandline::Engine::m_groups [protected] |
Referenced by add(), dump(), groups(), hasOptions(), and rebuild().
std::map<std::string, Option*> wibble::commandline::Engine::m_long [protected] |
Referenced by addWithoutAna(), dump(), parseFirstIfKnown(), and rebuild().
std::vector<Option*> wibble::commandline::Engine::m_options [protected] |
Referenced by add(), dump(), hasOptions(), options(), and rebuild().
std::map<char, Option*> wibble::commandline::Engine::m_short [protected] |
Referenced by addWithoutAna(), dump(), parseFirstIfKnown(), and rebuild().
Referenced by parse(), and parseKnownSwitches().
std::string wibble::commandline::Engine::primaryAlias |
Referenced by wibble::commandline::Help::outputHelp().
std::string wibble::commandline::Engine::usage |