Added memory pools to make clean up of temporary buffers simpler.
[imager.git] / imio.h
1 #ifndef _IO_H_
2 #define _IO_H_
3 #include <stdio.h>
4 #include <sys/stat.h>
5 #ifndef _MSC_VER
6 #include <unistd.h>
7 #include <sys/mman.h>
8 #endif
9
10 #include "log.h"
11
12
13 /* #define MALLOC_DEBUG */
14
15 #ifdef IMAGER_DEBUG_MALLOC
16
17 #define mymalloc(x) (mymalloc_file_line((x), __FILE__, __LINE__))
18 #define myrealloc(x,y) (myrealloc_file_line((x),(y), __FILE__, __LINE__))
19 #define myfree(x) (myfree_file_line((x), __FILE__, __LINE__))
20
21 void  malloc_state       (void);
22 void* mymalloc_file_line (size_t size, char* file, int line);
23 void  myfree_file_line   (void *p, char*file, int line);
24 void* myrealloc_file_line(void *p, size_t newsize, char* file,int line);
25 void* mymalloc_comm      (int size, char *comm);
26 void  bndcheck_all       (void);
27
28 #else
29
30 #define malloc_comm(a,b) (mymalloc(a))
31 void  malloc_state(void);
32 void* mymalloc(int size);
33 void  myfree(void *p);
34 void* myrealloc(void *p, size_t newsize);
35
36 #endif /* IMAGER_MALLOC_DEBUG */
37
38
39
40 typedef struct i_mempool {
41   void **p;
42   unsigned int alloc;
43   unsigned int used;
44 } i_mempool;
45
46 void  i_mempool_init(i_mempool *mp);
47 void  i_mempool_extend(i_mempool *mp);
48 void *i_mempool_alloc(i_mempool *mp, size_t size);
49 void  i_mempool_destroy(i_mempool *mp);
50
51
52
53 #ifdef _MSC_VER
54 #undef min
55 #undef max
56 #endif
57
58 /* XXX Shouldn't these go away? */
59
60 int min(int a,int b);
61 int max(int x,int y);
62
63 #endif