[glibmm] Gio::Action: Add TODOs to templatize change_state() and activate().



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]