wibble::commandline::Engine Class Reference

#include <engine.h>

Inheritance diagram for wibble::commandline::Engine:

Inheritance graph
[legend]
Collaboration diagram for wibble::commandline::Engine:

Collaboration graph
[legend]

List of all members.


Detailed Description

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.

Public Member Functions

const std::string & name () const
Optionadd (Option *o)
 Add an Option to this engine.
OptionGroupadd (OptionGroup *group)
 Add an OptionGroup to this engine.
Engineadd (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.
OptionGroupcreateGroup (const std::string &description)
 Create an OptionGroup.
OptionGroupaddGroup (const std::string &description)
 Create an OptionGroup and add it to this engine.
EnginecreateEngine (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.
EngineaddEngine (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.
Enginecommand (const std::string &name) const
bool hasOptions () const
 Returns true if this Engine has options to parse.
EnginefoundCommand () 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
Enginem_found_command

Friends

class Parser


Constructor & Destructor Documentation

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().


Member Function Documentation

void wibble::commandline::Engine::addWithoutAna ( Option o  )  [protected]

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]

void wibble::commandline::Engine::rebuild (  )  [protected]

References addWithoutAna(), m_aliases, m_commands, m_groups, m_long, m_options, and m_short.

Referenced by dump(), and parse().

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.

Returns:
An iterator to the first unparsed argument (can be list.end())

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]

Option * wibble::commandline::Engine::add ( Option o  ) 

Add an Option to this engine.

References m_options.

OptionGroup * wibble::commandline::Engine::add ( OptionGroup group  ) 

Add an OptionGroup to this engine.

References m_groups.

Engine * wibble::commandline::Engine::add ( Engine o  ) 

Add a Engine to this engine.

References m_commands.

template<typename T>
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.

template<typename T>
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 description, and usage.

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]

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]

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]

const std::vector<OptionGroup*>& wibble::commandline::Engine::groups (  )  const [inline]

Get the OptionGroups that have been added to this engine.

References m_groups.

const std::vector<Option*>& wibble::commandline::Engine::options (  )  const [inline]

Get the Options that have been added to this engine.

References m_options.

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]

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() 
)


Friends And Related Function Documentation

friend class Parser [friend]


Member Data Documentation

Referenced by add(), dump(), groups(), hasOptions(), and rebuild().

Referenced by add(), dump(), hasOptions(), options(), and rebuild().

Referenced by add(), commands(), dump(), parse(), and rebuild().

std::map<char, Option*> wibble::commandline::Engine::m_short [protected]

std::map<std::string, Option*> wibble::commandline::Engine::m_long [protected]

std::map<std::string, Engine*> wibble::commandline::Engine::m_aliases [protected]

Referenced by add(), command(), dump(), parse(), and rebuild().

Referenced by foundCommand(), and parse().

std::vector<std::string> wibble::commandline::Engine::aliases


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

Generated on Tue Mar 11 11:26:34 2008 for wibble by  doxygen 1.5.5