Merge pull request #3826 from monojenkins/update-csprojs
[mono.git] / mono / metadata / mempool-internals.h
old mode 100755 (executable)
new mode 100644 (file)
index eaaf50d..4896a23
@@ -4,16 +4,66 @@
 #include <glib.h>
 
 #include "mono/utils/mono-compiler.h"
+#include "mono/metadata/mempool.h"
 
-GSList*
-g_slist_prepend_mempool (MonoMemPool *mp, GSList *list, gpointer data) MONO_INTERNAL;
-GSList*
-g_slist_append_mempool (MonoMemPool *mp, GSList *list, gpointer data) MONO_INTERNAL;
+static inline GList*
+g_list_prepend_mempool (MonoMemPool *mp, GList *list, gpointer data)
+{
+       GList *new_list;
+       
+       new_list = (GList *) mono_mempool_alloc (mp, sizeof (GList));
+       new_list->data = data;
+       new_list->prev = list ? list->prev : NULL;
+    new_list->next = list;
 
-GList*
-g_list_prepend_mempool (MonoMemPool *mp, GList *list, gpointer data) MONO_INTERNAL;
+    if (new_list->prev)
+            new_list->prev->next = new_list;
+    if (list)
+            list->prev = new_list;
+
+       return new_list;
+}
+
+static inline GSList*
+g_slist_prepend_mempool (MonoMemPool *mp, GSList *list, gpointer  data)
+{
+       GSList *new_list;
+       
+       new_list = (GSList *) mono_mempool_alloc (mp, sizeof (GSList));
+       new_list->data = data;
+       new_list->next = list;
+
+       return new_list;
+}
+
+static inline GSList*
+g_slist_append_mempool (MonoMemPool *mp, GSList *list, gpointer data)
+{
+       GSList *new_list;
+       GSList *last;
+
+       new_list = (GSList *) mono_mempool_alloc (mp, sizeof (GSList));
+       new_list->data = data;
+       new_list->next = NULL;
+
+       if (list) {
+               last = list;
+               while (last->next)
+                       last = last->next;
+               last->next = new_list;
+
+               return list;
+       } else
+               return new_list;
+}
+
+char*
+mono_mempool_strdup_vprintf (MonoMemPool *pool, const char *format, va_list args);
+
+char*
+mono_mempool_strdup_printf (MonoMemPool *pool, const char *format, ...) MONO_ATTR_FORMAT_PRINTF(2,3);;
 
 long
-mono_mempool_get_bytes_allocated (void) MONO_INTERNAL;
+mono_mempool_get_bytes_allocated (void);
 
 #endif