1/*
2 * This library is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU Lesser General Public
4 * License as published by the Free Software Foundation; either
5 * version 2.1 of the License, or (at your option) any later version.
6 *
7 * This library is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 * Lesser General Public License for more details.
11 *
12 * You should have received a copy of the GNU Lesser General Public
13 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
14 */
15
16#ifndef __G_ALLOCATOR_H__
17#define __G_ALLOCATOR_H__
18
19#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
20#error "Only <glib.h> can be included directly."
21#endif
22
23#include <glib/gtypes.h>
24
25G_BEGIN_DECLS
26
27typedef struct _GAllocator GAllocator;
28typedef struct _GMemChunk GMemChunk;
29
30#define G_ALLOC_ONLY 1
31#define G_ALLOC_AND_FREE 2
32#define G_ALLOCATOR_LIST 1
33#define G_ALLOCATOR_SLIST 2
34#define G_ALLOCATOR_NODE 3
35
36#define g_chunk_new(type, chunk) ((type *) g_mem_chunk_alloc (chunk))
37#define g_chunk_new0(type, chunk) ((type *) g_mem_chunk_alloc0 (chunk))
38#define g_chunk_free(mem, mem_chunk) (g_mem_chunk_free (mem_chunk, mem))
39#define g_mem_chunk_create(type, x, y) (g_mem_chunk_new (NULL, sizeof (type), 0, 0))
40
41
42GLIB_DEPRECATED
43GMemChunk * g_mem_chunk_new (const gchar *name,
44 gint atom_size,
45 gsize area_size,
46 gint type);
47GLIB_DEPRECATED
48void g_mem_chunk_destroy (GMemChunk *mem_chunk);
49GLIB_DEPRECATED
50gpointer g_mem_chunk_alloc (GMemChunk *mem_chunk);
51GLIB_DEPRECATED
52gpointer g_mem_chunk_alloc0 (GMemChunk *mem_chunk);
53GLIB_DEPRECATED
54void g_mem_chunk_free (GMemChunk *mem_chunk,
55 gpointer mem);
56GLIB_DEPRECATED
57void g_mem_chunk_clean (GMemChunk *mem_chunk);
58GLIB_DEPRECATED
59void g_mem_chunk_reset (GMemChunk *mem_chunk);
60GLIB_DEPRECATED
61void g_mem_chunk_print (GMemChunk *mem_chunk);
62GLIB_DEPRECATED
63void g_mem_chunk_info (void);
64GLIB_DEPRECATED
65void g_blow_chunks (void);
66
67
68GLIB_DEPRECATED
69GAllocator * g_allocator_new (const gchar *name,
70 guint n_preallocs);
71GLIB_DEPRECATED
72void g_allocator_free (GAllocator *allocator);
73GLIB_DEPRECATED
74void g_list_push_allocator (GAllocator *allocator);
75GLIB_DEPRECATED
76void g_list_pop_allocator (void);
77GLIB_DEPRECATED
78void g_slist_push_allocator (GAllocator *allocator);
79GLIB_DEPRECATED
80void g_slist_pop_allocator (void);
81GLIB_DEPRECATED
82void g_node_push_allocator (GAllocator *allocator);
83GLIB_DEPRECATED
84void g_node_pop_allocator (void);
85
86G_END_DECLS
87
88#endif /* __G_ALLOCATOR_H__ */
89