/* Removes an element using its string identifier. The data element's destroy function is called if it has been set.  */
void g_datalist_id_set_data_full(GData **datalist, GQuark key_id, gpointer data, GDestroyNotify destroy_func)
/* Removes an element using its string identifier. The data element's destroy function is called if it has been set.  */
void g_datalist_id_set_data_full(GData **datalist, GQuark key_id, gpointer data, GDestroyNotify destroy_func)
{
  g_return_if_fail (datalist != NULL);
  if (!data)
    g_return_if_fail (destroy_func == NULL);
  if (!key_id)
    {
      if (data)
	g_return_if_fail (key_id > 0);
      else
	return;
    }
  g_data_set_internal (datalist, key_id, data, destroy_func, NULL);
}