optionmm::basic_command_line< ErrorHandler > Class Template Reference

#include <optionmm/command_line.hh>

Inheritance diagram for optionmm::basic_command_line< ErrorHandler >:

Inheritance graph
[legend]
Collaboration diagram for optionmm::basic_command_line< ErrorHandler >:

Collaboration graph
[legend]
List of all members.

Detailed Description

template<typename ErrorHandler = default_error_handler>
class optionmm::basic_command_line< ErrorHandler >

Command line parser.

Parameters:
ErrorHandler A policy class to handle bad command line options and arguments. See also default_error_handler.
The command line option manager is straight forward to use. First, one declares on instance of the manager, parsing it the proper arguments

int main(int argc, char** argv) 
{
  optionmm::basic_command_line<> cl("Demonstration of Option--", "1.0", 
                                    "Copyright (c) 2002 Christian Holm", 
                                    "", argc, argv);

Then, one creates option objects and add them to the manager.

  
  optionmm::basic_option<int>  i_opt('i', "int", "Integer option", 0); 
  optionmm::int_option         I_opt('I', "Int", "Integer option", 42);
  
  cl.add(i_opt);
  cl.add(I_opt);

  if (!cl.process()) return 1;

After that, the manager should process the command line.

  if (cl.help()) return 0;

If the application should exit if the help option was given, then it may do so, and similar for the version option.

  cl.version();
  
  for (int i = 0; i < i_opt.size(); i++) 

After processing, the option objects hold the value(s) of the command line options given.

    std::cout << i_opt.value(i) << std::endl;

  return 0;
Examples:

demo.cc.

Definition at line 142 of file command_line.hh.

Public Types

typedef std::vector< option_base * > option_list

Public Member Functions

 basic_command_line (const std::string title, const std::string &version, const std::string &copy, const std::string &usage, int &argc, char **argv)
template<typename T, bool a, bool m> void add (basic_option< T, a, m > &option)
bool help (std::ostream &o=std::cout)
bool version (std::ostream &o=std::cout)
bool process ()
const std::string & program_name () const
const std::string & title () const
const std::string & version () const
const std::string & copyright () const

Private Member Functions

bool handle_short (int &i)
bool handle_long (int &i)
void cleanup ()

Private Attributes

option_list _options
std::string _program_name
int & _argc
char ** _argv
std::string _title
std::string _version
std::string _copyright
std::string _usage
basic_option< bool, false,
false > 
_help_option
basic_option< bool, false,
false > 
_version_option


Member Typedef Documentation

template<typename ErrorHandler = default_error_handler>
typedef std::vector<option_base*> optionmm::basic_command_line< ErrorHandler >::option_list
 

The container of options.

Definition at line 146 of file command_line.hh.


Constructor & Destructor Documentation

template<typename ErrorHandler>
optionmm::basic_command_line< ErrorHandler >::basic_command_line const std::string  title,
const std::string &  version,
const std::string &  copy,
const std::string &  usage,
int &  argc,
char **  argv
[inline]
 

Constructor.

Parameters:
argc reference to the number of command line options from main
argv the command line options from main
title the title of the application.
version the version of the application
copy The copyright of the application.
usage What to print as syntax (may be empty)

Definition at line 235 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_help_option, optionmm::basic_command_line< ErrorHandler >::_program_name, optionmm::basic_command_line< ErrorHandler >::_version_option, and optionmm::basic_command_line< ErrorHandler >::add().

Here is the call graph for this function:


Member Function Documentation

template<typename ErrorHandler = default_error_handler>
template<typename T, bool a, bool m>
void optionmm::basic_command_line< ErrorHandler >::add basic_option< T, a, m > &  option  )  [inline]
 

Add an option to the command line.

Parameters:
option The option object to add to the manager.
Examples:
demo.cc.

Definition at line 194 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_options.

Referenced by optionmm::basic_command_line< ErrorHandler >::basic_command_line().

template<typename ErrorHandler>
void optionmm::basic_command_line< ErrorHandler >::cleanup  )  [inline, private]
 

Clean up command line.

Definition at line 321 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_argc, and optionmm::basic_command_line< ErrorHandler >::_argv.

Referenced by optionmm::basic_command_line< ErrorHandler >::process().

template<typename ErrorHandler = default_error_handler>
const std::string& optionmm::basic_command_line< ErrorHandler >::copyright  )  const [inline]
 

Get the application copyright.

Definition at line 228 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_copyright.

template<typename ErrorHandler>
bool optionmm::basic_command_line< ErrorHandler >::handle_long int &  i  )  [inline, private]
 

Handle the i'th long option.

Returns:
true on success, false oterwise.

Definition at line 392 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_argv, optionmm::basic_command_line< ErrorHandler >::_options, and optionmm::basic_command_line< ErrorHandler >::_program_name.

Referenced by optionmm::basic_command_line< ErrorHandler >::process().

template<typename ErrorHandler>
bool optionmm::basic_command_line< ErrorHandler >::handle_short int &  i  )  [inline, private]
 

Handle the i'th short options.

Returns:
true on success, false oterwise.

Definition at line 341 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_argv, optionmm::basic_command_line< ErrorHandler >::_options, and optionmm::basic_command_line< ErrorHandler >::_program_name.

Referenced by optionmm::basic_command_line< ErrorHandler >::process().

template<typename ErrorHandler>
bool optionmm::basic_command_line< ErrorHandler >::help std::ostream &  o = std::cout  )  [inline]
 

Print a help message If the manager saw the --help option, then print the help message to stream o, and return true.

One can use the return value to jump out of the main program if the --help option was given, like

          int main(int argc, char** argv) { 
            using namespace optionmm; 
            option_manager om("foo", "1.0", "bar", "", argc, argv);
            ...
            if (!om.process()) return 1;
            if (om.help()) return 0;
            ...
          }
Returns:
true if the help option was given.
Examples:
demo.cc.

Definition at line 261 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_help_option, optionmm::basic_command_line< ErrorHandler >::_options, optionmm::basic_command_line< ErrorHandler >::_program_name, optionmm::basic_command_line< ErrorHandler >::_usage, optionmm::basic_command_line< ErrorHandler >::_version_option, optionmm::option_base::position(), optionmm::basic_option< bool, false, false >::push_arg(), optionmm::basic_option< bool, false, false >::value(), and optionmm::basic_command_line< ErrorHandler >::version().

Here is the call graph for this function:

template<typename ErrorHandler>
bool optionmm::basic_command_line< ErrorHandler >::process  )  [inline]
 

Process the command line.

Returns:
true on success, false oterwise.
Examples:
demo.cc.

Definition at line 302 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_argc, optionmm::basic_command_line< ErrorHandler >::_argv, optionmm::basic_command_line< ErrorHandler >::cleanup(), optionmm::basic_command_line< ErrorHandler >::handle_long(), and optionmm::basic_command_line< ErrorHandler >::handle_short().

Here is the call graph for this function:

template<typename ErrorHandler = default_error_handler>
const std::string& optionmm::basic_command_line< ErrorHandler >::program_name  )  const [inline]
 

Get the application name.

Definition at line 222 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_program_name.

template<typename ErrorHandler = default_error_handler>
const std::string& optionmm::basic_command_line< ErrorHandler >::title  )  const [inline]
 

Get the application title.

Definition at line 224 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_title.

template<typename ErrorHandler = default_error_handler>
const std::string& optionmm::basic_command_line< ErrorHandler >::version  )  const [inline]
 

Get the application version.

Definition at line 226 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_title.

Referenced by optionmm::basic_command_line< ErrorHandler >::help().

template<typename ErrorHandler>
bool optionmm::basic_command_line< ErrorHandler >::version std::ostream &  o = std::cout  )  [inline]
 

Print version information.

If the manager saw the --version option, then print the version information to stream o, and return true.

Parameters:
o The stream to write information to.
Returns:
true if version option was given.
Examples:
demo.cc.

Definition at line 290 of file command_line.hh.

References optionmm::basic_command_line< ErrorHandler >::_copyright, optionmm::basic_command_line< ErrorHandler >::_title, optionmm::basic_command_line< ErrorHandler >::_version, optionmm::basic_command_line< ErrorHandler >::_version_option, and optionmm::basic_option< bool, false, false >::value().

Here is the call graph for this function:


Member Data Documentation

template<typename ErrorHandler = default_error_handler>
int& optionmm::basic_command_line< ErrorHandler >::_argc [private]
 

The number of arguments cached from command line.

Definition at line 153 of file command_line.hh.

Referenced by optionmm::basic_command_line< ErrorHandler >::cleanup(), and optionmm::basic_command_line< ErrorHandler >::process().

template<typename ErrorHandler = default_error_handler>
char** optionmm::basic_command_line< ErrorHandler >::_argv [private]
 

The command line arguments.

Definition at line 155 of file command_line.hh.

Referenced by optionmm::basic_command_line< ErrorHandler >::cleanup(), optionmm::basic_command_line< ErrorHandler >::handle_long(), optionmm::basic_command_line< ErrorHandler >::handle_short(), and optionmm::basic_command_line< ErrorHandler >::process().

template<typename ErrorHandler = default_error_handler>
std::string optionmm::basic_command_line< ErrorHandler >::_copyright [private]
 

The copyright of the application.

Definition at line 161 of file command_line.hh.

Referenced by optionmm::basic_command_line< ErrorHandler >::copyright(), and optionmm::basic_command_line< ErrorHandler >::version().

template<typename ErrorHandler = default_error_handler>
basic_option<bool,false,false> optionmm::basic_command_line< ErrorHandler >::_help_option [private]
 

The help option.

Definition at line 165 of file command_line.hh.

Referenced by optionmm::basic_command_line< ErrorHandler >::basic_command_line(), and optionmm::basic_command_line< ErrorHandler >::help().

template<typename ErrorHandler = default_error_handler>
option_list optionmm::basic_command_line< ErrorHandler >::_options [private]
 

List of options.

Definition at line 149 of file command_line.hh.

Referenced by optionmm::basic_command_line< ErrorHandler >::add(), optionmm::basic_command_line< ErrorHandler >::handle_long(), optionmm::basic_command_line< ErrorHandler >::handle_short(), and optionmm::basic_command_line< ErrorHandler >::help().

template<typename ErrorHandler = default_error_handler>
std::string optionmm::basic_command_line< ErrorHandler >::_program_name [private]
 

The program name (sans directory part).

Definition at line 151 of file command_line.hh.

Referenced by optionmm::basic_command_line< ErrorHandler >::basic_command_line(), optionmm::basic_command_line< ErrorHandler >::handle_long(), optionmm::basic_command_line< ErrorHandler >::handle_short(), optionmm::basic_command_line< ErrorHandler >::help(), and optionmm::basic_command_line< ErrorHandler >::program_name().

template<typename ErrorHandler = default_error_handler>
std::string optionmm::basic_command_line< ErrorHandler >::_title [private]
 

The title of the application.

Definition at line 157 of file command_line.hh.

Referenced by optionmm::basic_command_line< ErrorHandler >::title(), and optionmm::basic_command_line< ErrorHandler >::version().

template<typename ErrorHandler = default_error_handler>
std::string optionmm::basic_command_line< ErrorHandler >::_usage [private]
 

The copyright of the application.

Definition at line 163 of file command_line.hh.

Referenced by optionmm::basic_command_line< ErrorHandler >::help().

template<typename ErrorHandler = default_error_handler>
std::string optionmm::basic_command_line< ErrorHandler >::_version [private]
 

The version number of the application.

Definition at line 159 of file command_line.hh.

Referenced by optionmm::basic_command_line< ErrorHandler >::version().

template<typename ErrorHandler = default_error_handler>
basic_option<bool,false,false> optionmm::basic_command_line< ErrorHandler >::_version_option [private]
 

The version information option.

Definition at line 167 of file command_line.hh.

Referenced by optionmm::basic_command_line< ErrorHandler >::basic_command_line(), optionmm::basic_command_line< ErrorHandler >::help(), and optionmm::basic_command_line< ErrorHandler >::version().


The documentation for this class was generated from the following file:
Top of page Last update Tue Jan 13 19:10:36 2004
Christian Holm
Created by DoxyGen 1.3.4