18 #ifndef RAUL_CONFIGURATION_HPP
19 #define RAUL_CONFIGURATION_HPP
27 #include "raul/Atom.hpp"
37 Configuration(
const std::string& shortdesc,
const std::string& desc)
38 : _shortdesc(shortdesc)
44 const std::string& name,
46 const std::string& desc,
47 const Atom::Type type,
50 void print_usage(
const std::string& program, std::ostream& os);
52 struct CommandLineError :
public std::exception {
53 explicit CommandLineError(
const std::string& m) : msg(m) {}
54 ~CommandLineError()
throw() {}
55 const char* what()
const throw() {
return msg.c_str(); }
59 void parse(
int argc,
char** argv)
throw (CommandLineError);
61 void print(std::ostream& os,
const std::string mime_type=
"text/plain")
const;
63 const Raul::Atom& option(
const std::string& long_name);
68 Option(
const std::string& n,
char l,
const std::string& d,
70 : name(n), letter(l), desc(d), type(type), default_value(def), value(def)
81 struct OptionNameOrder {
82 inline bool operator()(
const Option& a,
const Option& b) {
83 return a.name < b.name;
87 typedef std::map<std::string, Option> Options;
88 typedef std::map<char, std::string> ShortNames;
89 typedef std::list<std::string> Files;
91 int set_value_from_string(Configuration::Option& option,
const std::string& value)
92 throw (Configuration::CommandLineError);
94 const std::string _shortdesc;
95 const std::string _desc;
97 ShortNames _short_names;
99 size_t _max_name_length;
104 #endif // RAUL_CONFIGURATION_HPP