com php/gtk-src: TSRMLS_FETCH is the most evil thin g in the world remove where I can, also mak e 5.4 do class property defaults correctly:
ext/gtk+/php_gtk+.c ext/gtk+/php_gtk+.h ext/gtk+ /php_gtk+_types.c generator/templates.php main/php _gtk.h main/php_gtk_object.c main/phpg_atom.c
main/phpg_gboxed.c main/phpg_gobject.c main/phpg _gpointer.c main/phpg_gtype.c main/phpg_paramspec .c main/phpg_support.c

From: Date: Mon, 16 Jul 2012 18:19:47 +0000
Subject: com php/gtk-src: TSRMLS_FETCH is the most evil thin g in the world remove where I can, also mak e 5.4 do class property defaults correctly:
ext/gtk+/php_gtk+.c ext/gtk+/php_gtk+.h ext/gtk+ /php_gtk+_types.c generator/templates.php main/php _gtk.h main/php_gtk_object.c main/phpg_atom.c
main/phpg_gboxed.c main/phpg_gobject.c main/phpg _gpointer.c main/phpg_gtype.c main/phpg_paramspec .c main/phpg_support.c
Groups: php.gtk.cvs 
Request: Send a blank email to php-gtk-cvs+get-4847@lists.php.net to get a copy of this message
Commit: 71f565cf8623794168a01132a4b75a1aeaceaff8 Author: Elizabeth M Smith <auroraeosrose@gmail.com> Mon, 16 Jul 2012 14:19:47 -0400 Parents: 9209524468b76b066af2c678947188aab5aa9794 Branches: master Link: http://git.php.net/?p=php/gtk-src.git;a=commitdiff;h=71f565cf8623794168a01132a4b75a1aeaceaff8 Log: TSRMLS_FETCH is the most evil thing in the world remove where I can, also make 5.4 do class property defaults correctly Changed paths: M ext/gtk+/php_gtk+.c M ext/gtk+/php_gtk+.h M ext/gtk+/php_gtk+_types.c M generator/templates.php M main/php_gtk.h M main/php_gtk_object.c M main/phpg_atom.c M main/phpg_gboxed.c M main/phpg_gobject.c M main/phpg_gpointer.c M main/phpg_gtype.c M main/phpg_paramspec..c M main/phpg_support.c

diff --git a/ext/gtk+/php_gtk+.c b/ext/gtk+/php_gtk+.c index 86caf7c..77b5cad 100644 --- a/ext/gtk+/php_gtk+.c +++ b/ext/gtk+/php_gtk+.c @@ -36,7 +36,7 @@ extern zend_class_entry *gdk_ce; void phpg_gdk_register_keysyms(); /* TODO check pygtk version */ -static void init_gtk(void) +static void init_gtk(TSRMLS_C) { HashTable *symbol_table; zval **z_argv = NULL, **z_argc = NULL, **entry; @@ -44,7 +44,6 @@ static void init_gtk(void) char **argv = NULL; int argc, i; zend_bool no_argc = 0; - TSRMLS_FETCH(); /* * Grab the argc/argv values from $_SERVER array. @@ -206,16 +205,16 @@ PHP_GTK_XINIT_FUNCTION(gtk_plus) { //register_exception(TSRMLS_C); - init_gtk(); - phpg_gtk_register_classes(); - phpg_gdk_register_classes(); - phpg_atk_register_classes(); - phpg_pango_register_classes(); + init_gtk(TSRMLS_C); + phpg_gtk_register_classes(TSRMLS_C); + phpg_gdk_register_classes(TSRMLS_C); + phpg_atk_register_classes(TSRMLS_C); + phpg_pango_register_classes(TSRMLS_C); - phpg_atk_register_constants("ATK_"); - phpg_pango_register_constants("PANGO_"); - phpg_gdk_register_constants("GDK_"); - phpg_gtk_register_constants("GTK_"); + phpg_atk_register_constants("ATK_" TSRMLS_CC); + phpg_pango_register_constants("PANGO_" TSRMLS_CC); + phpg_gdk_register_constants("GDK_" TSRMLS_CC); + phpg_gtk_register_constants("GTK_" TSRMLS_CC); phpg_register_stock_constants(); phpg_gdk_register_keysyms(); diff --git a/ext/gtk+/php_gtk+.h b/ext/gtk+/php_gtk+.h index 4ac5023..0a4d7b3 100644 --- a/ext/gtk+/php_gtk+.h +++ b/ext/gtk+/php_gtk+.h @@ -55,14 +55,14 @@ zend_object_iterator* phpg_treemodel_get_iterator(zend_class_entry *ce, zval *ob void phpg_modelrow_new(zval **zobj, GtkTreeModel *model, GtkTreeIter *iter TSRMLS_DC); -void phpg_atk_register_constants(const char *strip_prefix); -void phpg_pango_register_constants(const char *strip_prefix); -void phpg_gdk_register_constants(const char *strip_prefix); -void phpg_gtk_register_constants(const char *strip_prefix); -void phpg_atk_register_classes(void); -void phpg_pango_register_classes(void); -void phpg_gdk_register_classes(void); -void phpg_gtk_register_classes(void); +void phpg_atk_register_constants(const char *strip_prefix TSRMLS_DC); +void phpg_pango_register_constants(const char *strip_prefix TSRMLS_DC); +void phpg_gdk_register_constants(const char *strip_prefix TSRMLS_DC); +void phpg_gtk_register_constants(const char *strip_prefix TSRMLS_DC); +void phpg_atk_register_classes(TSRMLS_D); +void phpg_pango_register_classes(TSRMLS_D); +void phpg_gdk_register_classes(TSRMLS_D); +void phpg_gtk_register_classes(TSRMLS_D); void php_gtk_plus_register_types(TSRMLS_D); diff --git a/ext/gtk+/php_gtk+_types.c b/ext/gtk+/php_gtk+_types.c index 94659fb..f908289 100644 --- a/ext/gtk+/php_gtk+_types.c +++ b/ext/gtk+/php_gtk+_types.c @@ -747,7 +747,7 @@ static zend_object_value phpg_modelrow_create_object(zend_class_entry *ce TSRMLS object = emalloc(sizeof(phpg_modelrow_t)); memset(object, 0, sizeof(phpg_modelrow_t)); - phpg_init_object(object, ce); + phpg_init_object(object, ce TSRMLS_CC); zov.handlers = &gtktreemodelrow_handlers; zov.handle = zend_objects_store_put(object, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) phpg_modelrow_free_object_storage, NULL TSRMLS_CC); @@ -812,7 +812,7 @@ static zend_object_value phpg_modelrowiter_create_object(zend_class_entry *ce TS object = emalloc(sizeof(phpg_modelrowiter_t)); memset(object, 0, sizeof(phpg_modelrowiter_t)); - phpg_init_object(object, ce); + phpg_init_object(object, ce TSRMLS_CC); zov.handlers = &php_gtk_handlers; zov.handle = zend_objects_store_put(object, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) phpg_modelrowiter_free_object_storage, NULL TSRMLS_CC); diff --git a/generator/templates.php b/generator/templates.php index 990fa26..b71da16 100644 --- a/generator/templates.php +++ b/generator/templates.php @@ -248,9 +248,8 @@ PHP_FUNCTION(%s_get_type) }\n\n"; const register_classes = " -void phpg_%s_register_classes(void) +void phpg_%s_register_classes(TSRMLS_D) { - TSRMLS_FETCH(); %s}\n"; const register_class = " @@ -293,9 +292,8 @@ const prop_access = "%(cast)(((phpg_gobject_t *)object)->obj)->%(name)"; const boxed_prop_access = "((%(cast))((phpg_gboxed_t *)object)->boxed)->%(name)"; const register_constants = " -void phpg_%s_register_constants(const char *strip_prefix) +void phpg_%s_register_constants(const char *strip_prefix TSRMLS_DC) { - TSRMLS_FETCH(); %s /* register gtype constants for all classes */ diff --git a/main/php_gtk.h b/main/php_gtk.h index 8dc971f..4de0172 100644 --- a/main/php_gtk.h +++ b/main/php_gtk.h @@ -323,7 +323,7 @@ void php_gtk_call_function(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference PHP_GTK_API zend_class_entry* phpg_register_class(const char *class_name, zend_function_entry *class_functions, zend_class_entry *parent, zend_uint ce_flags, prop_info_t *prop_info, create_object_func_t create_obj_func, GType gtype TSRMLS_DC); PHP_GTK_API zend_class_entry* phpg_register_interface(const char *iface_name, zend_function_entry *iface_methods, GType gtype TSRMLS_DC); PHP_GTK_API zend_class_entry* phpg_create_class(GType gtype); -PHP_GTK_API void phpg_init_object(void *pobj, zend_class_entry *ce); +PHP_GTK_API void phpg_init_object(void *pobj, zend_class_entry *ce TSRMLS_DC); PHP_GTK_API zend_bool phpg_parse_ctor_props(GType gtype, zval **php_args, GParameter *params, guint *n_params, char **prop_names TSRMLS_DC); PHP_GTK_API void phpg_register_prop_getter(zend_class_entry *ce, prop_getter_t getter); diff --git a/main/php_gtk_object.c b/main/php_gtk_object.c index 4b73f5b..f408164 100644 --- a/main/php_gtk_object.c +++ b/main/php_gtk_object.c @@ -95,7 +95,7 @@ static zend_object_value phpg_create_object(zend_class_entry *ce TSRMLS_DC) prop_desc_t *prop_desc; object = emalloc(sizeof(phpg_gobject_t)); - phpg_init_object(object, ce); + phpg_init_object(object, ce TSRMLS_CC); object->obj = NULL; object->dtor = NULL; diff --git a/main/phpg_atom.c b/main/phpg_atom.c index deb7107..ad44bac 100644 --- a/main/phpg_atom.c +++ b/main/phpg_atom.c @@ -125,7 +125,7 @@ PHP_GTK_API zend_object_value phpg_create_gdkatom(zend_class_entry *ce TSRMLS_DC phpg_gdkatom_t *object; object = emalloc(sizeof(phpg_gdkatom_t)); - phpg_init_object(object, ce); + phpg_init_object(object, ce TSRMLS_CC); object->atom = GDK_NONE; object->name = NULL; diff --git a/main/phpg_gboxed.c b/main/phpg_gboxed.c index ac00e9f..94a51c5 100644 --- a/main/phpg_gboxed.c +++ b/main/phpg_gboxed.c @@ -75,7 +75,7 @@ PHP_GTK_API zend_object_value phpg_create_gboxed(zend_class_entry *ce TSRMLS_DC) phpg_gboxed_t *object; object = emalloc(sizeof(phpg_gboxed_t)); - phpg_init_object(object, ce); + phpg_init_object(object, ce TSRMLS_CC); object->boxed = NULL; object->gtype = 0; diff --git a/main/phpg_gobject.c b/main/phpg_gobject.c index 8638488..6fb064a 100644 --- a/main/phpg_gobject.c +++ b/main/phpg_gobject.c @@ -144,7 +144,7 @@ PHP_GTK_API zend_object_value phpg_create_gobject(zend_class_entry *ce TSRMLS_DC phpg_gobject_t *object; object = emalloc(sizeof(phpg_gobject_t)); - phpg_init_object(object, ce); + phpg_init_object(object, ce TSRMLS_CC); object->obj = NULL; object->dtor = NULL; diff --git a/main/phpg_gpointer.c b/main/phpg_gpointer.c index 8db4b0b..f52d367 100644 --- a/main/phpg_gpointer.c +++ b/main/phpg_gpointer.c @@ -66,7 +66,7 @@ PHP_GTK_API zend_object_value phpg_create_gpointer(zend_class_entry *ce TSRMLS_D phpg_gpointer_t *object; object = emalloc(sizeof(phpg_gpointer_t)); - phpg_init_object(object, ce); + phpg_init_object(object, ce TSRMLS_CC); object->pointer = NULL; object->gtype = 0; diff --git a/main/phpg_gtype.c b/main/phpg_gtype.c index cd91a68..49b02f3 100644 --- a/main/phpg_gtype.c +++ b/main/phpg_gtype.c @@ -67,7 +67,7 @@ static zend_object_value gtype_create_object(zend_class_entry *ce TSRMLS_DC) phpg_gtype_t *object; object = emalloc(sizeof(phpg_gtype_t)); - phpg_init_object(object, ce); + phpg_init_object(object, ce TSRMLS_CC); object->type = 0; diff --git a/main/phpg_paramspec.c b/main/phpg_paramspec.c index 61a8bd3..7ba245c 100644 --- a/main/phpg_paramspec.c +++ b/main/phpg_paramspec.c @@ -49,7 +49,7 @@ PHP_GTK_API zend_object_value phpg_create_paramspec(zend_class_entry *ce TSRMLS_ phpg_paramspec_t *object; object = emalloc(sizeof(phpg_paramspec_t)); - phpg_init_object(object, ce); + phpg_init_object(object, ce TSRMLS_CC); object->pspec = NULL; diff --git a/main/phpg_support.c b/main/phpg_support.c index e7cc2f5..4eca9d6 100644 --- a/main/phpg_support.c +++ b/main/phpg_support.c @@ -261,19 +261,23 @@ PHP_GTK_API void phpg_destroy_notify(gpointer data) /* }}} */ /* {{{ phpg_init_object() */ -PHP_GTK_API void phpg_init_object(void *object, zend_class_entry *ce) +PHP_GTK_API void phpg_init_object(void *object, zend_class_entry *ce TSRMLS_DC) { zval *tmp; zend_class_entry *prop_ce; phpg_head_t *poh = (phpg_head_t *) object; - poh->zobj.ce = ce; - poh->zobj.guards = NULL; + zend_object_std_init(&poh->zobj, ce TSRMLS_CC); + poh->pi_hash = NULL; - ALLOC_HASHTABLE(poh->zobj.properties); - zend_hash_init(poh->zobj.properties, 0, NULL, ZVAL_PTR_DTOR, 0); - zend_hash_copy(poh->zobj.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); +#if PHP_VERSION_ID < 50399 + zend_hash_copy(poh->zobj.properties, &(ce->default_properties), + (copy_ctor_func_t)zval_add_ref, (void *)(&tmp), + sizeof(zval *)); +#else + object_properties_init(&(poh->zobj), ce); +#endif /* * Find the nearest internal parent class and use its property handler @@ -300,7 +304,7 @@ PHP_GTK_API zend_class_entry* phpg_register_class(const char *class_name, { zend_class_entry ce, *real_ce; HashTable pi_hash; - HashTable *parent_pi_hash = NULL; + HashTable *parent_pi_hash = NULL; prop_info_t *pi; if (!phpg_class_key) { @@ -315,36 +319,36 @@ PHP_GTK_API zend_class_entry* phpg_register_class(const char *class_name, real_ce = zend_register_internal_class_ex(&ce, parent, NULL TSRMLS_CC); - real_ce->ce_flags = ce_flags; + real_ce->ce_flags = ce_flags; if (create_obj_func) { real_ce->create_object = create_obj_func; } else { real_ce->create_object = phpg_create_gobject; } - zend_hash_init(&pi_hash, 1, NULL, NULL, 1); - if (prop_info) { - pi = prop_info; - /* - * Only register properties with reader functions. - */ - while (pi->name && pi->read) { - zend_hash_update(&pi_hash, (char *)pi->name, strlen(pi->name)+1, pi, sizeof(prop_info_t), NULL); - pi++; - } - } + zend_hash_init(&pi_hash, 1, NULL, NULL, 1); + if (prop_info) { + pi = prop_info; + /* + * Only register properties with reader functions. + */ + while (pi->name && pi->read) { + zend_hash_update(&pi_hash, (char *)pi->name, strlen(pi->name)+1, pi, sizeof(prop_info_t), NULL); + pi++; + } + } - /* - * Merge in parent's properties. - */ - if (parent && zend_hash_find(&phpg_prop_info, parent->name, parent->name_length+1, (void **)&parent_pi_hash) == SUCCESS) { - zend_hash_merge(&pi_hash, parent_pi_hash, NULL, NULL, sizeof(prop_info_t), 0); - } - zend_hash_add(&phpg_prop_info, ce.name, ce.name_length+1, &pi_hash, sizeof(HashTable), NULL); + /* + * Merge in parent's properties. + */ + if (parent && zend_hash_find(&phpg_prop_info, parent->name, parent->name_length+1, (void **)&parent_pi_hash) == SUCCESS) { + zend_hash_merge(&pi_hash, parent_pi_hash, NULL, NULL, sizeof(prop_info_t), 0); + } + zend_hash_add(&phpg_prop_info, ce.name, ce.name_length+1, &pi_hash, sizeof(HashTable), NULL); - if (gtype) { - g_type_set_qdata(gtype, phpg_class_key, real_ce); - } + if (gtype) { + g_type_set_qdata(gtype, phpg_class_key, real_ce); + } return real_ce; }
« previous php.gtk.cvs (#4847) next »