1899
|
1 /* -----------------------------------------------------------------------------
|
|
2 * cmalloc.i
|
|
3 *
|
|
4 * SWIG library file containing macros that can be used to create objects using
|
|
5 * the C malloc function.
|
|
6 * ----------------------------------------------------------------------------- */
|
|
7
|
|
8 %{
|
|
9 #include <stdlib.h>
|
|
10 %}
|
|
11
|
|
12 /* %malloc(TYPE [, NAME = TYPE])
|
|
13 %calloc(TYPE [, NAME = TYPE])
|
|
14 %realloc(TYPE [, NAME = TYPE])
|
|
15 %free(TYPE [, NAME = TYPE])
|
|
16 %allocators(TYPE [,NAME = TYPE])
|
|
17
|
|
18 Creates functions for allocating/reallocating memory.
|
|
19
|
|
20 TYPE *malloc_NAME(int nbytes = sizeof(TYPE);
|
|
21 TYPE *calloc_NAME(int nobj=1, int size=sizeof(TYPE));
|
|
22 TYPE *realloc_NAME(TYPE *ptr, int nbytes);
|
|
23 void free_NAME(TYPE *ptr);
|
|
24
|
|
25 */
|
|
26
|
|
27 %define %malloc(TYPE,NAME...)
|
|
28 #if #NAME != ""
|
|
29 %rename(malloc_##NAME) ::malloc(int nbytes);
|
|
30 #else
|
|
31 %rename(malloc_##TYPE) ::malloc(int nbytes);
|
|
32 #endif
|
|
33
|
|
34 #if #TYPE != "void"
|
|
35 %typemap(default) int nbytes "$1 = (int) sizeof(TYPE);"
|
|
36 #endif
|
|
37 TYPE *malloc(int nbytes);
|
|
38 %typemap(default) int nbytes;
|
|
39 %enddef
|
|
40
|
|
41 %define %calloc(TYPE,NAME...)
|
|
42 #if #NAME != ""
|
|
43 %rename(calloc_##NAME) ::calloc(int nobj, int sz);
|
|
44 #else
|
|
45 %rename(calloc_##TYPE) ::calloc(int nobj, int sz);
|
|
46 #endif
|
|
47 #if #TYPE != "void"
|
|
48 %typemap(default) int sz "$1 = (int) sizeof(TYPE);"
|
|
49 #else
|
|
50 %typemap(default) int sz "$1 = 1;"
|
|
51 #endif
|
|
52 %typemap(default) int nobj "$1 = 1;"
|
|
53 TYPE *calloc(int nobj, int sz);
|
|
54 %typemap(default) int sz;
|
|
55 %typemap(default) int nobj;
|
|
56 %enddef
|
|
57
|
|
58 %define %realloc(TYPE,NAME...)
|
|
59 %insert("header") {
|
|
60 #if #NAME != ""
|
|
61 TYPE *realloc_##NAME(TYPE *ptr, int nitems)
|
|
62 #else
|
|
63 TYPE *realloc_##TYPE(TYPE *ptr, int nitems)
|
|
64 #endif
|
|
65 {
|
|
66 #if #TYPE != "void"
|
|
67 return (TYPE *) realloc(ptr, nitems*sizeof(TYPE));
|
|
68 #else
|
|
69 return (TYPE *) realloc(ptr, nitems);
|
|
70 #endif
|
|
71 }
|
|
72 }
|
|
73 #if #NAME != ""
|
|
74 TYPE *realloc_##NAME(TYPE *ptr, int nitems);
|
|
75 #else
|
|
76 TYPE *realloc_##TYPE(TYPE *ptr, int nitems);
|
|
77 #endif
|
|
78 %enddef
|
|
79
|
|
80 %define %free(TYPE,NAME...)
|
|
81 #if #NAME != ""
|
|
82 %rename(free_##NAME) ::free(TYPE *ptr);
|
|
83 #else
|
|
84 %rename(free_##TYPE) ::free(TYPE *ptr);
|
|
85 #endif
|
|
86 void free(TYPE *ptr);
|
|
87 %enddef
|
|
88
|
|
89 %define %sizeof(TYPE,NAME...)
|
|
90 #if #NAME != ""
|
|
91 %constant int sizeof_##NAME = sizeof(TYPE);
|
|
92 #else
|
|
93 %constant int sizeof_##TYPE = sizeof(TYPE);
|
|
94 #endif
|
|
95 %enddef
|
|
96
|
|
97 %define %allocators(TYPE,NAME...)
|
|
98 %malloc(TYPE,NAME)
|
|
99 %calloc(TYPE,NAME)
|
|
100 %realloc(TYPE,NAME)
|
|
101 %free(TYPE,NAME)
|
|
102 #if #TYPE != "void"
|
|
103 %sizeof(TYPE,NAME)
|
|
104 #endif
|
|
105 %enddef
|
|
106
|
|
107
|
|
108
|
|
109
|
|
110
|