From 6c810b0d4c1b12c675f69f5cfb32f26b6179d460 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 27 Sep 2007 18:00:48 +0000 Subject: Improved memory usage by movig constants to read only memory. (Dmitry, Pierre) --- ext/spl/php_spl.c | 6 +++--- ext/spl/spl_array.c | 6 +++--- ext/spl/spl_directory.c | 10 +++++----- ext/spl/spl_functions.c | 8 ++++---- ext/spl/spl_functions.h | 8 ++++---- ext/spl/spl_iterators.c | 36 ++++++++++++++++++------------------ ext/spl/spl_observer.c | 6 +++--- ext/spl/spl_sxe.c | 2 +- 8 files changed, 41 insertions(+), 41 deletions(-) (limited to 'ext/spl') diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index 10ffb95bc4..c4c3948344 100755 --- a/ext/spl/php_spl.c +++ b/ext/spl/php_spl.c @@ -49,7 +49,7 @@ ZEND_DECLARE_MODULE_GLOBALS(spl) /* {{{ spl_functions_none */ -zend_function_entry spl_functions_none[] = { +const zend_function_entry spl_functions_none[] = { {NULL, NULL, NULL} }; /* }}} */ @@ -690,7 +690,7 @@ ZEND_END_ARG_INFO(); /* {{{ spl_functions */ -zend_function_entry spl_functions[] = { +const zend_function_entry spl_functions[] = { PHP_FE(spl_classes, NULL) PHP_FE(spl_autoload, NULL) PHP_FE(spl_autoload_extensions, NULL) @@ -749,7 +749,7 @@ PHP_RSHUTDOWN_FUNCTION(spl) /* {{{ */ } /* }}} */ #ifdef HAVE_SIMPLEXML -static zend_module_dep spl_deps[] = { +static const zend_module_dep spl_deps[] = { ZEND_MOD_REQUIRED("libxml") ZEND_MOD_REQUIRED("simplexml") {NULL, NULL, NULL} diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index e7520915de..7fa11bd882 100755 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -1437,7 +1437,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_array_uXsort, 0) ZEND_ARG_INFO(0, cmp_function ) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_ArrayObject[] = { +static const 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) @@ -1462,7 +1462,7 @@ static zend_function_entry spl_funcs_ArrayObject[] = { {NULL, NULL, NULL} }; -static zend_function_entry spl_funcs_ArrayIterator[] = { +static const 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) @@ -1489,7 +1489,7 @@ static zend_function_entry spl_funcs_ArrayIterator[] = { {NULL, NULL, NULL} }; -static zend_function_entry spl_funcs_RecursiveArrayIterator[] = { +static const zend_function_entry spl_funcs_RecursiveArrayIterator[] = { SPL_ME(Array, hasChildren, NULL, ZEND_ACC_PUBLIC) SPL_ME(Array, getChildren, NULL, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index 1931dbbeb0..ccf69e2409 100755 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -1409,7 +1409,7 @@ ZEND_END_ARG_INFO() /* the method table */ /* each method can have its own parameters and visibility */ -static zend_function_entry spl_SplFileInfo_functions[] = { +static const zend_function_entry spl_SplFileInfo_functions[] = { SPL_ME(SplFileInfo, __construct, arginfo_info___construct, ZEND_ACC_PUBLIC) SPL_ME(SplFileInfo, getPath, NULL, ZEND_ACC_PUBLIC) SPL_ME(SplFileInfo, getFilename, NULL, ZEND_ACC_PUBLIC) @@ -1450,7 +1450,7 @@ ZEND_END_ARG_INFO() /* the method table */ /* each method can have its own parameters and visibility */ -static zend_function_entry spl_DirectoryIterator_functions[] = { +static const zend_function_entry spl_DirectoryIterator_functions[] = { SPL_ME(DirectoryIterator, __construct, arginfo_dir___construct, ZEND_ACC_PUBLIC) SPL_ME(DirectoryIterator, getFilename, NULL, ZEND_ACC_PUBLIC) SPL_ME(DirectoryIterator, getBasename, arginfo_optinalSuffix, ZEND_ACC_PUBLIC) @@ -1475,7 +1475,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_r_dir_hasChildren, 0, 0, 0) ZEND_ARG_INFO(0, allow_links) ZEND_END_ARG_INFO() -static zend_function_entry spl_RecursiveDirectoryIterator_functions[] = { +static const zend_function_entry spl_RecursiveDirectoryIterator_functions[] = { SPL_ME(RecursiveDirectoryIterator, __construct, arginfo_r_dir___construct, ZEND_ACC_PUBLIC) SPL_ME(RecursiveDirectoryIterator, rewind, NULL, ZEND_ACC_PUBLIC) SPL_ME(RecursiveDirectoryIterator, next, NULL, ZEND_ACC_PUBLIC) @@ -2280,7 +2280,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_seek, 0, 0, 1) ZEND_ARG_INFO(0, line_pos) ZEND_END_ARG_INFO() -static zend_function_entry spl_SplFileObject_functions[] = { +static const zend_function_entry spl_SplFileObject_functions[] = { SPL_ME(SplFileObject, __construct, arginfo_file_object___construct, ZEND_ACC_PUBLIC) SPL_ME(SplFileObject, rewind, NULL, ZEND_ACC_PUBLIC) SPL_ME(SplFileObject, eof, NULL, ZEND_ACC_PUBLIC) @@ -2321,7 +2321,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_temp_file_object___construct, 0, 0, 0) ZEND_ARG_INFO(0, max_memory) ZEND_END_ARG_INFO() -static zend_function_entry spl_SplTempFileObject_functions[] = { +static const zend_function_entry spl_SplTempFileObject_functions[] = { SPL_ME(SplTempFileObject, __construct, arginfo_temp_file_object___construct, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} }; diff --git a/ext/spl/spl_functions.c b/ext/spl/spl_functions.c index 0af41f2c54..31acfee436 100755 --- a/ext/spl/spl_functions.c +++ b/ext/spl/spl_functions.c @@ -36,7 +36,7 @@ void spl_destroy_class(zend_class_entry ** ppce) /* }}} */ /* {{{ spl_register_interface */ -void spl_register_interface(zend_class_entry ** ppce, char * class_name, zend_function_entry * functions TSRMLS_DC) +void spl_register_interface(zend_class_entry ** ppce, char * class_name, const zend_function_entry * functions TSRMLS_DC) { zend_class_entry ce; @@ -47,7 +47,7 @@ void spl_register_interface(zend_class_entry ** ppce, char * class_name, zend_fu /* }}} */ /* {{{ spl_register_std_class */ -PHPAPI void spl_register_std_class(zend_class_entry ** ppce, char * class_name, void * obj_ctor, zend_function_entry * function_list TSRMLS_DC) +PHPAPI void spl_register_std_class(zend_class_entry ** ppce, char * class_name, void * obj_ctor, const zend_function_entry * function_list TSRMLS_DC) { zend_class_entry ce; @@ -63,7 +63,7 @@ PHPAPI void spl_register_std_class(zend_class_entry ** ppce, char * class_name, /* }}} */ /* {{{ spl_register_sub_class */ -PHPAPI void spl_register_sub_class(zend_class_entry ** ppce, zend_class_entry * parent_ce, char * class_name, void *obj_ctor, zend_function_entry * function_list TSRMLS_DC) +PHPAPI void spl_register_sub_class(zend_class_entry ** ppce, zend_class_entry * parent_ce, char * class_name, void *obj_ctor, const zend_function_entry * function_list TSRMLS_DC) { zend_class_entry ce; @@ -88,7 +88,7 @@ void spl_register_parent_ce(zend_class_entry * class_entry, zend_class_entry * p /* }}} */ /* {{{ spl_register_functions */ -void spl_register_functions(zend_class_entry * class_entry, zend_function_entry * function_list TSRMLS_DC) +void spl_register_functions(zend_class_entry * class_entry, const zend_function_entry * function_list TSRMLS_DC) { zend_register_functions(class_entry, function_list, &class_entry->function_table, MODULE_PERSISTENT TSRMLS_CC); } diff --git a/ext/spl/spl_functions.h b/ext/spl/spl_functions.h index 79aca54cb6..0db207b754 100755 --- a/ext/spl/spl_functions.h +++ b/ext/spl/spl_functions.h @@ -57,13 +57,13 @@ typedef zend_object_value (*create_object_func_t)(zend_class_entry *class_type T void spl_destroy_class(zend_class_entry ** ppce); -void spl_register_std_class(zend_class_entry ** ppce, char * class_name, create_object_func_t ctor, zend_function_entry * function_list TSRMLS_DC); -void spl_register_sub_class(zend_class_entry ** ppce, zend_class_entry * parent_ce, char * class_name, create_object_func_t ctor, zend_function_entry * function_list TSRMLS_DC); +void spl_register_std_class(zend_class_entry ** ppce, char * class_name, create_object_func_t ctor, const zend_function_entry * function_list TSRMLS_DC); +void spl_register_sub_class(zend_class_entry ** ppce, zend_class_entry * parent_ce, char * class_name, create_object_func_t ctor, const zend_function_entry * function_list TSRMLS_DC); -void spl_register_interface(zend_class_entry ** ppce, char * class_name, zend_function_entry *functions TSRMLS_DC); +void spl_register_interface(zend_class_entry ** ppce, char * class_name, const zend_function_entry *functions TSRMLS_DC); void spl_register_parent_ce(zend_class_entry * class_entry, zend_class_entry * parent_class TSRMLS_DC); -void spl_register_functions(zend_class_entry * class_entry, zend_function_entry * function_list TSRMLS_DC); +void spl_register_functions(zend_class_entry * class_entry, const zend_function_entry * function_list TSRMLS_DC); void spl_register_property( zend_class_entry * class_entry, char *prop_name, int prop_name_len, int prop_flags TSRMLS_DC); /* sub: whether to allow subclasses/interfaces diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index 75bfeed681..5c1fe4d722 100755 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -59,7 +59,7 @@ PHPAPI zend_class_entry *spl_ce_RegexIterator; PHPAPI zend_class_entry *spl_ce_RecursiveRegexIterator; PHPAPI zend_class_entry *spl_ce_Countable; -zend_function_entry spl_funcs_RecursiveIterator[] = { +const zend_function_entry spl_funcs_RecursiveIterator[] = { SPL_ABSTRACT_ME(RecursiveIterator, hasChildren, NULL) SPL_ABSTRACT_ME(RecursiveIterator, getChildren, NULL) {NULL, NULL, NULL} @@ -765,7 +765,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_recursive_it_setMaxDepth, 0, 0, 0) ZEND_ARG_INFO(0, max_depth) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_RecursiveIteratorIterator[] = { +static const zend_function_entry spl_funcs_RecursiveIteratorIterator[] = { SPL_ME(RecursiveIteratorIterator, __construct, arginfo_recursive_it___construct, ZEND_ACC_PUBLIC) SPL_ME(RecursiveIteratorIterator, rewind, NULL, ZEND_ACC_PUBLIC) SPL_ME(RecursiveIteratorIterator, valid, NULL, ZEND_ACC_PUBLIC) @@ -1615,7 +1615,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_filter_it___construct, 0) ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_FilterIterator[] = { +static const zend_function_entry spl_funcs_FilterIterator[] = { SPL_ME(FilterIterator, __construct, arginfo_filter_it___construct, ZEND_ACC_PUBLIC) SPL_ME(FilterIterator, rewind, NULL, ZEND_ACC_PUBLIC) SPL_ME(dual_it, valid, NULL, ZEND_ACC_PUBLIC) @@ -1632,14 +1632,14 @@ ZEND_BEGIN_ARG_INFO(arginfo_parent_it___construct, 0) ZEND_ARG_OBJ_INFO(0, iterator, RecursiveIterator, 0) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_RecursiveFilterIterator[] = { +static const zend_function_entry spl_funcs_RecursiveFilterIterator[] = { SPL_ME(RecursiveFilterIterator, __construct, arginfo_parent_it___construct, ZEND_ACC_PUBLIC) SPL_ME(RecursiveFilterIterator, hasChildren, NULL, ZEND_ACC_PUBLIC) SPL_ME(RecursiveFilterIterator, getChildren, NULL, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} }; -static zend_function_entry spl_funcs_ParentIterator[] = { +static const zend_function_entry spl_funcs_ParentIterator[] = { SPL_ME(ParentIterator, __construct, arginfo_parent_it___construct, ZEND_ACC_PUBLIC) SPL_MA(ParentIterator, accept, RecursiveFilterIterator, hasChildren, NULL, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} @@ -1670,7 +1670,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_regex_it_set_preg_flags, 0, 0, 1) ZEND_ARG_INFO(0, preg_flags) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_RegexIterator[] = { +static const zend_function_entry spl_funcs_RegexIterator[] = { SPL_ME(RegexIterator, __construct, arginfo_regex_it___construct, ZEND_ACC_PUBLIC) SPL_ME(RegexIterator, accept, NULL, ZEND_ACC_PUBLIC) SPL_ME(RegexIterator, getMode, NULL, ZEND_ACC_PUBLIC) @@ -1691,7 +1691,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_rec_regex_it___construct, 0, 0, 2) ZEND_ARG_INFO(0, preg_flags) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_RecursiveRegexIterator[] = { +static const zend_function_entry spl_funcs_RecursiveRegexIterator[] = { SPL_ME(RecursiveRegexIterator, __construct, arginfo_rec_regex_it___construct, ZEND_ACC_PUBLIC) SPL_ME(RecursiveFilterIterator, hasChildren, NULL, ZEND_ACC_PUBLIC) SPL_ME(RecursiveRegexIterator, getChildren, NULL, ZEND_ACC_PUBLIC) @@ -1823,7 +1823,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_seekable_it_seek, 0) ZEND_ARG_INFO(0, position) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_SeekableIterator[] = { +static const zend_function_entry spl_funcs_SeekableIterator[] = { SPL_ABSTRACT_ME(SeekableIterator, seek, arginfo_seekable_it_seek) {NULL, NULL, NULL} }; @@ -1840,7 +1840,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_limit_it_seek, 0) ZEND_ARG_INFO(0, position) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_LimitIterator[] = { +static const zend_function_entry spl_funcs_LimitIterator[] = { SPL_ME(LimitIterator, __construct, arginfo_limit_it___construct, ZEND_ACC_PUBLIC) SPL_ME(LimitIterator, rewind, NULL, ZEND_ACC_PUBLIC) SPL_ME(LimitIterator, valid, NULL, ZEND_ACC_PUBLIC) @@ -2236,7 +2236,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_caching_it_offsetSet, 0) ZEND_ARG_INFO(0, newval) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_CachingIterator[] = { +static const zend_function_entry spl_funcs_CachingIterator[] = { SPL_ME(CachingIterator, __construct, arginfo_caching_it___construct, ZEND_ACC_PUBLIC) SPL_ME(CachingIterator, rewind, NULL, ZEND_ACC_PUBLIC) SPL_ME(CachingIterator, valid, NULL, ZEND_ACC_PUBLIC) @@ -2296,7 +2296,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_caching_rec_it___construct, 0, ZEND_RETURN_VALUE, ZEND_ARG_INFO(0, flags) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_RecursiveCachingIterator[] = { +static const zend_function_entry spl_funcs_RecursiveCachingIterator[] = { SPL_ME(RecursiveCachingIterator, __construct, arginfo_caching_rec_it___construct, ZEND_ACC_PUBLIC) SPL_ME(RecursiveCachingIterator, hasChildren, NULL, ZEND_ACC_PUBLIC) SPL_ME(RecursiveCachingIterator, getChildren, NULL, ZEND_ACC_PUBLIC) @@ -2315,7 +2315,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_iterator_it___construct, 0) ZEND_ARG_OBJ_INFO(0, iterator, Traversable, 0) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_IteratorIterator[] = { +static const zend_function_entry spl_funcs_IteratorIterator[] = { SPL_ME(IteratorIterator, __construct, arginfo_iterator_it___construct, ZEND_ACC_PUBLIC) SPL_ME(dual_it, rewind, NULL, ZEND_ACC_PUBLIC) SPL_ME(dual_it, valid, NULL, ZEND_ACC_PUBLIC) @@ -2399,7 +2399,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_norewind_it___construct, 0) ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_NoRewindIterator[] = { +static const zend_function_entry spl_funcs_NoRewindIterator[] = { SPL_ME(NoRewindIterator, __construct, arginfo_norewind_it___construct, ZEND_ACC_PUBLIC) SPL_ME(NoRewindIterator, rewind, NULL, ZEND_ACC_PUBLIC) SPL_ME(NoRewindIterator, valid, NULL, ZEND_ACC_PUBLIC) @@ -2436,7 +2436,7 @@ SPL_METHOD(InfiniteIterator, next) } } /* }}} */ -static zend_function_entry spl_funcs_InfiniteIterator[] = { +static const zend_function_entry spl_funcs_InfiniteIterator[] = { SPL_ME(InfiniteIterator, __construct, arginfo_norewind_it___construct, ZEND_ACC_PUBLIC) SPL_ME(InfiniteIterator, next, NULL, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} @@ -2475,7 +2475,7 @@ SPL_METHOD(EmptyIterator, next) { } /* }}} */ -static zend_function_entry spl_funcs_EmptyIterator[] = { +static const zend_function_entry spl_funcs_EmptyIterator[] = { SPL_ME(EmptyIterator, rewind, NULL, ZEND_ACC_PUBLIC) SPL_ME(EmptyIterator, valid, NULL, ZEND_ACC_PUBLIC) SPL_ME(EmptyIterator, key, NULL, ZEND_ACC_PUBLIC) @@ -2632,7 +2632,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_append_it_append, 0) ZEND_ARG_OBJ_INFO(0, iterator, Iterator, 0) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_AppendIterator[] = { +static const zend_function_entry spl_funcs_AppendIterator[] = { SPL_ME(AppendIterator, __construct, NULL, ZEND_ACC_PUBLIC) SPL_ME(AppendIterator, append, arginfo_append_it_append, ZEND_ACC_PUBLIC) SPL_ME(AppendIterator, rewind, NULL, ZEND_ACC_PUBLIC) @@ -2823,12 +2823,12 @@ PHP_FUNCTION(iterator_apply) } /* }}} */ -static zend_function_entry spl_funcs_OuterIterator[] = { +static const zend_function_entry spl_funcs_OuterIterator[] = { SPL_ABSTRACT_ME(OuterIterator, getInnerIterator, NULL) {NULL, NULL, NULL} }; -static zend_function_entry spl_funcs_Countable[] = { +static const zend_function_entry spl_funcs_Countable[] = { SPL_ABSTRACT_ME(Countable, count, NULL) {NULL, NULL, NULL} }; diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c index e3b815bdd3..1dd4c5c859 100755 --- a/ext/spl/spl_observer.c +++ b/ext/spl/spl_observer.c @@ -48,7 +48,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_SplObserver_update, 0) ZEND_ARG_OBJ_INFO(0, SplSubject, SplSubject, 0) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_SplObserver[] = { +static const zend_function_entry spl_funcs_SplObserver[] = { SPL_ABSTRACT_ME(SplObserver, update, arginfo_SplObserver_update) {NULL, NULL, NULL} }; @@ -63,7 +63,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_SplSubject_notify, 0, 0, 1) ZEND_ARG_OBJ_INFO(0, ignore, SplObserver, 1) ZEND_END_ARG_INFO();*/ -static zend_function_entry spl_funcs_SplSubject[] = { +static const zend_function_entry spl_funcs_SplSubject[] = { SPL_ABSTRACT_ME(SplSubject, attach, arginfo_SplSubject_attach) SPL_ABSTRACT_ME(SplSubject, detach, arginfo_SplSubject_attach) SPL_ABSTRACT_ME(SplSubject, notify, NULL) @@ -414,7 +414,7 @@ ZEND_BEGIN_ARG_INFO(arginfo_Serialized, 0) ZEND_ARG_INFO(0, serialized) ZEND_END_ARG_INFO(); -static zend_function_entry spl_funcs_SplObjectStorage[] = { +static const zend_function_entry spl_funcs_SplObjectStorage[] = { SPL_ME(SplObjectStorage, attach, arginfo_Object, 0) SPL_ME(SplObjectStorage, detach, arginfo_Object, 0) SPL_ME(SplObjectStorage, contains, arginfo_Object, 0) diff --git a/ext/spl/spl_sxe.c b/ext/spl/spl_sxe.c index 21b53c3ee0..433d30bd7c 100755 --- a/ext/spl/spl_sxe.c +++ b/ext/spl/spl_sxe.c @@ -156,7 +156,7 @@ SPL_METHOD(SimpleXMLIterator, count) RETURN_LONG(count); } -static zend_function_entry spl_funcs_SimpleXMLIterator[] = { +static const zend_function_entry spl_funcs_SimpleXMLIterator[] = { SPL_ME(SimpleXMLIterator, rewind, NULL, ZEND_ACC_PUBLIC) SPL_ME(SimpleXMLIterator, valid, NULL, ZEND_ACC_PUBLIC) SPL_ME(SimpleXMLIterator, current, NULL, ZEND_ACC_PUBLIC) -- cgit v1.2.1