summaryrefslogtreecommitdiff
path: root/glib/glibmm/object.cc
diff options
context:
space:
mode:
Diffstat (limited to 'glib/glibmm/object.cc')
-rw-r--r--glib/glibmm/object.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/glib/glibmm/object.cc b/glib/glibmm/object.cc
index 4dc73b31..30703d7d 100644
--- a/glib/glibmm/object.cc
+++ b/glib/glibmm/object.cc
@@ -283,10 +283,26 @@ Object::set_data(const Quark& id, void* data)
}
void
+Object::set_data_with_c_callback(const Quark& id, void* data, GDestroyNotify destroy)
+{
+ g_object_set_qdata_full(gobj(), id, data, destroy);
+}
+
+#ifdef GLIBMM_CAN_ASSIGN_NON_EXTERN_C_FUNCTIONS_TO_EXTERN_C_CALLBACKS
+void
Object::set_data(const Quark& id, void* data, DestroyNotify destroy)
{
g_object_set_qdata_full(gobj(), id, data, destroy);
}
+#else
+void
+Object::set_data(const Quark& id, void* data, DestroyNotify)
+{
+ g_object_set_qdata(gobj(), id, data);
+ g_critical("Can't assign a callback with C++ linkage to g_object_set_qdata_full().\n"
+ "Use Glib::Object::set_data_with_c_callback().\n");
+}
+#endif
void
Object::remove_data(const QueryQuark& id)