comparison lib/swig/swigwin-2.0.11/Lib/cmalloc.i @ 1899:b3009adc0e2f

Adding swig, gitignore, hgignore
author Nomad
date Mon, 21 Oct 2013 10:42:27 +0200
parents
children
comparison
equal deleted inserted replaced
1867:eb580660bbbb 1899:b3009adc0e2f
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