[PHP] Add support for specifying any PHP interfaces a wrapped class
implements, e.g.: %typemap("phpinterfaces") MyIterator "Iterator";
This commit is contained in:
parent
e12322df86
commit
1a99212c2c
7 changed files with 79 additions and 0 deletions
|
|
@ -10,6 +10,7 @@ top_srcdir = @top_srcdir@
|
|||
top_builddir = @top_builddir@
|
||||
|
||||
CPP_TEST_CASES += \
|
||||
php_iterator \
|
||||
php_namewarn_rename \
|
||||
|
||||
include $(srcdir)/../common.mk
|
||||
|
|
|
|||
24
Examples/test-suite/php/php_iterator_runme.php
Normal file
24
Examples/test-suite/php/php_iterator_runme.php
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
|
||||
require "tests.php";
|
||||
require "php_iterator.php";
|
||||
|
||||
check::functions(array(myiterator_rewind,myiterator_key,myiterator_current,myiterator_next,myiterator_valid));
|
||||
check::classes(array(MyIterator));
|
||||
// No new global variables.
|
||||
check::globals(array());
|
||||
|
||||
$s = '';
|
||||
foreach (new MyIterator(1, 6) as $i) {
|
||||
$s .= $i;
|
||||
}
|
||||
check::equal($s, '12345', 'Simple iteration failed');
|
||||
|
||||
$s = '';
|
||||
foreach (new MyIterator(2, 5) as $k => $v) {
|
||||
$s .= "($k=>$v)";
|
||||
}
|
||||
check::equal($s, '(0=>2)(1=>3)(2=>4)', 'Simple iteration failed');
|
||||
|
||||
check::done();
|
||||
?>
|
||||
20
Examples/test-suite/php_iterator.i
Normal file
20
Examples/test-suite/php_iterator.i
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/* php_iterator.i - PHP-specific testcase for wrapping to a PHP Iterator */
|
||||
%module php_iterator
|
||||
|
||||
%typemap("phpinterfaces") MyIterator "Iterator";
|
||||
|
||||
%inline %{
|
||||
|
||||
class MyIterator {
|
||||
int i, from, to;
|
||||
public:
|
||||
MyIterator(int from_, int to_)
|
||||
: i(from_), from(from_), to(to_) { }
|
||||
void rewind() { i = from; }
|
||||
bool valid() const { return i != to; }
|
||||
int key() const { return i - from; }
|
||||
int current() const { return i; }
|
||||
void next() { ++i; }
|
||||
};
|
||||
|
||||
%}
|
||||
Loading…
Add table
Add a link
Reference in a new issue