/* File : example.i */ %module example /* This example illustrates a couple of different techniques for manipulating C pointers */ /* First we'll use the pointer library */ extern void add(int *x, int *y, int *result); #ifndef SWIGGUILE #ifndef SWIGJAVA #ifndef SWIGMZSCHEME %include pointer.i #endif #endif #endif /* Next we'll use some typemaps */ %include typemaps.i extern void sub(int *INPUT, int *INPUT, int *OUTPUT); /* Next we'll use typemaps and the %apply directive */ %apply int *OUTPUT { int *r }; extern int divide(int n, int d, int *r); /* Try using pointers that are used as input and output */ %apply int *INOUT {int *z}; extern void negate(int *z); %{ void add(int *x, int *y, int *result) { *result = *x + *y; } void sub(int *x, int *y, int *result) { *result = *x - *y; } int divide(int n, int d, int *r) { int q; q = n/d; *r = n - q*d; return q; } void negate(int *z) { *z = -(*z); } %}