summaryrefslogtreecommitdiff
path: root/utils/pool.h
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2004-01-02 12:04:29 +0000
committerJames Bursa <james@netsurf-browser.org>2004-01-02 12:04:29 +0000
commit314a53cd63f1f28cf5e95eb612181cfffc152135 (patch)
tree506e4a6519828bc685f0a73335c30ecb5f1a1005 /utils/pool.h
parent825c81f03a226a85b48e77a761be2a7245b9f030 (diff)
downloadnetsurf-314a53cd63f1f28cf5e95eb612181cfffc152135.tar.gz
netsurf-314a53cd63f1f28cf5e95eb612181cfffc152135.tar.bz2
[project @ 2004-01-02 12:04:29 by bursa]
Implement memory pools. svn path=/import/netsurf/; revision=478
Diffstat (limited to 'utils/pool.h')
-rw-r--r--utils/pool.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/utils/pool.h b/utils/pool.h
new file mode 100644
index 000000000..4dceb3f47
--- /dev/null
+++ b/utils/pool.h
@@ -0,0 +1,38 @@
+/*
+ * This file is part of NetSurf, http://netsurf.sourceforge.net/
+ * Licensed under the GNU General Public License,
+ * http://www.opensource.org/licenses/gpl-license
+ * Copyright 2003 James Bursa <bursa@users.sourceforge.net>
+ */
+
+/** \file
+ * Memory pool manager (interface).
+ *
+ * A memory pool is intended for allocating memory which is required in small
+ * blocks and all released together. It avoids the overhead of many small
+ * malloc()s.
+ *
+ * Create a pool using pool_create(), and allocate memory from it using
+ * pool_alloc() and pool_string(). Destroy and free the entire pool using
+ * pool_destroy().
+ *
+ * The suggested block size should be large enough to store many allocations.
+ * Use a multiple of the size of contents, if fixed. Larger allocations than
+ * the block size are possible.
+ */
+
+#ifndef _NETSURF_UTILS_POOL_H_
+#define _NETSURF_UTILS_POOL_H_
+
+#include <stdlib.h>
+
+/** Opaque memory pool handle. */
+typedef struct pool *pool;
+
+pool pool_create(size_t block_size);
+void pool_destroy(pool p);
+void *pool_alloc(pool p, size_t size);
+char *pool_string(pool p, const char *s);
+
+#endif
+