31#ifndef __CLAW_ARGUMENTS_TABLE_HPP__
32#define __CLAW_ARGUMENTS_TABLE_HPP__
55 class argument_attributes
58 argument_attributes(
const std::string& name,
59 const std::string& second_name,
60 const std::string& help_message,
bool optional,
61 const std::string& value_type);
63 bool operator<(
const argument_attributes& that)
const;
65 std::string format_short_help()
const;
66 std::string format_long_help(std::size_t arguments_width)
const;
67 std::string format_long_help_arguments()
const;
69 const std::string& get_name()
const;
70 const std::string& get_second_name()
const;
72 bool is_optional()
const;
76 const std::string m_name;
79 const std::string m_second_name;
82 const std::string m_help_message;
85 const bool m_optional;
88 const std::string m_value_type;
96 void add(
const std::string& short_name,
const std::string& long_name,
97 const std::string& help_msg =
"",
bool optional =
false,
98 const std::string& val_name =
"");
99 void add_long(
const std::string& long_name,
100 const std::string& help_msg =
"",
bool optional =
false,
101 const std::string& val_name =
"");
102 void add_short(
const std::string& short_name,
103 const std::string& help_msg =
"",
bool optional =
false,
104 const std::string& val_name =
"");
106 void parse(
int& argc,
char**& argv);
107 void help(
const std::string& free_args =
"")
const;
110 bool has_value(
const std::string& arg_name)
const;
116 bool get_bool(
const std::string& arg_name)
const;
117 int get_integer(
const std::string& arg_name)
const;
118 double get_real(
const std::string& arg_name)
const;
119 const std::string&
get_string(
const std::string& arg_name)
const;
123 std::list<std::string>
129 void get_argument_names(
const std::string& arg_name,
130 std::string& short_name,
131 std::string& long_name)
const;
133 std::size_t get_maximum_long_help_arguments_width()
const;
A class to manage the arguments of your program.
void help(const std::string &free_args="") const
Print some help about the arguments.
const std::string & get_string(const std::string &arg_name) const
Get the string value of an argument.
std::list< double > get_all_of_real(const std::string &arg_name) const
Get all real values of an argument.
arguments_table(const std::string &prog_name)
Constructor.
bool has_value(const std::string &arg_name) const
Tell if an argument has a value.
bool only_integer_values(const std::string &arg_name) const
Tell if only integer values are associated to an argument.
int get_integer(const std::string &arg_name) const
Get the integer value of an argument.
const std::string & get_program_name() const
Get the name of the program.
void add_short(const std::string &short_name, const std::string &help_msg="", bool optional=false, const std::string &val_name="")
Add an argument in the table.
void add_long(const std::string &long_name, const std::string &help_msg="", bool optional=false, const std::string &val_name="")
Add an argument in the table.
void add_argument(const std::string &arg)
Add an argument in our list.
void parse(int &argc, char **&argv)
Parse the command line arguments.
std::list< std::string > get_all_of_string(const std::string &arg_name) const
Get all string values of an argument.
bool get_bool(const std::string &arg_name) const
Get the boolean state of an argument.
std::list< int > get_all_of_integer(const std::string &arg_name) const
Get all integer values of an argument.
void add(const std::string &short_name, const std::string &long_name, const std::string &help_msg="", bool optional=false, const std::string &val_name="")
Add an argument in the table.
bool only_real_values(const std::string &arg_name) const
Tell if only real values are associated to an argument.
bool required_fields_are_set() const
Tell if all arguments not marqued as "optional" have been specified in the command line.
double get_real(const std::string &arg_name) const
Get the real value of an argument.
A class to manage the arguments of your program.
A class to manage sets of ordered items.
This is the main namespace.