summaryrefslogtreecommitdiff
path: root/Examples/php/pointer
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2009-08-18 20:56:02 +0000
committerLorry <lorry@roadtrain.codethink.co.uk>2012-09-25 16:59:08 +0000
commit9f8a09ed743cedd9547bf0661d518647966ab114 (patch)
tree9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/php/pointer
downloadswig-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/pointer')
-rw-r--r--Examples/php/pointer/Makefile24
-rw-r--r--Examples/php/pointer/example.c16
-rw-r--r--Examples/php/pointer/example.i24
-rw-r--r--Examples/php/pointer/runme.php35
4 files changed, 99 insertions, 0 deletions
diff --git a/Examples/php/pointer/Makefile b/Examples/php/pointer/Makefile
new file mode 100644
index 0000000..0862ce5
--- /dev/null
+++ b/Examples/php/pointer/Makefile
@@ -0,0 +1,24 @@
+TOP = ../..
+SWIG = $(TOP)/../preinst-swig
+SRCS = example.c
+TARGET = example
+INTERFACE = example.i
+LIBS =
+SWIGOPT =
+
+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/pointer/example.c b/Examples/php/pointer/example.c
new file mode 100644
index 0000000..3326dec
--- /dev/null
+++ b/Examples/php/pointer/example.c
@@ -0,0 +1,16 @@
+/* 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;
+}
diff --git a/Examples/php/pointer/example.i b/Examples/php/pointer/example.i
new file mode 100644
index 0000000..c14b941
--- /dev/null
+++ b/Examples/php/pointer/example.i
@@ -0,0 +1,24 @@
+/* File : example.i */
+%module example
+
+/* This example illustrates a couple of different techniques
+ for manipulating C pointers */
+
+%include phppointers.i
+/* First we'll use the pointer library */
+extern void add(double *REF, double *REF, double *REF);
+
+/* 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);
+
+
+
+
+
diff --git a/Examples/php/pointer/runme.php b/Examples/php/pointer/runme.php
new file mode 100644
index 0000000..5e86de6
--- /dev/null
+++ b/Examples/php/pointer/runme.php
@@ -0,0 +1,35 @@
+<?php
+
+ require "example.php";
+
+ # First create some objects using the pointer library.
+
+ print "Testing the pointer library\n";
+
+ $a = 37.145;
+ $b = 42.555;
+ $c = ""; // $c must be defined and not null.
+
+ print " a = $a\n";
+ print " b = $b\n";
+ print " c = $c\n";
+
+ # Call the add() function wuth some pointers
+ add(&$a,&$b,&$c);
+
+ print " $a + $b = $c\n";
+
+ # 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";
+
+?>