27#ifndef PURPLE_GLIBCOMPAT_H
28#define PURPLE_GLIBCOMPAT_H
34#if !GLIB_CHECK_VERSION(2,28,0)
36g_list_free_full(GList *l, GDestroyNotify free_func) {
39 for(ll = l; ll != NULL; ll = ll->next) {
47g_slist_free_full(GSList *l, GDestroyNotify free_func) {
50 for(ll = l; ll != NULL; ll = ll->next) {
58#if !GLIB_CHECK_VERSION(2,32,0)
59# define G_GNUC_BEGIN_IGNORE_DEPRECATIONS
60# define G_GNUC_END_IGNORE_DEPRECATIONS
63g_queue_free_full(GQueue *queue, GDestroyNotify free_func) {
66 for(l = queue->head; l != NULL; l = l->next) {
74g_hash_table_contains(GHashTable *hash_table, gconstpointer key) {
75 return g_hash_table_lookup_extended(hash_table, key, NULL, NULL);
82#undef G_GNUC_BEGIN_IGNORE_DEPRECATIONS
83#define G_GNUC_BEGIN_IGNORE_DEPRECATIONS \
84 _Pragma ("clang diagnostic push") \
85 _Pragma ("clang diagnostic ignored \"-Wdeprecated-declarations\"")
87#undef G_GNUC_END_IGNORE_DEPRECATIONS
88#define G_GNUC_END_IGNORE_DEPRECATIONS \
89 _Pragma ("clang diagnostic pop")
97#if !GLIB_CHECK_VERSION(2, 67, 3)
99g_memdup2(gconstpointer mem, gsize byte_size) {
100 gpointer new_mem = NULL;
102 if(mem && byte_size != 0) {
103 new_mem = g_malloc (byte_size);
104 memcpy (new_mem, mem, byte_size);