From: kruland <kr...@us...> - 2005-08-24 16:32:49
|
Update of /cvsroot/swig/SWIG/Examples/php4/cpointer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12012/cpointer Added Files: BUILD.sh example.c example.i runme.php4 Log Message: Updated examples to function correctly with new php4 module. Added some supplemental examples for cpointer, overloading and references using proxies. --- NEW FILE: example.i --- /* 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); %include cpointer.i %pointer_functions(int, intp); /* 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); --- NEW FILE: example.c --- /* File : example.c */ void add(double *x, double *y, double *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; } --- NEW FILE: BUILD.sh --- #! /bin/sh -e ${SWIG:=swig} -php4 -make -noproxy -withc example.c example.i make php -d extension_dir=. runme.php4 --- NEW FILE: runme.php4 --- <?php require "example.php"; # First create some objects using the pointer library. print "Testing the pointer library\n"; $a = new_intp(); $b = new_intp(); $c = new_intp(); intp_assign($a,37); intp_assign($b,42); print " a = $a\n"; print " b = $b\n"; print " c = $c\n"; # Call the add() function wuth some pointers add($a,$b,$c); # Now get the result $r = intp_value($c); print " 38 + 42 = $r\n"; # Clean up the pointers delete_intp($a); delete_intp($b); delete_intp($c); # Now try the typemap library # This should be much easier. Now how it is no longer # necessary to manufacture pointers. print "Trying the typemap library\n"; $r = sub(37,42); print " 37 - 42 = $r\n"; # Now try the version with multiple return values # print "Testing multiple return values\n"; # ($q,$r) = divide(42,37); # print " 42/37 = $q remainder $r\n"; ?> |