64
%define INPUT_TYPEMAP(type, converter)
65
%typemap(in) type *INPUT($*1_ltype temp), type &INPUT($*1_ltype temp)
67
temp = converter($input);
68
if (PyErr_Occurred()) SWIG_fail;
71
%typemap(typecheck) type *INPUT = type;
72
%typemap(typecheck) type &INPUT = type;
75
INPUT_TYPEMAP(float, PyFloat_AsDouble);
76
INPUT_TYPEMAP(double, PyFloat_AsDouble);
77
INPUT_TYPEMAP(int, PyInt_AsLong);
78
INPUT_TYPEMAP(short, PyInt_AsLong);
79
INPUT_TYPEMAP(long, PyInt_AsLong);
80
INPUT_TYPEMAP(long long, PyLong_AsLongLong);
81
INPUT_TYPEMAP(unsigned int, PyInt_AsLong);
82
INPUT_TYPEMAP(unsigned short, PyInt_AsLong);
83
INPUT_TYPEMAP(unsigned long, PyInt_AsLong);
84
INPUT_TYPEMAP(unsigned long long, PyLong_AsUnsignedLongLong);
85
INPUT_TYPEMAP(unsigned char, PyInt_AsLong);
86
INPUT_TYPEMAP(signed char, PyInt_AsLong);
90
%typemap(in) bool *INPUT(bool temp), bool &INPUT(bool temp)
92
temp = PyInt_AsLong($input) ? true : false;
93
if (PyErr_Occurred()) SWIG_fail;
96
%typemap(typecheck) bool *INPUT = bool;
97
%typemap(typecheck) bool &INPUT = bool;
99
64
// OUTPUT typemaps. These typemaps are used for parameters that
100
65
// are output only. The output value is appended to the result as
101
66
// a list element.
144
// These typemaps contributed by Robin Dunn
145
//----------------------------------------------------------------------
147
// T_OUTPUT typemap (and helper function) to return multiple argouts as
148
// a tuple instead of a list.
150
// Author: Robin Dunn
151
//----------------------------------------------------------------------
153
%include "fragments.i"
155
%define OUTPUT_TYPEMAP(type, converter, convtype)
156
%typemap(in,numinputs=0) type *OUTPUT($*1_ltype temp), type &OUTPUT($*1_ltype temp) "$1 = &temp;";
157
%typemap(argout,fragment="t_output_helper") type *OUTPUT, type &OUTPUT {
158
PyObject *o = converter(convtype (*$1));
159
$result = t_output_helper($result,o);
163
OUTPUT_TYPEMAP(int, PyInt_FromLong, (long));
164
OUTPUT_TYPEMAP(short, PyInt_FromLong, (long));
165
OUTPUT_TYPEMAP(long, PyInt_FromLong, (long));
166
OUTPUT_TYPEMAP(long long, PyLong_FromLongLong, ($*1_ltype));
167
OUTPUT_TYPEMAP(unsigned int, PyInt_FromLong, (long));
168
OUTPUT_TYPEMAP(unsigned short, PyInt_FromLong, (long));
169
OUTPUT_TYPEMAP(unsigned long, PyInt_FromLong, (long));
170
OUTPUT_TYPEMAP(unsigned long long, PyLong_FromUnsignedLongLong, ($*1_ltype));
171
OUTPUT_TYPEMAP(unsigned char, PyInt_FromLong, (long));
172
OUTPUT_TYPEMAP(signed char, PyInt_FromLong, (long));
173
OUTPUT_TYPEMAP(bool, PyInt_FromLong, (long));
174
OUTPUT_TYPEMAP(float, PyFloat_FromDouble, (double));
175
OUTPUT_TYPEMAP(double, PyFloat_FromDouble, (double));
177
#undef OUTPUT_TYPEMAP
180
110
// Mappings for an argument that is both an input and output
232
%typemap(in) int *INOUT = int *INPUT;
233
%typemap(in) short *INOUT = short *INPUT;
234
%typemap(in) long *INOUT = long *INPUT;
235
%typemap(in) long long *INOUT = long long *INPUT;
236
%typemap(in) unsigned *INOUT = unsigned *INPUT;
237
%typemap(in) unsigned short *INOUT = unsigned short *INPUT;
238
%typemap(in) unsigned long *INOUT = unsigned long *INPUT;
239
%typemap(in) unsigned long long *INOUT = unsigned long long *INPUT;
240
%typemap(in) unsigned char *INOUT = unsigned char *INPUT;
241
%typemap(in) bool *INOUT = bool *INPUT;
242
%typemap(in) float *INOUT = float *INPUT;
243
%typemap(in) double *INOUT = double *INPUT;
245
%typemap(in) int &INOUT = int &INPUT;
246
%typemap(in) short &INOUT = short &INPUT;
247
%typemap(in) long &INOUT = long &INPUT;
248
%typemap(in) long long &INOUT = long long &INPUT;
249
%typemap(in) unsigned &INOUT = unsigned &INPUT;
250
%typemap(in) unsigned short &INOUT = unsigned short &INPUT;
251
%typemap(in) unsigned long &INOUT = unsigned long &INPUT;
252
%typemap(in) unsigned long long &INOUT = unsigned long long &INPUT;
253
%typemap(in) unsigned char &INOUT = unsigned char &INPUT;
254
%typemap(in) bool &INOUT = bool &INPUT;
255
%typemap(in) float &INOUT = float &INPUT;
256
%typemap(in) double &INOUT = double &INPUT;
258
%typemap(argout) int *INOUT = int *OUTPUT;
259
%typemap(argout) short *INOUT = short *OUTPUT;
260
%typemap(argout) long *INOUT = long *OUTPUT;
261
%typemap(argout) long long *INOUT = long long *OUTPUT;
262
%typemap(argout) unsigned *INOUT = unsigned *OUTPUT;
263
%typemap(argout) unsigned short *INOUT = unsigned short *OUTPUT;
264
%typemap(argout) unsigned long *INOUT = unsigned long *OUTPUT;
265
%typemap(argout) unsigned long long *INOUT = unsigned long long *OUTPUT;
266
%typemap(argout) unsigned char *INOUT = unsigned char *OUTPUT;
267
%typemap(argout) bool *INOUT = bool *OUTPUT;
268
%typemap(argout) float *INOUT = float *OUTPUT;
269
%typemap(argout) double *INOUT = double *OUTPUT;
271
%typemap(argout) int &INOUT = int &OUTPUT;
272
%typemap(argout) short &INOUT = short &OUTPUT;
273
%typemap(argout) long &INOUT = long &OUTPUT;
274
%typemap(argout) long long &INOUT = long long &OUTPUT;
275
%typemap(argout) unsigned &INOUT = unsigned &OUTPUT;
276
%typemap(argout) unsigned short &INOUT = unsigned short &OUTPUT;
277
%typemap(argout) unsigned long &INOUT = unsigned long &OUTPUT;
278
%typemap(argout) unsigned long long &INOUT = unsigned long long &OUTPUT;
279
%typemap(argout) unsigned char &INOUT = unsigned char &OUTPUT;
280
%typemap(argout) bool &INOUT = bool &OUTPUT;
281
%typemap(argout) float &INOUT = float &OUTPUT;
282
%typemap(argout) double &INOUT = double &OUTPUT;
284
/* Overloading information */
286
%typemap(typecheck) double *INOUT = double;
287
%typemap(typecheck) bool *INOUT = bool;
288
%typemap(typecheck) signed char *INOUT = signed char;
289
%typemap(typecheck) unsigned char *INOUT = unsigned char;
290
%typemap(typecheck) unsigned long *INOUT = unsigned long;
291
%typemap(typecheck) unsigned long long *INOUT = unsigned long long;
292
%typemap(typecheck) unsigned short *INOUT = unsigned short;
293
%typemap(typecheck) unsigned int *INOUT = unsigned int;
294
%typemap(typecheck) long *INOUT = long;
295
%typemap(typecheck) long long *INOUT = long long;
296
%typemap(typecheck) short *INOUT = short;
297
%typemap(typecheck) int *INOUT = int;
298
%typemap(typecheck) float *INOUT = float;
300
%typemap(typecheck) double &INOUT = double;
301
%typemap(typecheck) bool &INOUT = bool;
302
%typemap(typecheck) signed char &INOUT = signed char;
303
%typemap(typecheck) unsigned char &INOUT = unsigned char;
304
%typemap(typecheck) unsigned long &INOUT = unsigned long;
305
%typemap(typecheck) unsigned long long &INOUT = unsigned long long;
306
%typemap(typecheck) unsigned short &INOUT = unsigned short;
307
%typemap(typecheck) unsigned int &INOUT = unsigned int;
308
%typemap(typecheck) long &INOUT = long;
309
%typemap(typecheck) long long &INOUT = long long;
310
%typemap(typecheck) short &INOUT = short;
311
%typemap(typecheck) int &INOUT = int;
312
%typemap(typecheck) float &INOUT = float;
165
#ifdef SWIG_INOUT_NODEF
167
Apply the INPUT/OUTPUT typemaps to all the C types (int, double) if
170
%define %typemap_inout(Code,AsMeth, CheckMeth, FromMeth, AsFrag, CheckFrag, FromFrag, ...)
171
_PYVAL_INPUT_TYPEMAP(SWIG_arg(Code), SWIG_arg(AsMeth), SWIG_arg(CheckMeth),
172
SWIG_arg(AsFrag), SWIG_arg(CheckFrag), SWIG_arg(__VA_ARGS__));
173
_PYVAL_OUTPUT_TYPEMAP(SWIG_arg(FromMeth), SWIG_arg(FromFrag), SWIG_arg(__VA_ARGS__));
174
_PYVAL_INOUT_TYPEMAP(SWIG_arg(__VA_ARGS__));
177
%define %typemap_inoutn(Code,...)
178
%typemap_inout(SWIG_arg(Code),
179
SWIG_arg(SWIG_As(__VA_ARGS__)),
180
SWIG_arg(SWIG_Check(__VA_ARGS__)),
181
SWIG_arg(SWIG_From(__VA_ARGS__)),
182
SWIG_arg(SWIG_As_frag(__VA_ARGS__)),
183
SWIG_arg(SWIG_Check_frag(__VA_ARGS__)),
184
SWIG_arg(SWIG_From_frag(__VA_ARGS__)),
185
SWIG_arg(__VA_ARGS__));
188
%apply_checkctypes(%typemap_inoutn)