#include <glibmm.h>
{
public:
ExampleOptionGroup();
private:
bool on_option_arg_string(
bool on_option_arg_filename(
public:
int m_arg_foo;
bool m_arg_boolean;
};
ExampleOptionGroup::ExampleOptionGroup()
"example_group", "description of example group", "help description of example group"),
m_arg_foo(0),
m_arg_boolean(false)
{
add_entry(entry1, m_arg_foo);
add_entry_filename(entry2, m_arg_filename);
m_arg_goo = "default-goo-value";
add_entry(entry3, m_arg_goo);
add_entry(entry4, m_arg_boolean);
add_entry(entry5, m_arg_list);
m_arg_x_string = "not specified";
add_entry(entry6, sigc::mem_fun(*this, &ExampleOptionGroup::on_option_arg_string));
m_arg_x_filename = "not specified";
add_entry_filename(entry7, sigc::mem_fun(*this, &ExampleOptionGroup::on_option_arg_filename));
add_entry(entry_remaining, m_remaining_list);
}
bool
{
return true;
}
bool
ExampleOptionGroup::on_post_parse(
{
return true;
}
void
{
}
bool
ExampleOptionGroup::on_option_arg_string(
{
if (option_name != "-x" && option_name != "--x-string")
{
m_arg_x_string = "on_option_arg_string called with unexpected option_name: " + option_name;
}
if (!has_value)
{
m_arg_x_string = "no value";
return true;
}
{
m_arg_x_string = "empty string";
return true;
}
m_arg_x_string = value;
if (value == "error")
{
}
return value != "false";
}
bool
ExampleOptionGroup::on_option_arg_filename(
{
if (option_name != "-X" && option_name != "--x-filename")
{
m_arg_x_filename = "on_option_arg_filename called with unexpected option_name: " + option_name;
}
if (!has_value)
{
m_arg_x_filename = "no value";
return true;
}
if (value.empty())
{
m_arg_x_filename = "empty string";
return true;
}
m_arg_x_filename = value;
if (value == "error")
{
"on_option_arg_filename called with value = " + m_arg_x_filename);
}
return value != "false";
}
int
main(int argc, char** argv)
{
ExampleOptionGroup group;
try
{
context.
parse(argc, argv);
}
{
}
<<
" filename = " << group.m_arg_filename <<
std::endl
<< " activate_something = " << (group.m_arg_boolean ? "enabled" : "disabled")
<<
" x-string = " << group.m_arg_x_string <<
std::endl
<<
" x-filename = " << group.m_arg_x_filename <<
std::endl;
for (const auto& i : group.m_arg_list)
{
}
for (const auto& i : group.m_remaining_list)
{
}
return 0;
}
basic_string< char > string
basic_ostream< _CharT, _Traits > & endl(basic_ostream< _CharT, _Traits > &__os)
const char * what() const noexcept override
An OptionContext defines and parses commandline options, using OptionGroups and option entries .
Definition optioncontext.h:127
bool parse(int &argc, char **&argv)
Parses the command line arguments, recognizing options which have been added to context.
void set_main_group(OptionGroup &group)
Sets an OptionGroup as the main group of the context.
An OptionEntry defines a single option.
Definition optionentry.h:46
void set_long_name(const Glib::ustring &value)
void set_description(const Glib::ustring &value)
void set_flags(const Flags &value)
Set one or more OptionEntry::Flags.
void set_short_name(const gchar &value)
Exception class for options.
Definition optioncontext.h:41
@ UNKNOWN_OPTION
An option was not known to the parser.
Definition optioncontext.h:58
@ BAD_VALUE
A value couldn't be parsed.
Definition optioncontext.h:59
An OptionGroup defines the options in a single group.
Definition optiongroup.h:58
virtual void on_error(OptionContext &context, const Error &error)
virtual bool on_post_parse(OptionContext &context)
virtual bool on_pre_parse(OptionContext &context)
Glib::ustring has much the same interface as std::string, but contains Unicode characters encoded as ...
Definition ustring.h:336
bool empty() const
Returns true if the string is empty.
Definition containerhandle_shared.h:36
void init()
Initialize glibmm.