[PATCH] 5_2 compat stuff
| From: | Steph Fox | Date: | Mon, 29 May 2006 14:25:25 +0000 |
| Subject: | [PATCH] 5_2 compat stuff | ||
| Groups: | php.gtk.dev | ||
| Request: | Send a blank email to php-gtk-dev+get-2910@lists.php.net to get a copy of this message | ||
Andrei, hi,
I didn't like to apply anything this clunky without your say-so... but it works fine. It's just clunky.
Still no closer to a solution for the shutdown crash tho' I'm afraid, unless we take 'the Zeev route'.
- Steph
? ext/gtk+/weird_tsrm_stuff.txt Index: ext/gtk+/gdk.overrides =================================================================== RCS file: /repository/php-gtk/ext/gtk+/gdk.overrides,v retrieving revision 1.54 diff -u -r1.54 gdk.overrides --- ext/gtk+/gdk.overrides 8 Apr 2006 19:17:27 -0000 1.54 +++ ext/gtk+/gdk.overrides 26 May 2006 19:28:55 -0000 @@ -247,7 +247,11 @@ PHP_METHOD { phpg_warn_deprecated("use GdkColormap::alloc_color()" TSRMLS_CC); +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_MN(GdkColormap_alloc_color)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#else PHP_FN(GdkColormap_alloc_color)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#endif } %% }}} Index: ext/gtk+/gtk.overrides =================================================================== RCS file: /repository/php-gtk/ext/gtk+/gtk.overrides,v retrieving revision 1.174 diff -u -r1.174 gtk.overrides --- ext/gtk+/gtk.overrides 16 May 2006 19:54:48 -0000 1.174 +++ ext/gtk+/gtk.overrides 29 May 2006 13:50:19 -0000 @@ -2615,7 +2615,11 @@ PHP_METHOD { phpg_warn_deprecated("use GtkRadioButton::get_group()" TSRMLS_CC); +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_MN(GtkRadioButton_get_group)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#else PHP_FN(GtkRadioButton_get_group)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#endif } %% }}} Index: ext/gtk+/gtkcontainer.overrides =================================================================== RCS file: /repository/php-gtk/ext/gtk+/gtkcontainer.overrides,v retrieving revision 1.1 diff -u -r1.1 gtkcontainer.overrides --- ext/gtk+/gtkcontainer.overrides 18 Jun 2005 18:59:46 -0000 1.1 +++ ext/gtk+/gtkcontainer.overrides 26 May 2006 19:28:55 -0000 @@ -36,5 +36,9 @@ PHP_METHOD { phpg_warn_deprecated("use GtkContainer::get_children()" TSRMLS_CC); +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_MN(GtkContainer_get_children)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#else PHP_FN(GtkContainer_get_children)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#endif } Index: ext/gtk+/php_gtk+.h =================================================================== RCS file: /repository/php-gtk/ext/gtk+/php_gtk+.h,v retrieving revision 1.26 diff -u -r1.26 php_gtk+.h --- ext/gtk+/php_gtk+.h 18 Feb 2006 19:49:34 -0000 1.26 +++ ext/gtk+/php_gtk+.h 29 May 2006 13:55:50 -0000 @@ -41,7 +41,13 @@ int phpg_model_set_row(GtkTreeModel *model, GtkTreeIter *iter, zval *items TSRMLS_DC); int phpg_model_remove_row(GtkTreeModel *model, GtkTreeIter *iter TSRMLS_DC); + +#if ZEND_EXTENSION_API_NO > 220051025 +zend_object_iterator* phpg_treemodel_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC); +#else zend_object_iterator* phpg_treemodel_get_iterator(zend_class_entry *ce, zval *object TSRMLS_DC); +#endif + void phpg_modelrow_new(zval **zobj, GtkTreeModel *model, GtkTreeIter *iter TSRMLS_DC); void phpg_atk_register_constants(const char *strip_prefix); Index: ext/gtk+/php_gtk+_types.c =================================================================== RCS file: /repository/php-gtk/ext/gtk+/php_gtk+_types.c,v retrieving revision 1.48 diff -u -r1.48 php_gtk+_types.c --- ext/gtk+/php_gtk+_types.c 31 Mar 2006 18:10:22 -0000 1.48 +++ ext/gtk+/php_gtk+_types.c 29 May 2006 14:03:44 -0000 @@ -524,7 +524,11 @@ } static zend_function_entry gtktreemodelrow_methods[] = { +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_ME_MAPPING(__construct, no_direct_constructor, NULL, 0) +#else PHP_ME_MAPPING(__construct, no_direct_constructor, NULL) +#endif PHP_ME(GtkTreeModelRow, children, NULL, ZEND_ACC_PUBLIC) { NULL, NULL, NULL } }; @@ -764,16 +768,21 @@ treemodelrow_iter_move_forward, treemodelrow_iter_rewind, }; - +#if ZEND_EXTENSION_API_NO > 220051025 +zend_object_iterator* phpg_modelrowiter_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC) +#else zend_object_iterator* phpg_modelrowiter_get_iterator(zend_class_entry *ce, zval *object TSRMLS_DC) +#endif { phpg_modelrowiter_t *iter_obj; - /* TODO see if Marcus can do the by_ref stuff for PHP 5 + /* TODO: Marcus believes it will be safer to use the SPL API here from 5_2 up */ + +#if ZEND_EXTENSION_API_NO > 220051025 if (by_ref) { zend_error(E_ERROR, "An iterator cannot be used with foreach by reference"); } - */ +#endif iter_obj = (phpg_modelrowiter_t *) zend_object_store_get_object(object TSRMLS_CC); @@ -784,16 +793,20 @@ return (zend_object_iterator *) &iter_obj->ziter; } +#if ZEND_EXTENSION_API_NO > 220051025 +zend_object_iterator* phpg_treemodel_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC) +#else zend_object_iterator* phpg_treemodel_get_iterator(zend_class_entry *ce, zval *object TSRMLS_DC) +#endif { phpg_modelrowiter_t *iter_obj; zval *zobj = NULL; - /* TODO see if Marcus can do the by_ref stuff for PHP 5 +#if ZEND_EXTENSION_API_NO > 220051025 if (by_ref) { zend_error(E_ERROR, "An iterator cannot be used with foreach by reference"); } - */ +#endif phpg_modelrowiter_new(&zobj, GTK_TREE_MODEL(PHPG_GOBJECT(object)), NULL TSRMLS_CC); iter_obj = (phpg_modelrowiter_t *) zend_object_store_get_object(zobj TSRMLS_CC); @@ -804,7 +817,6 @@ return (zend_object_iterator *) &iter_obj->ziter; } - static zval* treemodelrow_read_dimension(zval *object, zval *offset, int type TSRMLS_DC) { phpg_modelrow_t *row; Index: generator/generator.php =================================================================== RCS file: /repository/php-gtk/generator/generator.php,v retrieving revision 1.112 diff -u -r1.112 generator.php --- generator/generator.php 1 May 2006 18:30:56 -0000 1.112 +++ generator/generator.php 25 May 2006 17:31:54 -0000 @@ -429,7 +429,7 @@ // mark class as non-instantiable directly if we were trying // to generate default constructor if ($ctor_fe_name == '__construct') { - $ctor_defs[] = sprintf(Templates::function_entry, $ctor_fe_name, 'no_direct_constructor'); + $ctor_defs[] = sprintf(Templates::function_entry, $ctor_fe_name, 'no_direct_constructor', $ctor_fe_name, 'no_direct_constructor'); } } $first = 0; @@ -453,7 +453,7 @@ // GObject. For GObject's we let it chain up to GObject // constructor if ($object->def_type != 'object') { - $ctor_defs[] = sprintf(Templates::function_entry, '__construct', 'no_direct_constructor'); + $ctor_defs[] = sprintf(Templates::function_entry, '__construct', 'no_direct_constructor', '__construct', 'no_direct_constructor'); } } } Index: generator/templates.php =================================================================== RCS file: /repository/php-gtk/generator/templates.php,v retrieving revision 1.49 diff -u -r1.49 templates.php --- generator/templates.php 19 Feb 2006 21:53:44 -0000 1.49 +++ generator/templates.php 29 May 2006 04:26:03 -0000 @@ -192,7 +192,7 @@ const method_entry = "\tPHP_ME(%s, %s, %s, %s)\n"; const abs_method_entry = "\tZEND_ABSTRACT_ME(%s, %s, %s)\n"; -const function_entry = "\tPHP_ME_MAPPING(%s, %s, NULL)\n"; +const function_entry = "#if ZEND_EXTENSION_API_NO > 220051025\n\tPHP_ME_MAPPING(%s, %s, NULL, 0)\n#else\n\tPHP_ME_MAPPING(%s, %s, NULL)\n#endif\n"; const alias_entry = "\tPHP_MALIAS(%s, %s, %s, %s, %s)\n"; const functions_decl = " static function_entry %s_methods[] = { Index: main/php_gtk.c =================================================================== RCS file: /repository/php-gtk/main/php_gtk.c,v retrieving revision 1.52 diff -u -r1.52 php_gtk.c --- main/php_gtk.c 19 Nov 2005 21:44:34 -0000 1.52 +++ main/php_gtk.c 29 May 2006 14:19:46 -0000 @@ -62,7 +62,7 @@ STANDARD_MODULE_PROPERTIES }; -ZEND_DECLARE_MODULE_GLOBALS(gtk) +ZEND_DECLARE_MODULE_GLOBALS(gtk); #ifdef COMPILE_DL_PHP_GTK2 ZEND_GET_MODULE(gtk) @@ -70,7 +70,6 @@ static void php_gtk_startup_shared_extensions(int module_number); - static ZEND_INI_MH(OnUpdateCodepage) { char **p; Index: main/php_gtk.h =================================================================== RCS file: /repository/php-gtk/main/php_gtk.h,v retrieving revision 1.129 diff -u -r1.129 php_gtk.h --- main/php_gtk.h 27 Mar 2006 04:25:50 -0000 1.129 +++ main/php_gtk.h 29 May 2006 14:18:16 -0000 @@ -35,6 +35,7 @@ #include "zend_objects_API.h" #include "zend_exceptions.h" +#include "zend_extensions.h" #define PHP_GTK_VERSION "2.0.0-dev" Index: main/phpg_atom.c =================================================================== RCS file: /repository/php-gtk/main/phpg_atom.c,v retrieving revision 1.4 diff -u -r1.4 phpg_atom.c --- main/phpg_atom.c 31 Mar 2006 18:10:22 -0000 1.4 +++ main/phpg_atom.c 29 May 2006 13:58:11 -0000 @@ -30,7 +30,11 @@ static zend_object_handlers phpg_gdkatom_handlers; static function_entry gdkatom_methods[] = { +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_ME_MAPPING(__construct, no_direct_constructor, NULL, 0) +#else PHP_ME_MAPPING(__construct, no_direct_constructor, NULL) +#endif { NULL, NULL, NULL } }; @@ -61,6 +65,26 @@ /* }}} */ /* {{{ static phpg_gdkatom_cast_object() */ +#if ZEND_EXTENSION_API_NO > 220051025 +static int phpg_gdkatom_cast_object(zval *readobj, zval *writeobj, int type TSRMLS_DC) +{ + phpg_gdkatom_t *pobj; + + if (type == IS_STRING) { + pobj = zend_object_store_get_object(readobj TSRMLS_CC); + if (!pobj->name) { + pobj->name = estrdup(gdk_atom_name(pobj->atom)); + } + if (!pobj->name) { + /* TODO obtain representation from __toString() perhaps */ + } + ZVAL_STRING(writeobj, pobj->name, 1); + return SUCCESS; + } + + return FAILURE; +} +#else static int phpg_gdkatom_cast_object(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC) { phpg_gdkatom_t *pobj; @@ -81,12 +105,12 @@ if (should_free) { zval_dtor(&free_obj); } - return SUCCESS; } return FAILURE; } +#endif /* }}} */ /* {{{ PHP_GTK_API phpg_create_gdkatom() */ Index: main/phpg_exceptions.c =================================================================== RCS file: /repository/php-gtk/main/phpg_exceptions.c,v retrieving revision 1.5 diff -u -r1.5 phpg_exceptions.c --- main/phpg_exceptions.c 2 Sep 2005 09:25:05 -0000 1.5 +++ main/phpg_exceptions.c 26 May 2006 19:27:55 -0000 @@ -33,7 +33,11 @@ TSRMLS_FETCH(); INIT_CLASS_ENTRY(ce, "PhpGtkException", NULL); +#if ZEND_EXTENSION_API_NO > 220051025 + phpg_generic_exception = zend_register_internal_class_ex(&ce, zend_exception_get_default(TSRMLS_C), NULL TSRMLS_CC); +#else phpg_generic_exception = zend_register_internal_class_ex(&ce, zend_exception_get_default(), NULL TSRMLS_CC); +#endif phpg_generic_exception->ce_flags |= ZEND_ACC_FINAL; phpg_generic_exception->constructor->common.fn_flags |= ZEND_ACC_PROTECTED; Index: main/phpg_gpointer.c =================================================================== RCS file: /repository/php-gtk/main/phpg_gpointer.c,v retrieving revision 1.3 diff -u -r1.3 phpg_gpointer.c --- main/phpg_gpointer.c 31 Mar 2006 18:10:22 -0000 1.3 +++ main/phpg_gpointer.c 26 May 2006 19:28:54 -0000 @@ -28,7 +28,11 @@ PHP_GTK_EXPORT_CE(gpointer_ce) = NULL; static function_entry gpointer_methods[] = { +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_ME_MAPPING(__construct, no_direct_constructor, NULL, 0) +#else PHP_ME_MAPPING(__construct, no_direct_constructor, NULL) +#endif { NULL, NULL, NULL } };
? ext/gtk+/weird_tsrm_stuff.txt Index: ext/gtk+/gdk.overrides =================================================================== RCS file: /repository/php-gtk/ext/gtk+/gdk.overrides,v retrieving revision 1.54 diff -u -r1.54 gdk.overrides --- ext/gtk+/gdk.overrides 8 Apr 2006 19:17:27 -0000 1.54 +++ ext/gtk+/gdk.overrides 26 May 2006 19:28:55 -0000 @@ -247,7 +247,11 @@ PHP_METHOD { phpg_warn_deprecated("use GdkColormap::alloc_color()" TSRMLS_CC); +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_MN(GdkColormap_alloc_color)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#else PHP_FN(GdkColormap_alloc_color)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#endif } %% }}} Index: ext/gtk+/gtk.overrides =================================================================== RCS file: /repository/php-gtk/ext/gtk+/gtk.overrides,v retrieving revision 1.174 diff -u -r1.174 gtk.overrides --- ext/gtk+/gtk.overrides 16 May 2006 19:54:48 -0000 1.174 +++ ext/gtk+/gtk.overrides 29 May 2006 13:50:19 -0000 @@ -2615,7 +2615,11 @@ PHP_METHOD { phpg_warn_deprecated("use GtkRadioButton::get_group()" TSRMLS_CC); +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_MN(GtkRadioButton_get_group)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#else PHP_FN(GtkRadioButton_get_group)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#endif } %% }}} Index: ext/gtk+/gtkcontainer.overrides =================================================================== RCS file: /repository/php-gtk/ext/gtk+/gtkcontainer.overrides,v retrieving revision 1.1 diff -u -r1.1 gtkcontainer.overrides --- ext/gtk+/gtkcontainer.overrides 18 Jun 2005 18:59:46 -0000 1.1 +++ ext/gtk+/gtkcontainer.overrides 26 May 2006 19:28:55 -0000 @@ -36,5 +36,9 @@ PHP_METHOD { phpg_warn_deprecated("use GtkContainer::get_children()" TSRMLS_CC); +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_MN(GtkContainer_get_children)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#else PHP_FN(GtkContainer_get_children)(INTERNAL_FUNCTION_PARAM_PASSTHRU); +#endif } Index: ext/gtk+/php_gtk+.h =================================================================== RCS file: /repository/php-gtk/ext/gtk+/php_gtk+.h,v retrieving revision 1.26 diff -u -r1.26 php_gtk+.h --- ext/gtk+/php_gtk+.h 18 Feb 2006 19:49:34 -0000 1.26 +++ ext/gtk+/php_gtk+.h 29 May 2006 13:55:50 -0000 @@ -41,7 +41,13 @@ int phpg_model_set_row(GtkTreeModel *model, GtkTreeIter *iter, zval *items TSRMLS_DC); int phpg_model_remove_row(GtkTreeModel *model, GtkTreeIter *iter TSRMLS_DC); + +#if ZEND_EXTENSION_API_NO > 220051025 +zend_object_iterator* phpg_treemodel_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC); +#else zend_object_iterator* phpg_treemodel_get_iterator(zend_class_entry *ce, zval *object TSRMLS_DC); +#endif + void phpg_modelrow_new(zval **zobj, GtkTreeModel *model, GtkTreeIter *iter TSRMLS_DC); void phpg_atk_register_constants(const char *strip_prefix); Index: ext/gtk+/php_gtk+_types.c =================================================================== RCS file: /repository/php-gtk/ext/gtk+/php_gtk+_types.c,v retrieving revision 1.48 diff -u -r1.48 php_gtk+_types.c --- ext/gtk+/php_gtk+_types.c 31 Mar 2006 18:10:22 -0000 1.48 +++ ext/gtk+/php_gtk+_types.c 29 May 2006 14:03:44 -0000 @@ -524,7 +524,11 @@ } static zend_function_entry gtktreemodelrow_methods[] = { +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_ME_MAPPING(__construct, no_direct_constructor, NULL, 0) +#else PHP_ME_MAPPING(__construct, no_direct_constructor, NULL) +#endif PHP_ME(GtkTreeModelRow, children, NULL, ZEND_ACC_PUBLIC) { NULL, NULL, NULL } }; @@ -764,16 +768,21 @@ treemodelrow_iter_move_forward, treemodelrow_iter_rewind, }; - +#if ZEND_EXTENSION_API_NO > 220051025 +zend_object_iterator* phpg_modelrowiter_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC) +#else zend_object_iterator* phpg_modelrowiter_get_iterator(zend_class_entry *ce, zval *object TSRMLS_DC) +#endif { phpg_modelrowiter_t *iter_obj; - /* TODO see if Marcus can do the by_ref stuff for PHP 5 + /* TODO: Marcus believes it will be safer to use the SPL API here from 5_2 up */ + +#if ZEND_EXTENSION_API_NO > 220051025 if (by_ref) { zend_error(E_ERROR, "An iterator cannot be used with foreach by reference"); } - */ +#endif iter_obj = (phpg_modelrowiter_t *) zend_object_store_get_object(object TSRMLS_CC); @@ -784,16 +793,20 @@ return (zend_object_iterator *) &iter_obj->ziter; } +#if ZEND_EXTENSION_API_NO > 220051025 +zend_object_iterator* phpg_treemodel_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC) +#else zend_object_iterator* phpg_treemodel_get_iterator(zend_class_entry *ce, zval *object TSRMLS_DC) +#endif { phpg_modelrowiter_t *iter_obj; zval *zobj = NULL; - /* TODO see if Marcus can do the by_ref stuff for PHP 5 +#if ZEND_EXTENSION_API_NO > 220051025 if (by_ref) { zend_error(E_ERROR, "An iterator cannot be used with foreach by reference"); } - */ +#endif phpg_modelrowiter_new(&zobj, GTK_TREE_MODEL(PHPG_GOBJECT(object)), NULL TSRMLS_CC); iter_obj = (phpg_modelrowiter_t *) zend_object_store_get_object(zobj TSRMLS_CC); @@ -804,7 +817,6 @@ return (zend_object_iterator *) &iter_obj->ziter; } - static zval* treemodelrow_read_dimension(zval *object, zval *offset, int type TSRMLS_DC) { phpg_modelrow_t *row; Index: generator/generator.php =================================================================== RCS file: /repository/php-gtk/generator/generator.php,v retrieving revision 1.112 diff -u -r1.112 generator.php --- generator/generator.php 1 May 2006 18:30:56 -0000 1.112 +++ generator/generator.php 25 May 2006 17:31:54 -0000 @@ -429,7 +429,7 @@ // mark class as non-instantiable directly if we were trying // to generate default constructor if ($ctor_fe_name == '__construct') { - $ctor_defs[] = sprintf(Templates::function_entry, $ctor_fe_name, 'no_direct_constructor'); + $ctor_defs[] = sprintf(Templates::function_entry, $ctor_fe_name, 'no_direct_constructor', $ctor_fe_name, 'no_direct_constructor'); } } $first = 0; @@ -453,7 +453,7 @@ // GObject. For GObject's we let it chain up to GObject // constructor if ($object->def_type != 'object') { - $ctor_defs[] = sprintf(Templates::function_entry, '__construct', 'no_direct_constructor'); + $ctor_defs[] = sprintf(Templates::function_entry, '__construct', 'no_direct_constructor', '__construct', 'no_direct_constructor'); } } } Index: generator/templates.php =================================================================== RCS file: /repository/php-gtk/generator/templates.php,v retrieving revision 1.49 diff -u -r1.49 templates.php --- generator/templates.php 19 Feb 2006 21:53:44 -0000 1.49 +++ generator/templates.php 29 May 2006 04:26:03 -0000 @@ -192,7 +192,7 @@ const method_entry = "\tPHP_ME(%s, %s, %s, %s)\n"; const abs_method_entry = "\tZEND_ABSTRACT_ME(%s, %s, %s)\n"; -const function_entry = "\tPHP_ME_MAPPING(%s, %s, NULL)\n"; +const function_entry = "#if ZEND_EXTENSION_API_NO > 220051025\n\tPHP_ME_MAPPING(%s, %s, NULL, 0)\n#else\n\tPHP_ME_MAPPING(%s, %s, NULL)\n#endif\n"; const alias_entry = "\tPHP_MALIAS(%s, %s, %s, %s, %s)\n"; const functions_decl = " static function_entry %s_methods[] = { Index: main/php_gtk.c =================================================================== RCS file: /repository/php-gtk/main/php_gtk.c,v retrieving revision 1.52 diff -u -r1.52 php_gtk.c --- main/php_gtk.c 19 Nov 2005 21:44:34 -0000 1.52 +++ main/php_gtk.c 29 May 2006 14:19:46 -0000 @@ -62,7 +62,7 @@ STANDARD_MODULE_PROPERTIES }; -ZEND_DECLARE_MODULE_GLOBALS(gtk) +ZEND_DECLARE_MODULE_GLOBALS(gtk); #ifdef COMPILE_DL_PHP_GTK2 ZEND_GET_MODULE(gtk) @@ -70,7 +70,6 @@ static void php_gtk_startup_shared_extensions(int module_number); - static ZEND_INI_MH(OnUpdateCodepage) { char **p; Index: main/php_gtk.h =================================================================== RCS file: /repository/php-gtk/main/php_gtk.h,v retrieving revision 1.129 diff -u -r1.129 php_gtk.h --- main/php_gtk.h 27 Mar 2006 04:25:50 -0000 1.129 +++ main/php_gtk.h 29 May 2006 14:18:16 -0000 @@ -35,6 +35,7 @@ #include "zend_objects_API.h" #include "zend_exceptions.h" +#include "zend_extensions.h" #define PHP_GTK_VERSION "2.0.0-dev" Index: main/phpg_atom.c =================================================================== RCS file: /repository/php-gtk/main/phpg_atom.c,v retrieving revision 1.4 diff -u -r1.4 phpg_atom.c --- main/phpg_atom.c 31 Mar 2006 18:10:22 -0000 1.4 +++ main/phpg_atom.c 29 May 2006 13:58:11 -0000 @@ -30,7 +30,11 @@ static zend_object_handlers phpg_gdkatom_handlers; static function_entry gdkatom_methods[] = { +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_ME_MAPPING(__construct, no_direct_constructor, NULL, 0) +#else PHP_ME_MAPPING(__construct, no_direct_constructor, NULL) +#endif { NULL, NULL, NULL } }; @@ -61,6 +65,26 @@ /* }}} */ /* {{{ static phpg_gdkatom_cast_object() */ +#if ZEND_EXTENSION_API_NO > 220051025 +static int phpg_gdkatom_cast_object(zval *readobj, zval *writeobj, int type TSRMLS_DC) +{ + phpg_gdkatom_t *pobj; + + if (type == IS_STRING) { + pobj = zend_object_store_get_object(readobj TSRMLS_CC); + if (!pobj->name) { + pobj->name = estrdup(gdk_atom_name(pobj->atom)); + } + if (!pobj->name) { + /* TODO obtain representation from __toString() perhaps */ + } + ZVAL_STRING(writeobj, pobj->name, 1); + return SUCCESS; + } + + return FAILURE; +} +#else static int phpg_gdkatom_cast_object(zval *readobj, zval *writeobj, int type, int should_free TSRMLS_DC) { phpg_gdkatom_t *pobj; @@ -81,12 +105,12 @@ if (should_free) { zval_dtor(&free_obj); } - return SUCCESS; } return FAILURE; } +#endif /* }}} */ /* {{{ PHP_GTK_API phpg_create_gdkatom() */ Index: main/phpg_exceptions.c =================================================================== RCS file: /repository/php-gtk/main/phpg_exceptions.c,v retrieving revision 1.5 diff -u -r1.5 phpg_exceptions.c --- main/phpg_exceptions.c 2 Sep 2005 09:25:05 -0000 1.5 +++ main/phpg_exceptions.c 26 May 2006 19:27:55 -0000 @@ -33,7 +33,11 @@ TSRMLS_FETCH(); INIT_CLASS_ENTRY(ce, "PhpGtkException", NULL); +#if ZEND_EXTENSION_API_NO > 220051025 + phpg_generic_exception = zend_register_internal_class_ex(&ce, zend_exception_get_default(TSRMLS_C), NULL TSRMLS_CC); +#else phpg_generic_exception = zend_register_internal_class_ex(&ce, zend_exception_get_default(), NULL TSRMLS_CC); +#endif phpg_generic_exception->ce_flags |= ZEND_ACC_FINAL; phpg_generic_exception->constructor->common.fn_flags |= ZEND_ACC_PROTECTED; Index: main/phpg_gpointer.c =================================================================== RCS file: /repository/php-gtk/main/phpg_gpointer.c,v retrieving revision 1.3 diff -u -r1.3 phpg_gpointer.c --- main/phpg_gpointer.c 31 Mar 2006 18:10:22 -0000 1.3 +++ main/phpg_gpointer.c 26 May 2006 19:28:54 -0000 @@ -28,7 +28,11 @@ PHP_GTK_EXPORT_CE(gpointer_ce) = NULL; static function_entry gpointer_methods[] = { +#if ZEND_EXTENSION_API_NO > 220051025 + PHP_ME_MAPPING(__construct, no_direct_constructor, NULL, 0) +#else PHP_ME_MAPPING(__construct, no_direct_constructor, NULL) +#endif { NULL, NULL, NULL } };