diff options
author | Kjell Ahlstedt <kjell.ahlstedt@bredband.net> | 2017-03-21 16:45:24 +0100 |
---|---|---|
committer | Kjell Ahlstedt <kjell.ahlstedt@bredband.net> | 2017-03-21 16:45:24 +0100 |
commit | 51a0e045b39d684854da0e71bd322fb335b4d6b2 (patch) | |
tree | e01f58fe3bcc159cabee8c35fbefe098a94fc281 /glib/src/optiongroup.ccg | |
parent | 8a01f927bb7b1740c2008fc35a16c2b326271428 (diff) | |
download | glibmm-51a0e045b39d684854da0e71bd322fb335b4d6b2.tar.gz |
Glib::OptionGroup: Modify on_[pre|post]_parse(), on_error()
Remove the OptionGroup& parameter in on_pre_parse(), on_post_parse() and
on_error(). It's unnecessary. It's always identical to *this.
Add a const Error& parameter to on_error(). It's an input parameter with
information about an error that has occurred in OptionContext::parse().
Diffstat (limited to 'glib/src/optiongroup.ccg')
-rw-r--r-- | glib/src/optiongroup.ccg | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/glib/src/optiongroup.ccg b/glib/src/optiongroup.ccg index b4e63a8d..ab80bcb2 100644 --- a/glib/src/optiongroup.ccg +++ b/glib/src/optiongroup.ccg @@ -84,7 +84,7 @@ g_callback_pre_parse( try { - return option_group->on_pre_parse(cppContext, *option_group); + return option_group->on_pre_parse(cppContext); } catch (Glib::Error& err) { @@ -99,18 +99,25 @@ g_callback_pre_parse( static void g_callback_error( - GOptionContext* context, GOptionGroup* /* group */, gpointer data, GError** /* TODO error */) + GOptionContext* context, GOptionGroup* /* group */, gpointer data, GError** error) { - // TODO GError** error is input data containing information on an error that - // has occurred before this function is called. When API can be broken, - // the function prototype of on_error ought to be changed to - // void on_error(OptionContext& context, Error& error). + // GError** error is input data containing information on an error that + // has occurred before this function is called. OptionContext cppContext(context, false /* take_ownership */); auto option_group = static_cast<OptionGroup*>(data); - if (option_group) - return option_group->on_error(cppContext, *option_group); + if (option_group && error && *error) + { + try + { + Error::throw_exception(g_error_copy(*error)); + } + catch (const Error& err) + { + return option_group->on_error(cppContext, err); + } + } } const gchar* @@ -167,7 +174,7 @@ OptionGroup::post_parse_callback( try { - return option_group->on_post_parse(cppContext, *option_group); + return option_group->on_post_parse(cppContext); } catch (Glib::Error& err) { @@ -477,19 +484,19 @@ OptionGroup::add_entry_with_wrapper(const OptionEntry& entry, GOptionArg arg_typ } bool -OptionGroup::on_pre_parse(OptionContext& /* context */, OptionGroup& /* group */) +OptionGroup::on_pre_parse(OptionContext& /* context */) { return true; } bool -OptionGroup::on_post_parse(OptionContext& /* context */, OptionGroup& /* group */) +OptionGroup::on_post_parse(OptionContext& /* context */) { return true; } void -OptionGroup::on_error(OptionContext& /* context */, OptionGroup& /* group */) +OptionGroup::on_error(OptionContext& /* context */, const Error& /* error */) { } |