summaryrefslogtreecommitdiff
path: root/Examples/php/reference/runme-proxy.php4
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/php/reference/runme-proxy.php4')
-rw-r--r--Examples/php/reference/runme-proxy.php479
1 files changed, 79 insertions, 0 deletions
diff --git a/Examples/php/reference/runme-proxy.php4 b/Examples/php/reference/runme-proxy.php4
new file mode 100644
index 0000000..9d216f7
--- /dev/null
+++ b/Examples/php/reference/runme-proxy.php4
@@ -0,0 +1,79 @@
+<?php
+
+# This file illustrates the manipulation of C++ references in Php.
+# This uses the low-level interface. Proxy classes work differently.
+
+require "example.php";
+
+# ----- Object creation -----
+
+print "Creating some objects:\n";
+$a = new Vector(3,4,5);
+$b = new Vector(10,11,12);
+
+print " Created a: $a " . $a->print() . "\n";
+print " Created b: $b " . $b->print() . "\n";
+
+# ----- Call an overloaded operator -----
+
+# This calls the wrapper we placed around
+#
+# operator+(const Vector &a, const Vector &)
+#
+# It returns a new allocated object.
+
+print "Adding a+b\n";
+$c = addv($a,$b);
+print " a+b =". $c->print()."\n";
+
+# Note: Unless we free the result, a memory leak will occur
+$c = 0;
+
+# ----- Create a vector array -----
+
+# Note: Using the high-level interface here
+print "Creating an array of vectors\n";
+$va = new VectorArray(10);
+
+print " va: $va size=".$va->size()."\n";
+
+# ----- Set some values in the array -----
+
+# These operators copy the value of $a and $b to the vector array
+$va->set(0,$a);
+$va->set(1,$b);
+
+$va->get(0);
+# This will work, but it will cause a memory leak!
+
+$va->set(2,addv($a,$b));
+
+# The non-leaky way to do it
+
+$c = addv($a,$b);
+$va->set(3,$c);
+$c = NULL;
+
+# Get some values from the array
+
+print "Getting some array values\n";
+for ($i = 0; $i < 5; $i++) {
+print "do $i\n";
+ $v = $va->get($i);
+ print " va($i) = ". $v->print(). "\n";
+}
+
+# Watch under resource meter to check on this
+#print "Making sure we don't leak memory.\n";
+#for ($i = 0; $i < 1000000; $i++) {
+# $c = VectorArray_get($va,$i % 10);
+#}
+
+# ----- Clean up -----
+print "Cleaning up\n";
+# wants fixing FIXME
+#delete_VectorArray($va);
+#delete_Vector($a);
+#delete_Vector($b);
+
+?>