diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2009-08-18 20:56:02 +0000 |
---|---|---|
committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-09-25 16:59:08 +0000 |
commit | 9f8a09ed743cedd9547bf0661d518647966ab114 (patch) | |
tree | 9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/php/value | |
download | swig-tarball-master.tar.gz |
Imported from /srv/lorry/lorry-area/swig-tarball/swig-1.3.40.tar.gz.HEADswig-1.3.40master
Diffstat (limited to 'Examples/php/value')
-rw-r--r-- | Examples/php/value/Makefile | 24 | ||||
-rw-r--r-- | Examples/php/value/example.c | 13 | ||||
-rw-r--r-- | Examples/php/value/example.h | 8 | ||||
-rw-r--r-- | Examples/php/value/example.i | 17 | ||||
-rw-r--r-- | Examples/php/value/runme.php | 43 |
5 files changed, 105 insertions, 0 deletions
diff --git a/Examples/php/value/Makefile b/Examples/php/value/Makefile new file mode 100644 index 0000000..9e69d00 --- /dev/null +++ b/Examples/php/value/Makefile @@ -0,0 +1,24 @@ +TOP = ../.. +SWIG = $(TOP)/../preinst-swig +SRCS = example.c +TARGET = example +INTERFACE = example.i +LIBS = +SWIGOPT = -noproxy + +all:: + $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \ + SWIGOPT='$(SWIGOPT)' TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' \ + php + +static:: + $(MAKE) -f $(TOP)/Makefile SRCS='$(SRCS)' SWIG='$(SWIG)' \ + SWIGOPT='$(SWIGOPT)' TARGET='myphp' INTERFACE='$(INTERFACE)' \ + php_static + +clean:: + $(MAKE) -f $(TOP)/Makefile php_clean + rm -f $(TARGET).php + +check: all + $(MAKE) -f $(TOP)/Makefile php_run diff --git a/Examples/php/value/example.c b/Examples/php/value/example.c new file mode 100644 index 0000000..3c402a2 --- /dev/null +++ b/Examples/php/value/example.c @@ -0,0 +1,13 @@ +/* File : example.c */ + +#include "example.h" + +double dot_product(Vector a, Vector b) { + return (a.x*b.x + a.y*b.y + a.z*b.z); +} + +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; +} diff --git a/Examples/php/value/example.h b/Examples/php/value/example.h new file mode 100644 index 0000000..f55752a --- /dev/null +++ b/Examples/php/value/example.h @@ -0,0 +1,8 @@ +/* File : example.h */ + +typedef struct { + double x, y, z; +} Vector; + +double dot_product(Vector a, Vector b); +void vector_add(Vector a, Vector b, Vector* result); diff --git a/Examples/php/value/example.i b/Examples/php/value/example.i new file mode 100644 index 0000000..386fa3b --- /dev/null +++ b/Examples/php/value/example.i @@ -0,0 +1,17 @@ +// Tests SWIG's handling of pass-by-value for complex datatypes +%module example + +%{ +#include "example.h" +%} + +%include "example.h" + +/* Some helper functions for our interface */ +%inline %{ + +void vector_print(Vector *v) { + printf("Vector %p = (%g, %g, %g)\n", v, v->x, v->y, v->z); +} +%} + diff --git a/Examples/php/value/runme.php b/Examples/php/value/runme.php new file mode 100644 index 0000000..4911537 --- /dev/null +++ b/Examples/php/value/runme.php @@ -0,0 +1,43 @@ +<?php + + require "example.php"; + + + $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); + vector_print($w); + + echo "\nNow I'm going to compute the dot product\n"; + + $d = dot_product($v, $w); + + echo "dot product = $d (should be 68)\n"; + + echo "\nNow I'm going to add the vectors together\n"; + + $r = new_vector(); + vector_add($v, $w, $r); + + vector_print($r); + + echo "The value should be (11,13,15)\n"; + + echo "\nNow I'm going to clean up the return result\n"; + +# free($r); + + echo "Good\n"; + +?> + + |