]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add mempool functions to work with glists
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 18 Jan 2017 16:48:51 +0000 (16:48 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 18 Jan 2017 16:48:51 +0000 (16:48 +0000)
src/libutil/mem_pool.c
src/libutil/mem_pool.h

index 3b05e1d59b82257b306c280a0fe599856c327384..1ee0558a19c10afd2c116f2e5f9a8a9b30c87a54 100644 (file)
@@ -874,3 +874,45 @@ rspamd_mempool_remove_variable (rspamd_mempool_t *pool, const gchar *name)
                g_hash_table_remove (pool->variables, name);
        }
 }
+
+GList *
+rspamd_mempool_glist_prepend (rspamd_mempool_t *pool, GList *l, gpointer p)
+{
+       GList *cell;
+
+       cell = rspamd_mempool_alloc (pool, sizeof (*cell));
+       cell->prev = NULL;
+       cell->data = p;
+
+       if (l == NULL) {
+               cell->next = NULL;
+       }
+       else {
+               cell->next = l;
+               l->prev = cell;
+       }
+
+       return cell;
+}
+
+GList *
+rspamd_mempool_glist_append (rspamd_mempool_t *pool, GList *l, gpointer p)
+{
+       GList *cell, *cur;
+
+       cell = rspamd_mempool_alloc (pool, sizeof (*cell));
+       cell->next = NULL;
+       cell->data = p;
+
+       if (l) {
+               for (cur = l; cur->next != NULL; cur = cur->next) {}
+               cur->next = cell;
+               cell->prev = cur;
+       }
+       else {
+               l = cell;
+               l->prev = NULL;
+       }
+
+       return l;
+}
index 69e9f64377fc797cbf2a3df39a5114d02621e0b8..f16d454f2f9edc68f2dbfc1e5914d35d26c55fcd 100644 (file)
@@ -320,5 +320,21 @@ gpointer rspamd_mempool_get_variable (rspamd_mempool_t *pool,
  */
 void rspamd_mempool_remove_variable (rspamd_mempool_t *pool,
                const gchar *name);
+/**
+ * Prepend element to a list creating it in the memory pool
+ * @param l
+ * @param p
+ * @return
+ */
+GList *rspamd_mempool_glist_prepend (rspamd_mempool_t *pool,
+               GList *l, gpointer p) G_GNUC_WARN_UNUSED_RESULT;
+/**
+ * Append element to a list creating it in the memory pool
+ * @param l
+ * @param p
+ * @return
+ */
+GList *rspamd_mempool_glist_append (rspamd_mempool_t *pool,
+               GList *l, gpointer p) G_GNUC_WARN_UNUSED_RESULT;
 
 #endif