Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > 3c88344d1f3d15057277d028d0022277 > files > 876

swig-1.3.11-4mdk.i586.rpm

/* 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);
}

%}