Mercurial > mm7
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 |