diff options
Diffstat (limited to 'tests/simple')
-rw-r--r-- | tests/simple/simple.cpp | 97 | ||||
-rw-r--r-- | tests/simple/simple.php | 59 |
2 files changed, 128 insertions, 28 deletions
diff --git a/tests/simple/simple.cpp b/tests/simple/simple.cpp index e90fe55..69cf9ce 100644 --- a/tests/simple/simple.cpp +++ b/tests/simple/simple.cpp @@ -15,6 +15,64 @@ */ using namespace std; + +Php::Value bubblesort(Php::Parameters ¶ms) +{ + cout << "start bubblesort" << endl; + + // the array that was passed + Php::Value array(params[0]); + + cout << "go return" << endl; + + return array; + + // size of the array + int size = array.size(); + + cout << "convert to native" << endl; + + int *x = new int[size]; + for (int i=0; i<size; i++) x[i] = array[i]; + + cout << "converted" << endl; + + + // outer loop + for (int i=0; i<size; i++) + { + // left value + int left = x[i]; +// cout << "left: " << left << endl; + + // inner loop + for (int j=i+1; j<size; j++) + { + // right value + int right = x[j]; + + if (left < right) continue; + + // swap values + x[i] = right; + x[j] = left; + left = right; + } + } + + cout << "algorithm end" << endl; + + Php::Value r; + + for (int i=0; i<size; i++) r[i] = x[i]; + + + delete[] x; + + // done + return r; +} + /** * Our own "my_plus" function that will be available in PHP * @param environment @@ -23,22 +81,29 @@ using namespace std; */ static Php::Value my_plus(Php::Environment &env, Php::Parameters ¶ms) { - int p1 = params[0]; - int p2 = params[1]; - return p1 + p2; - - cout << "global g1: " << env["g1"].stringValue() << endl; - cout << "global g2: " << env["g2"].stringValue() << endl; + Php::Value r(0); - Php::Global g(env["g3"]); + for (unsigned int i=0; i<params.size(); i++) r += params[i]; - g = "zo kan het ook"; + return r; - string output = env.call("strtoupper","test in lowercase"); - cout << "output: " << output << endl; - - return p1 + p2; +// int p1 = params[0]; +// int p2 = params[1]; +// return p1 + p2; +// +// cout << "global g1: " << env["g1"].stringValue() << endl; +// cout << "global g2: " << env["g2"].stringValue() << endl; +// +// Php::Global g(env["g3"]); +// +// g = "zo kan het ook"; +// +// string output = env.call("strtoupper","test in lowercase"); +// +// cout << "output: " << output << endl; +// +// return p1 + p2; } /** @@ -88,17 +153,21 @@ extern "C" // export the "get_module" function that will be called by the Zend engine PHPCPP_EXPORT void *get_module() { + cout << "call get_module()" << endl; + // create extension static Php::Extension extension("simple","1.0"); // define the functions extension.add("my_plus", my_plus, { - Php::ByVal("a", Php::longType), - Php::ByVal("b", Php::longType) +// Php::ByVal("a", Php::numericType), +// Php::ByVal("b", Php::numericType) // Php::ByVal("c", "MyClass"), // Php::ByRef("d", Php::stringType) }); + extension.add("bubblesort", bubblesort); + Php::Method<MyCustomClass> x(&MyCustomClass::myMethod); // define classes diff --git a/tests/simple/simple.php b/tests/simple/simple.php index 345c139..5f3bed7 100644 --- a/tests/simple/simple.php +++ b/tests/simple/simple.php @@ -31,26 +31,57 @@ //echo("g2: $g2\n"); //echo("g3: $g3\n"); - -if (class_exists("my_class")) echo("Warempel, de class bestaat\n"); - -class my_extended_class extends my_class +function slowsort($input) { - public function myMethod($val) + $size = count($input); + for ($i=0; $i<$size; $i++) { - echo($this->a."\n"); - echo($this->b."\n"); - echo("hoi\n"); - - parent::myMethod($val); + $left = $input[$i]; + for ($j=$i+1; $j<$size; $j++) + { + $right = $input[$j]; + + if ($left < $right) continue; + + // swap values + $input[$i] = $right; + $input[$j] = $left; + $left = $right; + } } - + return $input; } -$x = new my_extended_class(); -$x->myMethod(123); +//if (class_exists("my_class")) echo("Warempel, de class bestaat\n"); +// +//class my_extended_class extends my_class +//{ +// public function myMethod($val) +// { +// echo($this->a."\n"); +// echo($this->b."\n"); +// echo("hoi\n"); +// +// parent::myMethod($val); +// } +// +//} +// +//$x = new my_extended_class(); +//$x->myMethod(123); + +//echo(my_plus(1,2,3,4)."\n"); + +$array = array(); +for ($i=0; $i<10000; $i++) $array[] = rand(); + +//$array = array(1,2,3); + +//print_r($array); +bubblesort($array); + +print_r($array); -my_plus(1,2,3,4); //echo("my_class::a = ".$x->a."\n"); //echo("my_class::b = ".$x->b."\n"); |