cvs: php-gtk /generator generator.php override.php

From: Date: Fri, 10 Mar 2006 05:26:45 +0000
Subject: cvs: php-gtk /generator generator.php override.php
Groups: php.gtk.cvs 
Request: Send a blank email to php-gtk-cvs+get-2179@lists.php.net to get a copy of this message
andrei Fri Mar 10 05:26:45 2006 UTC Modified files: /php-gtk/generator generator.php override.php Log: Allowing adding extra programmatic fields (properties). http://cvs.php.net/viewcvs.cgi/php-gtk/generator/generator.php?r1=1.109&r2=1.110&diff_format=u Index: php-gtk/generator/generator.php diff -u php-gtk/generator/generator.php:1.109 php-gtk/generator/generator.php:1.110 --- php-gtk/generator/generator.php:1.109 Sun Feb 19 21:53:44 2006 +++ php-gtk/generator/generator.php Fri Mar 10 05:26:44 2006 @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: generator.php,v 1.109 2006/02/19 21:53:44 andrei Exp $ */ +/* $Id: generator.php,v 1.110 2006/03/10 05:26:44 andrei Exp $ */ /* * Significant portions of this generator are based on the pygtk code generator @@ -534,7 +534,7 @@ { global $matcher; - if (!$object->fields) { + if (!$object->fields && !$this->overrides->have_extra_props($object->c_name)) { return 'NULL'; } @@ -578,7 +578,7 @@ } if (isset($overrides['write'])) { $write_override = preg_replace('!^.*(PHPG_PROP_WRITER).*$!m', "static $1($object->c_name, $field_name)", $overrides['write']); - $this->write_override($overrides['read'], $object->c_name, $field_name, 'write'); + $this->write_override($overrides['write'], $object->c_name, $field_name, 'write'); $this->divert("gen ", "%%%% %-11s %s->%s\n", "writer for", $object->c_name, $field_name); } } else { @@ -604,6 +604,35 @@ } catch (Exception $e) { $this->divert("notgen", " %-11s %s->%s: %s\n", "reader for", $object->c_name, $field_name, $e->getMessage()); $num_skipped++; + $this->cover["props"]->skipped(); + } + } + + if ($this->overrides->have_extra_props($object->c_name)) { + foreach ($this->overrides->get_extra_props($object->c_name) as $prop_name => $overrides) { + + $read_func = "PHPG_PROP_READ_FN($object->c_name, $prop_name)"; + $write_func = 'NULL'; + $info = new Wrapper_Info(); + + if (isset($overrides['read'])) { + $read_override = preg_replace('!^.*(PHPG_PROP_READER).*$!m', "$1($object->c_name, $prop_name)", $overrides['read']); + $this->write_override($read_override, $object->c_name, $prop_name, 'read', 'extra'); + $this->divert("gen", "%%%% %-11s %s->%s\n", "reader for", $object->c_name, $prop_name); + $this->cover["props"]->written(); + } else { + $read_func = 'NULL'; + } + + if (isset($overrides['write'])) { + $write_override = preg_replace('!^.*(PHPG_PROP_WRITER).*$!m', "static $1($object->c_name, $prop_name)", $overrides['write']); + $this->write_override($overrides['write'], $object->c_name, $prop_name, 'write', 'extra'); + $this->divert("gen ", "%%%% %-11s %s->%s\n", "writer for", $object->c_name, $prop_name); + } + + $prop_defs[] = sprintf(Templates::prop_info_entry, + $prop_name, $read_func, $write_func); + $num_written++; $this->cover["props"]->written(); } } http://cvs.php.net/viewcvs.cgi/php-gtk/generator/override.php?r1=1.30&r2=1.31&diff_format=u Index: php-gtk/generator/override.php diff -u php-gtk/generator/override.php:1.30 php-gtk/generator/override.php:1.31 --- php-gtk/generator/override.php:1.30 Sat Feb 18 19:43:32 2006 +++ php-gtk/generator/override.php Fri Mar 10 05:26:44 2006 @@ -19,7 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: override.php,v 1.30 2006/02/18 19:43:32 andrei Exp $ */ +/* $Id: override.php,v 1.31 2006/03/10 05:26:44 andrei Exp $ */ class Overrides { var $ignores = array(); @@ -28,9 +28,9 @@ var $prop_overrides = array(); var $handler_overrides = array(); var $extra_methods = array(); + var $extra_props = array(); var $extra_arginfo = array();//reflection information var $unused_extra_arginfo = array();//which reflection information has not been used - var $getprops = array(); var $register_classes = array(); var $headers = ''; var $constants = ''; @@ -190,6 +190,17 @@ $this->lineinfo["$class.$method"] = array($blocklineno + 1, $file_name); break; + case 'add-prop': + $class = $words[0]; + $prop = $words[1]; + if (isset($words[2])) + $type = $words[2]; + else + $type = 'read'; + $this->extra_props[$class][$prop][$type] = $rest; + $this->lineinfo["$class.$prop.$type.extra"] = array($blocklineno + 1, $file_name); + break; + case 'add-arginfo': $class = $words[0]; $method = $words[1]; @@ -263,14 +274,14 @@ return $this->extra_methods[$class]; } - function have_get_prop($class_name, $prop_name) + function have_extra_props($class) { - return isset($this->getprops[$class_name][$prop_name]); + return isset($this->extra_props[$class]); } - function get_prop($class_name, $prop_name) + function get_extra_props($class) { - return $this->getprops[$class_name][$prop_name]; + return $this->extra_props[$class]; } function have_post_registration($class)

« previous php.gtk.cvs (#2179) next »