helly           Sat Oct 18 14:43:32 2003 EDT

  Modified files:              
    /php-src/ext/sqlite sqlite.c 
  Log:
  Fix class/iterator relationship & handling
  
Index: php-src/ext/sqlite/sqlite.c
diff -u php-src/ext/sqlite/sqlite.c:1.99 php-src/ext/sqlite/sqlite.c:1.100
--- php-src/ext/sqlite/sqlite.c:1.99    Fri Oct 17 13:21:55 2003
+++ php-src/ext/sqlite/sqlite.c Sat Oct 18 14:43:31 2003
@@ -17,7 +17,7 @@
    |          Marcus Boerger <[EMAIL PROTECTED]>                              |
    +----------------------------------------------------------------------+
 
-   $Id: sqlite.c,v 1.99 2003/10/17 17:21:55 helly Exp $ 
+   $Id: sqlite.c,v 1.100 2003/10/18 18:43:31 helly Exp $ 
 */
 
 #ifdef HAVE_CONFIG_H
@@ -948,25 +948,25 @@
        }
 }
 
-zend_class_iterator_funcs sqlite_ub_query_iterator_funcs;
-
-zend_object_iterator *sqlite_ub_query_get_iterator(zend_class_entry *ce, zval *object 
TSRMLS_DC)
-{
-       sqlite_object_iterator *iterator = emalloc(sizeof(sqlite_object_iterator));
-
-       sqlite_object *obj = (sqlite_object*) zend_object_store_get_object(object 
TSRMLS_CC);
-
-       object->refcount++;
-       iterator->it.data = (void*)object;
-       iterator->it.funcs = &sqlite_ub_query_iterator_funcs.funcs;
-       iterator->res = obj->u.res;
-       iterator->value = NULL;
-       return (zend_object_iterator*)iterator;
-}
+zend_object_iterator_funcs sqlite_ub_query_iterator_funcs = {
+       sqlite_iterator_dtor,
+       sqlite_iterator_has_more,
+       sqlite_iterator_get_current_data,
+       sqlite_iterator_get_current_key,
+       sqlite_iterator_move_forward,
+       NULL
+};
 
-zend_class_iterator_funcs sqlite_query_iterator_funcs;
+zend_object_iterator_funcs sqlite_query_iterator_funcs = {
+       sqlite_iterator_dtor,
+       sqlite_iterator_has_more,
+       sqlite_iterator_get_current_data,
+       sqlite_iterator_get_current_key,
+       sqlite_iterator_move_forward,
+       sqlite_iterator_rewind
+};
 
-zend_object_iterator *sqlite_query_get_iterator(zend_class_entry *ce, zval *object 
TSRMLS_DC)
+zend_object_iterator *sqlite_get_iterator(zend_class_entry *ce, zval *object 
TSRMLS_DC)
 {
        sqlite_object_iterator *iterator = emalloc(sizeof(sqlite_object_iterator));
 
@@ -974,7 +974,7 @@
 
        object->refcount++;
        iterator->it.data = (void*)object;
-       iterator->it.funcs = &sqlite_query_iterator_funcs.funcs;
+       iterator->it.funcs = ce->iterator_funcs.funcs;
        iterator->res = obj->u.res;
        iterator->value = NULL;
        return (zend_object_iterator*)iterator;
@@ -996,20 +996,11 @@
        sqlite_object_handlers_query.get_class_entry = sqlite_get_ce_query;
        sqlite_object_handlers_ub_query.get_class_entry = sqlite_get_ce_ub_query;
        
-       sqlite_ce_ub_query->get_iterator = sqlite_ub_query_get_iterator;
-       sqlite_ce_ub_query->iterator_funcs = &sqlite_ub_query_iterator_funcs;
-       memset(&sqlite_ub_query_iterator_funcs, 0, sizeof(zend_class_iterator_funcs));
-       sqlite_ub_query_iterator_funcs.funcs.dtor = sqlite_iterator_dtor;
-       sqlite_ub_query_iterator_funcs.funcs.rewind = NULL;
-       sqlite_ub_query_iterator_funcs.funcs.has_more = sqlite_iterator_has_more;
-       sqlite_ub_query_iterator_funcs.funcs.get_current_data = 
sqlite_iterator_get_current_data;
-       sqlite_ub_query_iterator_funcs.funcs.get_current_key = 
sqlite_iterator_get_current_key;
-       sqlite_ub_query_iterator_funcs.funcs.move_forward = 
sqlite_iterator_move_forward;
-
-       sqlite_ce_query->get_iterator = sqlite_query_get_iterator;
-       sqlite_ce_query->iterator_funcs = &sqlite_query_iterator_funcs;
-       memcpy(&sqlite_query_iterator_funcs, &sqlite_ub_query_iterator_funcs, 
sizeof(zend_class_iterator_funcs));
-       sqlite_query_iterator_funcs.funcs.rewind = sqlite_iterator_rewind;
+       sqlite_ce_ub_query->get_iterator = sqlite_get_iterator;
+       sqlite_ce_ub_query->iterator_funcs.funcs = &sqlite_ub_query_iterator_funcs;
+
+       sqlite_ce_query->get_iterator = sqlite_get_iterator;
+       sqlite_ce_query->iterator_funcs.funcs = &sqlite_query_iterator_funcs;
 
        ZEND_INIT_MODULE_GLOBALS(sqlite, init_sqlite_globals, NULL);
 
@@ -1079,7 +1070,7 @@
 {
        php_info_print_table_start();
        php_info_print_table_header(2, "SQLite support", "enabled");
-       php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " 
$Id: sqlite.c,v 1.99 2003/10/17 17:21:55 helly Exp $");
+       php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " 
$Id: sqlite.c,v 1.100 2003/10/18 18:43:31 helly Exp $");
        php_info_print_table_row(2, "SQLite Library", sqlite_libversion());
        php_info_print_table_row(2, "SQLite Encoding", sqlite_libencoding());
        php_info_print_table_end();

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to