#include <engine.h>
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.
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 |
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 |
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().
void wibble::commandline::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().
void wibble::commandline::Engine::addWithoutAna | ( | const std::vector< Option * > & | o | ) | [protected] |
References addWithoutAna().
void wibble::commandline::Engine::add | ( | const std::string & | alias, | |
Engine * | o | |||
) | [protected] |
References wibble::iterator(), and m_aliases.
Referenced by TestCommandlineEngine::Engine2::Engine2(), and withCommands().
void wibble::commandline::Engine::rebuild | ( | ) | [protected] |
References addWithoutAna(), m_aliases, m_commands, m_groups, m_long, m_options, and m_short.
std::pair< ArgList::iterator, bool > wibble::commandline::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 wibble::commandline::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(), 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().
ArgList::iterator wibble::commandline::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, parse(), parseKnownSwitches(), and rebuild().
Referenced by parse(), and parseList().
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().
OptionGroup * wibble::commandline::Engine::add | ( | OptionGroup * | group | ) |
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] |
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] |
OptionGroup* wibble::commandline::Engine::createGroup | ( | const std::string & | description | ) | [inline] |
Create an OptionGroup.
References wibble::commandline::MemoryManager::add().
Referenced by addGroup().
OptionGroup* wibble::commandline::Engine::addGroup | ( | const std::string & | description | ) | [inline] |
Create an OptionGroup and add it to this engine.
References createGroup().
Referenced by TestCommandlineDoc::basic(), wibble::commandline::StandardParser::StandardParser(), and withCommands().
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().
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 createEngine(), description, longDescription, and usage.
Referenced by TestCommandlineDoc::basic(), wibble::commandline::StandardParserWithMandatoryCommand::StandardParserWithMandatoryCommand(), and withCommands().
const std::vector<OptionGroup*>& wibble::commandline::Engine::groups | ( | ) | const [inline] |
const std::vector<Option*>& wibble::commandline::Engine::options | ( | ) | const [inline] |
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().
Engine* wibble::commandline::Engine::command | ( | const std::string & | name | ) | const [inline] |
References m_aliases.
Referenced by wibble::commandline::StandardParserWithMandatoryCommand::parse().
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().
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().
void wibble::commandline::Engine::dump | ( | std::ostream & | out, | |
const std::string & | prefix = std::string() | |||
) |
friend class Parser [friend] |
std::vector<OptionGroup*> wibble::commandline::Engine::m_groups [protected] |
Referenced by add(), dump(), groups(), hasOptions(), and rebuild().
std::vector<Option*> wibble::commandline::Engine::m_options [protected] |
Referenced by add(), dump(), hasOptions(), options(), and rebuild().
std::vector<Engine*> wibble::commandline::Engine::m_commands [protected] |
Referenced by add(), commands(), dump(), parse(), and rebuild().
std::map<char, Option*> wibble::commandline::Engine::m_short [protected] |
Referenced by addWithoutAna(), dump(), parseFirstIfKnown(), and rebuild().
std::map<std::string, Option*> wibble::commandline::Engine::m_long [protected] |
Referenced by addWithoutAna(), dump(), parseFirstIfKnown(), and rebuild().
std::map<std::string, Engine*> wibble::commandline::Engine::m_aliases [protected] |
Engine* wibble::commandline::Engine::m_found_command [protected] |
Referenced by foundCommand(), and parse().
std::string wibble::commandline::Engine::primaryAlias |
Referenced by wibble::commandline::Help::outputHelp().
std::vector<std::string> wibble::commandline::Engine::aliases |
Referenced by wibble::commandline::Help::outputHelp().
std::string wibble::commandline::Engine::usage |
std::string wibble::commandline::Engine::description |
std::string wibble::commandline::Engine::longDescription |
Referenced by addEngine(), createEngine(), wibble::commandline::Manpage::output(), and withCommands().
std::string wibble::commandline::Engine::examples |