/* Note that the @destroy callback is not called if @data is NULL.  */
void g_object_set_data_full(GObject *object, const gchar *key, gpointer data, GDestroyNotify destroy)
/* Note that the @destroy callback is not called if @data is NULL.  */
void g_object_set_data_full(GObject *object, const gchar *key, gpointer data, GDestroyNotify destroy)
{
  g_return_if_fail (G_IS_OBJECT (object));
  g_return_if_fail (key != NULL);
  g_datalist_id_set_data_full (&object->qdata, g_quark_from_string (key), data,
			       data ? destroy : (GDestroyNotify) NULL);
}