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:
parent
bc9db8b383
commit
501bd53c4b
44 changed files with 506 additions and 131 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue