cvs: php-src /ext/spl spl_array.c /ext/spl/examples class_tree.php

From: Date: Mon, 03 Oct 2005 12:55:11 +0000
Subject: cvs: php-src /ext/spl spl_array.c /ext/spl/examples class_tree.php
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-34255@lists.php.net to get a copy of this message
helly Mon Oct 3 08:55:11 2005 EDT Modified files: /php-src/ext/spl spl_array.c /php-src/ext/spl/examples class_tree.php Log: - Add sorting to ArrayObject/Iterator http://cvs.php.net/diff.php/php-src/ext/spl/spl_array.c?r1=1.81&r2=1.82&ty=u Index: php-src/ext/spl/spl_array.c diff -u php-src/ext/spl/spl_array.c:1.81 php-src/ext/spl/spl_array.c:1.82 --- php-src/ext/spl/spl_array.c:1.81 Mon Oct 3 05:12:38 2005 +++ php-src/ext/spl/spl_array.c Mon Oct 3 08:55:08 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: spl_array.c,v 1.81 2005/10/03 09:12:38 helly Exp $ */ +/* $Id: spl_array.c,v 1.82 2005/10/03 12:55:08 helly Exp $ */ #ifdef HAVE_CONFIG_H # include "config.h" @@ -1051,6 +1051,35 @@ RETURN_LONG(count); } /* }}} */ +static void spl_array_method(INTERNAL_FUNCTION_PARAMETERS, char *fname, int fname_len) +{ + spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(getThis() TSRMLS_CC); + HashTable *aht = spl_array_get_hash_table(intern, 0 TSRMLS_CC); + zval tmp; + + INIT_PZVAL(&tmp); + Z_TYPE(tmp) = IS_ARRAY; + Z_ARRVAL(tmp) = aht; + + zend_call_method(NULL, NULL, NULL, fname, fname_len, &return_value, 1, &tmp, NULL TSRMLS_CC); +} + +#define SPL_ARRAY_METHOD(cname, fname) \ +SPL_METHOD(cname, fname) \ +{ \ + spl_array_method(INTERNAL_FUNCTION_PARAM_PASSTHRU, #fname, sizeof(#fname)-1); \ +} + +/* {{{ proto int ArrayObject::asort() + proto int ArrayIterator::asort() + Sort the entries by values. */ +SPL_ARRAY_METHOD(Array, asort) + +/* {{{ proto int ArrayObject::ksort() + proto int ArrayIterator::ksort() + Sort the entries by key. */ +SPL_ARRAY_METHOD(Array, ksort) + /* {{{ proto mixed|NULL ArrayIterator::current() Return current array entry */ SPL_METHOD(Array, current) @@ -1254,16 +1283,18 @@ ZEND_END_ARG_INFO(); static zend_function_entry spl_funcs_ArrayObject[] = { - SPL_ME(Array, __construct, arginfo_array___construct, ZEND_ACC_PUBLIC) - SPL_ME(Array, offsetExists, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) - SPL_ME(Array, offsetGet, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) - SPL_ME(Array, offsetSet, arginfo_array_offsetSet, ZEND_ACC_PUBLIC) - SPL_ME(Array, offsetUnset, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) - SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC) - SPL_ME(Array, getArrayCopy, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, count, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, getFlags, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, setFlags, arginfo_array_setFlags, ZEND_ACC_PUBLIC) + SPL_ME(Array, __construct, arginfo_array___construct, ZEND_ACC_PUBLIC) + SPL_ME(Array, offsetExists, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) + SPL_ME(Array, offsetGet, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) + SPL_ME(Array, offsetSet, arginfo_array_offsetSet, ZEND_ACC_PUBLIC) + SPL_ME(Array, offsetUnset, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) + SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC) + SPL_ME(Array, getArrayCopy, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, count, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, getFlags, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, setFlags, arginfo_array_setFlags, ZEND_ACC_PUBLIC) + SPL_ME(Array, asort, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, ksort, NULL, ZEND_ACC_PUBLIC) /* ArrayObject specific */ SPL_ME(Array, getIterator, NULL, ZEND_ACC_PUBLIC) SPL_ME(Array, exchangeArray, arginfo_array_exchangeArray, ZEND_ACC_PUBLIC) @@ -1273,23 +1304,25 @@ }; static zend_function_entry spl_funcs_ArrayIterator[] = { - SPL_ME(Array, __construct, arginfo_array___construct, ZEND_ACC_PUBLIC) - SPL_ME(Array, offsetExists, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) - SPL_ME(Array, offsetGet, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) - SPL_ME(Array, offsetSet, arginfo_array_offsetSet, ZEND_ACC_PUBLIC) - SPL_ME(Array, offsetUnset, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) - SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC) - SPL_ME(Array, getArrayCopy, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, count, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, getFlags, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, setFlags, arginfo_array_setFlags, ZEND_ACC_PUBLIC) + SPL_ME(Array, __construct, arginfo_array___construct, ZEND_ACC_PUBLIC) + SPL_ME(Array, offsetExists, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) + SPL_ME(Array, offsetGet, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) + SPL_ME(Array, offsetSet, arginfo_array_offsetSet, ZEND_ACC_PUBLIC) + SPL_ME(Array, offsetUnset, arginfo_array_offsetGet, ZEND_ACC_PUBLIC) + SPL_ME(Array, append, arginfo_array_append, ZEND_ACC_PUBLIC) + SPL_ME(Array, getArrayCopy, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, count, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, getFlags, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, setFlags, arginfo_array_setFlags, ZEND_ACC_PUBLIC) + SPL_ME(Array, asort, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, ksort, NULL, ZEND_ACC_PUBLIC) /* ArrayIterator specific */ - SPL_ME(Array, rewind, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, current, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, key, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, next, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, valid, NULL, ZEND_ACC_PUBLIC) - SPL_ME(Array, seek, arginfo_array_seek, ZEND_ACC_PUBLIC) + SPL_ME(Array, rewind, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, current, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, key, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, next, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, valid, NULL, ZEND_ACC_PUBLIC) + SPL_ME(Array, seek, arginfo_array_seek, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} }; http://cvs.php.net/diff.php/php-src/ext/spl/examples/class_tree.php?r1=1.2&r2=1.3&ty=u Index: php-src/ext/spl/examples/class_tree.php diff -u php-src/ext/spl/examples/class_tree.php:1.2 php-src/ext/spl/examples/class_tree.php:1.3 --- php-src/ext/spl/examples/class_tree.php:1.2 Mon Oct 3 05:12:39 2005 +++ php-src/ext/spl/examples/class_tree.php Mon Oct 3 08:55:11 2005 @@ -5,6 +5,7 @@ * @ingroup Examples * @author Marcus Boerger * @date 2003 - 2005 + * @version 1.1 * * Usage: php class_tree.php \<class\> * @@ -60,6 +61,7 @@ } } } + $this->ksort(); } function current()

« previous php.cvs (#34255) next »