com gtk/php-gtk: Commit Steph's PHP_5_2 compat patc h.: ext/gtk+/gdk.overrides ext/gtk+/gtk.overrides ext/gtk+/gtkcontainer.overrides ext/gtk+/php_gtk+.h ext/gtk+/php_gtk+_types.c generator/generator.php generator/templates.php main/php_gtk.c main/php_ gtk.h main/phpg_atom.c main/phpg_exceptions.c m ain/phpg_gpointer.c

[email protected] (David Soria Parra)
Newsgroups php.gtk.cvs
Message-ID <[email protected]>
Commit:    34600d000b5fb052726a74119221190268974571
Author:    Andrei Zmievski <[email protected]>         Sat, 3 Jun 2006 18:07:41 +0000
Parents:   8104dade7190a7663c91164ac340fadd4d29bd0c
Branches:  master

Link:       http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=34600d000b5fb052726a74119221190268974571

Log:
Commit Steph's PHP_5_2 compat patch.

Changed paths:
  M  ext/gtk+/gdk.overrides
  M  ext/gtk+/gtk.overrides
  M  ext/gtk+/gtkcontainer.overrides
  M  ext/gtk+/php_gtk+.h
  M  ext/gtk+/php_gtk+_types.c
  M  generator/generator.php
  M  generator/templates.php
  M  main/php_gtk.c
  M  main/php_gtk.h
  M  main/phpg_atom.c
  M  main/phpg_exceptions.c
  M  main/phpg_gpointer.c
diff_34600d000b5fb052726a74119221190268974571.txt (text/plain, 10.2 KB)
34600d000b5fb052726a74119221190268974571
diff --git a/ext/gtk+/gdk.overrides b/ext/gtk+/gdk.overrides
index 02fa7c6..bbb8d78 100644
--- a/ext/gtk+/gdk.overrides
+++ b/ext/gtk+/gdk.overrides
@@ -247,7 +247,11 @@ override gdk_color_alloc
 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
 }
 %% }}}
 
diff --git a/ext/gtk+/gtk.overrides b/ext/gtk+/gtk.overrides
index 26e0e47..2280c84 100644
--- a/ext/gtk+/gtk.overrides
+++ b/ext/gtk+/gtk.overrides
@@ -2672,7 +2672,11 @@ override gtk_radio_button_group
 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
 }
 
 %% }}}
diff --git a/ext/gtk+/gtkcontainer.overrides b/ext/gtk+/gtkcontainer.overrides
index 2eec387..5955b99 100644
--- a/ext/gtk+/gtkcontainer.overrides
+++ b/ext/gtk+/gtkcontainer.overrides
@@ -36,5 +36,9 @@ override gtk_container_children
 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
 }
diff --git a/ext/gtk+/php_gtk+.h b/ext/gtk+/php_gtk+.h
index 8ba9304..d3c5295 100644
--- a/ext/gtk+/php_gtk+.h
+++ b/ext/gtk+/php_gtk+.h
@@ -41,7 +41,13 @@ PHP_GTK_API int phpg_tree_path_to_zval(GtkTreePath *path, zval **value TSRMLS_DC
 
 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);
diff --git a/ext/gtk+/php_gtk+_types.c b/ext/gtk+/php_gtk+_types.c
index dae26c7..5a05efe 100644
--- a/ext/gtk+/php_gtk+_types.c
+++ b/ext/gtk+/php_gtk+_types.c
@@ -524,7 +524,11 @@ static PHP_METHOD(GtkTreeModelRow, children)
 }
 
 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 @@ static zend_object_iterator_funcs treemodelrow_iter_funcs = {
 	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 @@ zend_object_iterator* phpg_modelrowiter_get_iterator(zend_class_entry *ce, zval
     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 @@ zend_object_iterator* phpg_treemodel_get_iterator(zend_class_entry *ce, zval *ob
     return (zend_object_iterator *) &iter_obj->ziter;
 }
 
-
 static zval* treemodelrow_read_dimension(zval *object, zval *offset, int type TSRMLS_DC)
 {
     phpg_modelrow_t *row;
diff --git a/generator/generator.php b/generator/generator.php
index def19b8..9dfd595 100644
--- a/generator/generator.php
+++ b/generator/generator.php
@@ -429,7 +429,7 @@ class Generator {
                     // 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 @@ class Generator {
                 // 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');
                 }
             }
         }
diff --git a/generator/templates.php b/generator/templates.php
index d9a6ece..abf08f2 100644
--- a/generator/templates.php
+++ b/generator/templates.php
@@ -192,7 +192,7 @@ const non_gtk_object_init = "
 
 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[] = {
diff --git a/main/php_gtk.c b/main/php_gtk.c
index fc57e8d..54c4a17 100644
--- a/main/php_gtk.c
+++ b/main/php_gtk.c
@@ -62,7 +62,7 @@ zend_module_entry gtk_module_entry = {
 	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 @@ ZEND_GET_MODULE(gtk)
 
 static void php_gtk_startup_shared_extensions(int module_number);
 
-
 static ZEND_INI_MH(OnUpdateCodepage)
 {
 	char **p;
diff --git a/main/php_gtk.h b/main/php_gtk.h
index 49548f5..f481097 100644
--- a/main/php_gtk.h
+++ b/main/php_gtk.h
@@ -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"
 
diff --git a/main/phpg_atom.c b/main/phpg_atom.c
index b9b5750..271f5d0 100644
--- a/main/phpg_atom.c
+++ b/main/phpg_atom.c
@@ -30,7 +30,11 @@ PHP_GTK_EXPORT_CE(gdkatom_ce) = NULL;
 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 int phpg_gdkatom_compare_objects(zval *zobj1, zval *zobj2 TSRMLS_DC)
 /* }}} */
 
 /* {{{ 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 @@ static int phpg_gdkatom_cast_object(zval *readobj, zval *writeobj, int type, int
         if (should_free) {
             zval_dtor(&free_obj);
         }
-
         return SUCCESS;
     }
 
     return FAILURE;
 }
+#endif
 /* }}} */
 
 /* {{{ PHP_GTK_API phpg_create_gdkatom() */
diff --git a/main/phpg_exceptions.c b/main/phpg_exceptions.c
index 585ec34..0c42db3 100644
--- a/main/phpg_exceptions.c
+++ b/main/phpg_exceptions.c
@@ -33,7 +33,11 @@ void phpg_register_exceptions()
 	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;
 
diff --git a/main/phpg_gpointer.c b/main/phpg_gpointer.c
index fa9e899..f040f7e 100644
--- a/main/phpg_gpointer.c
+++ b/main/phpg_gpointer.c
@@ -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 }
 };
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.