~ubuntu-branches/ubuntu/edgy/swig1.3/edgy

« back to all changes in this revision

Viewing changes to Lib/python/typemaps.i

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2005-01-10 09:48:52 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20050110094852-axi555axhj1brbwq
Tags: 1.3.22-5ubuntu2
Build using python2.4 and pike7.6. Closes: #4146.

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
 
62
62
*/
63
63
 
64
 
%define INPUT_TYPEMAP(type, converter)
65
 
%typemap(in) type *INPUT($*1_ltype temp), type &INPUT($*1_ltype temp)
66
 
{
67
 
   temp = converter($input);
68
 
   if (PyErr_Occurred()) SWIG_fail;
69
 
   $1 = &temp;
70
 
}
71
 
%typemap(typecheck) type *INPUT = type;
72
 
%typemap(typecheck) type &INPUT = type;
73
 
%enddef
74
 
 
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);
87
 
 
88
 
#undef INPUT_TYPEMAP
89
 
 
90
 
%typemap(in) bool *INPUT(bool temp), bool &INPUT(bool temp)
91
 
{
92
 
   temp = PyInt_AsLong($input) ? true : false;
93
 
   if (PyErr_Occurred()) SWIG_fail;
94
 
   $1 = &temp;
95
 
}
96
 
%typemap(typecheck) bool *INPUT = bool;
97
 
%typemap(typecheck) bool &INPUT = bool;
98
 
 
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.
141
106
 
142
107
*/
143
108
 
144
 
// These typemaps contributed by Robin Dunn
145
 
//----------------------------------------------------------------------
146
 
//
147
 
// T_OUTPUT typemap (and helper function) to return multiple argouts as
148
 
// a tuple instead of a list.
149
 
//
150
 
// Author: Robin Dunn
151
 
//----------------------------------------------------------------------
152
 
 
153
 
%include "fragments.i"
154
 
 
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);
160
 
}
161
 
%enddef
162
 
 
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));
176
 
 
177
 
#undef OUTPUT_TYPEMAP
178
 
 
179
109
// INOUT
180
110
// Mappings for an argument that is both an input and output
181
111
// parameter
229
159
 
230
160
*/
231
161
 
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;
244
 
 
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;
257
 
 
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;
270
 
 
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;
283
 
 
284
 
/* Overloading information */
285
 
 
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;
299
 
 
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;
313
 
 
314
 
 
315
 
 
316
 
 
317
 
 
 
162
 
 
163
%include pyinout.swg
 
164
 
 
165
#ifdef SWIG_INOUT_NODEF
 
166
/*
 
167
  Apply the INPUT/OUTPUT typemaps to all the C types (int, double) if
 
168
  not already defined.
 
169
*/
 
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__));
 
175
%enddef
 
176
 
 
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__));
 
186
%enddef
 
187
 
 
188
%apply_checkctypes(%typemap_inoutn)
 
189
 
 
190
#endif