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 }
};