summaryrefslogtreecommitdiff
path: root/glib/src/optiongroup.ccg
diff options
context:
space:
mode:
authorKjell Ahlstedt <kjell.ahlstedt@bredband.net>2017-03-21 16:45:24 +0100
committerKjell Ahlstedt <kjell.ahlstedt@bredband.net>2017-03-21 16:45:24 +0100
commit51a0e045b39d684854da0e71bd322fb335b4d6b2 (patch)
treee01f58fe3bcc159cabee8c35fbefe098a94fc281 /glib/src/optiongroup.ccg
parent8a01f927bb7b1740c2008fc35a16c2b326271428 (diff)
downloadglibmm-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.ccg31
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 */)
{
}