diff options
Diffstat (limited to 'Examples/php/reference/runme-proxy.php4')
-rw-r--r-- | Examples/php/reference/runme-proxy.php4 | 79 |
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); + +?> |