Updated examples to function correctly with new php4 module. Added

some supplemental examples for cpointer, overloading and references using
proxies.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@7391 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Kevin Ruland 2005-08-24 16:32:41 +00:00
commit 501bd53c4b
44 changed files with 506 additions and 131 deletions

View file

@ -1,4 +1,5 @@
#! /bin/sh -e
${SWIG:=swig} -php4 -phpfull -noproxy -withc example.c example.i
phpize && ./configure && make clean && make
${SWIG:=swig} -php4 -make -noproxy -withc example.c example.i
make
php -d extension_dir=. runme.php4

View file

@ -6,10 +6,8 @@ double dot_product(Vector a, Vector b) {
return (a.x*b.x + a.y*b.y + a.z*b.z);
}
Vector vector_add(Vector a, Vector b) {
Vector r;
r.x = a.x + b.x;
r.y = a.y + b.y;
r.z = a.z + b.z;
return r;
void vector_add(Vector a, Vector b, Vector* result) {
result->x = a.x + b.x;
result->y = a.y + b.y;
result->z = a.z + b.z;
}

View file

@ -3,3 +3,6 @@
typedef struct {
double x, y, z;
} Vector;
double dot_product(Vector a, Vector b);
void vector_add(Vector a, Vector b, Vector* result);

View file

@ -5,27 +5,11 @@
#include "example.h"
%}
/* Some functions that manipulate Vectors by value */
%inline %{
extern double dot_product(Vector a, Vector b);
extern Vector vector_add(Vector a, Vector b);
%}
/* Include this because the vector_add() function will leak memory */
void free(void *);
%include "example.h"
/* Some helper functions for our interface */
%inline %{
Vector *new_Vector(double x, double y, double z) {
/* We use the Zend memory manager */
Vector *v = (Vector *) emalloc(sizeof(Vector));
v->x = x;
v->y = y;
v->z = z;
return v;
}
void vector_print(Vector *v) {
printf("Vector %x = (%g, %g, %g)\n", v, v->x, v->y, v->z);
}

View file

@ -3,8 +3,15 @@
require "example.php";
$v = new_vector(1.0,2.0,3.0);
$w = new_vector(10.0,11.0,12.0);
$v = new_vector();
vector_x_set($v,1.0);
vector_y_set($v,2.0);
vector_z_set($v,3.0);
$w = new_vector();
vector_x_set($w,10.0);
vector_y_set($w,11.0);
vector_z_set($w,12.0);
echo "I just created the following vector\n";
vector_print($v);
@ -18,7 +25,8 @@
echo "\nNow I'm going to add the vectors together\n";
$r = vector_add($v, $w);
$r = new_vector();
vector_add($v, $w, $r);
vector_print($r);