[glibmm] Gio::Action: Add TODOs to templatize change_state() and activate().
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glibmm] Gio::Action: Add TODOs to templatize change_state() and activate().
- Date: Tue, 6 Aug 2013 19:13:08 +0000 (UTC)
commit fb9808c0271fb28ee07402df0bbe81bbfa99b8a2
Author: Murray Cumming <murrayc murrayc com>
Date: Tue Aug 6 21:12:23 2013 +0200
Gio::Action: Add TODOs to templatize change_state() and activate().
Sadly, we cannot do this until we can break ABI, I think.
gio/src/action.hg | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/gio/src/action.hg b/gio/src/action.hg
index 8cf8e06..f627787 100644
--- a/gio/src/action.hg
+++ b/gio/src/action.hg
@@ -87,6 +87,12 @@ public:
_WRAP_METHOD(bool get_enabled() const, g_action_get_enabled)
+ //TODO: Do this when we can break ABI, removing change_state(const Glib::VariantBase& value) and
change_state(bool)
+ //template <typename T_Value>
+ //void change_state(const T_Value& value);
+ //
+ //_WRAP_METHOD(void change_state_variant(const Glib::VariantBase& value), g_action_change_state)
+
_WRAP_METHOD(void change_state(const Glib::VariantBase& value), g_action_change_state)
/** Request for the state of @a action to be changed to @a value,
@@ -109,6 +115,12 @@ public:
_WRAP_METHOD(Glib::VariantBase get_state_variant() const, g_action_get_state)
+ //TODO: Do this when we can break ABI, removing activate_variant(const Glib::VariantBase& parameter);
+ //template <typename T_Value>
+ //void activate(const T_Value& parameter);
+ //
+ //_WRAP_METHOD(void activate_variant(const Glib::VariantBase& parameter), g_action_activate)
+
_WRAP_METHOD(void activate(const Glib::VariantBase& parameter), g_action_activate)
_WRAP_METHOD(static bool name_is_valid(const Glib::ustring& action_name), g_action_name_is_valid )
@@ -189,4 +201,26 @@ Glib::ustring Action::print_detailed_name(const Glib::ustring& action_name, cons
return print_detailed_name_variant(type_glib_variant::create(parameter));
}
+/* See the TODOs above for when we can break ABI:
+template <typename T_Value>
+void Action::change_state(const T_Value& value)
+{
+ typedef Glib::Variant<T_Value> type_glib_variant;
+
+ g_return_if_fail(
+ g_variant_type_equal(g_action_get_state_type(const_cast<GAction*>(gobj())),
type_glib_variant::variant_type().gobj()));
+ change_state_variant(type_glib_variant::create(value));
+}
+
+template <typename T_Value>
+void Action::activate(const T_Value& parameter)
+{
+ typedef Glib::Variant<T_Value> type_glib_variant;
+
+ g_return_if_fail(
+ g_variant_type_equal(g_action_get_parameter_type(const_cast<GAction*>(gobj())),
type_glib_variant::variant_type().gobj()));
+ activate_variant(type_glib_variant::create(parameter));
+}
+*/
+
} // namespace Gio
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]