com gtk/php-gtk: Generate extra class methods added in overrides.: generator/generator.php
[email protected] (David Soria Parra) Sat, 05 Nov 2005 05:53:34 +0000
| Newsgroups | php.gtk.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: 1d4fb3d121c2508fa2efadeed25b0d7bd6b16957 Author: Andrei Zmievski <[email protected]> Sat, 5 Nov 2005 05:53:34 +0000 Parents: 1005a62cc91cae1d61e4e14b95821f477c475009 Branches: master Link: http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=1d4fb3d121c2508fa2efadeed25b0d7bd6b16957 Log: Generate extra class methods added in overrides. Changed paths: M generator/generator.php Diff: 1d4fb3d121c2508fa2efadeed25b0d7bd6b16957 diff --git a/generator/generator.php b/generator/generator.php index 101003b..7c4ec7d 100644 --- a/generator/generator.php +++ b/generator/generator.php @@ -326,6 +326,27 @@ class Generator { } } + if ($this->overrides->have_extra_methods($object->c_name)) { + foreach ($this->overrides->get_extra_methods($object->c_name) as $method_name => $method_body) { + list($arginfo, $reflection_func) = $this->genReflectionArgInfo(null, $object, $method_name); + + $method_body = preg_replace('!^.*(PHP_METHOD).*$!m', "static $1($object->c_name, $method_name)", $method_body); + $this->write_override($method_body, $object->c_name, $method_name); + $method_entries[$method_name] = array($object->c_name, $method_name, + $reflection_func, 'ZEND_ACC_PUBLIC'); + $this->divert("gen", "%s %-11s %s::%s\n", "%%", "method", $object->c_name, $method_name); + $num_written++; + $this->cover["methods"]->written(); + + if ($arginfo === null) { + $object->methods[$method_name] = 1; + } else { + $methodarginfos .= $arginfo; + $object->methods[$method_name] = 2; + } + } + } + $this->log_print("(%d written, %d skipped)\n", $num_written, $num_skipped); return array($method_entries, $methodarginfos);