com gtk/php-gtk: - Allow overriding additional object handlers. - Implement a way to add custom post-registration hooks.: generator/generator.php generator/override.php
[email protected] (David Soria Parra) Sat, 18 Feb 2006 19:43:32 +0000
| Newsgroups | php.gtk.cvs |
|---|---|
| Message-ID | <[email protected]> |
Commit: 2ddcf43b706599ac4a84ac032c7c4bf8db30006d Author: Andrei Zmievski <[email protected]> Sat, 18 Feb 2006 19:43:32 +0000 Parents: e5d220af3610769053111516058fe801da6f15fc Branches: master Link: http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=2ddcf43b706599ac4a84ac032c7c4bf8db30006d Log: - Allow overriding additional object handlers. - Implement a way to add custom post-registration hooks. Changed paths: M generator/generator.php M generator/override.php Diff: 2ddcf43b706599ac4a84ac032c7c4bf8db30006d diff --git a/generator/generator.php b/generator/generator.php index c4e431d..646e478 100644 --- a/generator/generator.php +++ b/generator/generator.php @@ -68,7 +68,9 @@ class Generator { 'prop' => Templates::boxed_prop_access), 'interface' => array('method' => Templates::method_body), ); - var $handlers = array('read_property', 'write_property', 'get_properties'); + var $handlers = array('read_property', 'write_property', 'get_properties', + 'read_dimension', 'write_dimension', 'has_dimension', + 'unset_dimension', 'count_elements'); var $cover = array(); function Generator(&$parser, &$overrides, $prefix, $function_class) @@ -483,6 +485,9 @@ class Generator { foreach ($this->parser->interfaces as $interface) { $reg_info = $this->write_class($interface); $register_classes .= aprintf(Templates::register_interface, $reg_info); + if ($this->overrides->have_post_registration($interface->c_name)) { + $register_classes .= $this->overrides->get_post_registration($interface->c_name); + } } if (!$this->parser->interfaces) { $this->log_print(" -- none -- "); @@ -498,6 +503,9 @@ class Generator { } $reg_info = $this->write_class($object); $register_classes .= aprintf(Templates::register_class, $reg_info); + if ($this->overrides->have_post_registration($object->c_name)) { + $register_classes .= $this->overrides->get_post_registration($object->c_name); + } } if (!$this->parser->objects) { $this->log_print(" -- none -- "); @@ -508,6 +516,9 @@ class Generator { foreach ($this->parser->boxed as $object) { $reg_info = $this->write_class($object); $register_classes .= aprintf(Templates::register_boxed, $reg_info); + if ($this->overrides->have_post_registration($object->c_name)) { + $register_classes .= $this->overrides->get_post_registration($object->c_name); + } } if (!$this->parser->boxed) { $this->log_print(" -- none -- "); @@ -516,6 +527,7 @@ class Generator { $this->fp->write(sprintf(Templates::register_classes, $this->lprefix, $register_classes)); + } function write_prop_handlers($object) diff --git a/generator/override.php b/generator/override.php index a71ccba..5e2666c 100644 --- a/generator/override.php +++ b/generator/override.php @@ -34,6 +34,7 @@ class Overrides { var $register_classes = array(); var $headers = ''; var $constants = ''; + var $post_registration = array(); var $lineinfo = array(); var $top_dir = ''; @@ -167,6 +168,12 @@ class Overrides { $this->lineinfo["$class.$handler"] = array($blocklineno + 1, $file_name); break; + case 'post-registration': + $class = $words[0]; + $this->post_registration[$class] = $rest; + $this->lineinfo['post-registration'] = array($blocklineno + 1, $file_name); + break; + case 'include': $file_name = $words[0]; $this->read_file($file_name); @@ -266,6 +273,17 @@ class Overrides { return $this->getprops[$class_name][$prop_name]; } + function have_post_registration($class) + { + return isset($this->post_registration[$class]); + } + + function get_post_registration($class) + { + return $this->post_registration[$class]; + } + + function get_headers() { return $this->headers;