diff options
author | Marcus Boerger <helly@php.net> | 2004-11-01 20:57:23 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2004-11-01 20:57:23 +0000 |
commit | 2ce7bcd742652d84c42b7e49472ca2f81efe363e (patch) | |
tree | 72f6b992926fb0ffdaecedf56979e55e20447e6c | |
parent | 4dbf6a530df57d74d2844a8fd1ea6826e4002fd3 (diff) | |
download | php-git-2ce7bcd742652d84c42b7e49472ca2f81efe363e.tar.gz |
- Allow direct access to spl class entries (SPL cannot be build shared)
-rwxr-xr-x | ext/spl/spl_array.c | 6 | ||||
-rwxr-xr-x | ext/spl/spl_array.h | 6 | ||||
-rwxr-xr-x | ext/spl/spl_directory.c | 4 | ||||
-rwxr-xr-x | ext/spl/spl_directory.h | 4 | ||||
-rwxr-xr-x | ext/spl/spl_exceptions.c | 24 | ||||
-rwxr-xr-x | ext/spl/spl_exceptions.h | 26 | ||||
-rwxr-xr-x | ext/spl/spl_iterators.c | 28 | ||||
-rwxr-xr-x | ext/spl/spl_iterators.h | 28 | ||||
-rw-r--r-- | ext/standard/array.c | 12 |
9 files changed, 67 insertions, 71 deletions
diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index d13b36f2da..c3a037d9dd 100755 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -114,12 +114,12 @@ static zend_function_entry spl_funcs_Countable[] = { }; zend_object_handlers spl_handler_ArrayObject; -zend_class_entry * spl_ce_ArrayObject; +PHPAPI zend_class_entry *spl_ce_ArrayObject; zend_object_handlers spl_handler_ArrayIterator; -zend_class_entry * spl_ce_ArrayIterator; +PHPAPI zend_class_entry *spl_ce_ArrayIterator; -zend_class_entry *spl_ce_Countable; +PHPAPI zend_class_entry *spl_ce_Countable; typedef struct _spl_array_object { zend_object std; diff --git a/ext/spl/spl_array.h b/ext/spl/spl_array.h index f075be6f91..9bbe5a4711 100755 --- a/ext/spl/spl_array.h +++ b/ext/spl/spl_array.h @@ -24,9 +24,9 @@ #include "php.h" #include "php_spl.h" -extern zend_class_entry *spl_ce_ArrayObject; -extern zend_class_entry *spl_ce_ArrayIterator; -extern zend_class_entry *spl_ce_Countable; +extern PHPAPI zend_class_entry *spl_ce_ArrayObject; +extern PHPAPI zend_class_entry *spl_ce_ArrayIterator; +extern PHPAPI zend_class_entry *spl_ce_Countable; PHP_MINIT_FUNCTION(spl_array); diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index 3cbd2cacc9..99cebfd72f 100755 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -46,8 +46,8 @@ static zend_object_handlers spl_ce_dir_handlers; /* decalre the class entry */ -zend_class_entry *spl_ce_DirectoryIterator; -zend_class_entry *spl_ce_RecursiveDirectoryIterator; +PHPAPI zend_class_entry *spl_ce_DirectoryIterator; +PHPAPI zend_class_entry *spl_ce_RecursiveDirectoryIterator; /* {{{ spl_ce_dir_object_free_storage */ diff --git a/ext/spl/spl_directory.h b/ext/spl/spl_directory.h index e7a96d5a4f..23561159a6 100755 --- a/ext/spl/spl_directory.h +++ b/ext/spl/spl_directory.h @@ -24,8 +24,8 @@ #include "php.h" #include "php_spl.h" -extern zend_class_entry *spl_ce_DirectoryIterator; -extern zend_class_entry *spl_ce_RecursiveDirectoryIterator; +extern PHPAPI zend_class_entry *spl_ce_DirectoryIterator; +extern PHPAPI zend_class_entry *spl_ce_RecursiveDirectoryIterator; PHP_MINIT_FUNCTION(spl_directory); diff --git a/ext/spl/spl_exceptions.c b/ext/spl/spl_exceptions.c index afd7536de5..c4f3a6b46f 100755 --- a/ext/spl/spl_exceptions.c +++ b/ext/spl/spl_exceptions.c @@ -33,18 +33,18 @@ #include "spl_engine.h" #include "spl_exceptions.h" -zend_class_entry *spl_ce_LogicException; -zend_class_entry *spl_ce_BadFunctionCallException; -zend_class_entry *spl_ce_BadMethodCallException; -zend_class_entry *spl_ce_DomainException; -zend_class_entry *spl_ce_InvalidArgumentException; -zend_class_entry *spl_ce_LengthException; -zend_class_entry *spl_ce_OutOfRangeException; -zend_class_entry *spl_ce_RuntimeException; -zend_class_entry *spl_ce_OutOfBoundsException; -zend_class_entry *spl_ce_OverflowException; -zend_class_entry *spl_ce_RangeException; -zend_class_entry *spl_ce_UnderflowException; +PHPAPI zend_class_entry *spl_ce_LogicException; +PHPAPI zend_class_entry *spl_ce_BadFunctionCallException; +PHPAPI zend_class_entry *spl_ce_BadMethodCallException; +PHPAPI zend_class_entry *spl_ce_DomainException; +PHPAPI zend_class_entry *spl_ce_InvalidArgumentException; +PHPAPI zend_class_entry *spl_ce_LengthException; +PHPAPI zend_class_entry *spl_ce_OutOfRangeException; +PHPAPI zend_class_entry *spl_ce_RuntimeException; +PHPAPI zend_class_entry *spl_ce_OutOfBoundsException; +PHPAPI zend_class_entry *spl_ce_OverflowException; +PHPAPI zend_class_entry *spl_ce_RangeException; +PHPAPI zend_class_entry *spl_ce_UnderflowException; #define spl_ce_Exception zend_exception_get_default() diff --git a/ext/spl/spl_exceptions.h b/ext/spl/spl_exceptions.h index 752c988f6a..0f26e677b7 100755 --- a/ext/spl/spl_exceptions.h +++ b/ext/spl/spl_exceptions.h @@ -24,19 +24,19 @@ #include "php.h" #include "php_spl.h" -extern zend_class_entry *spl_ce_LogicException; -extern zend_class_entry *spl_ce_BadFunctionCallException; -extern zend_class_entry *spl_ce_BadMethodCallException; -extern zend_class_entry *spl_ce_DomainException; -extern zend_class_entry *spl_ce_InvalidArgumentException; -extern zend_class_entry *spl_ce_LengthException; -extern zend_class_entry *spl_ce_OutOfRangeException; - -extern zend_class_entry *spl_ce_RuntimeException; -extern zend_class_entry *spl_ce_OutOfBoundsException; -extern zend_class_entry *spl_ce_OverflowException; -extern zend_class_entry *spl_ce_RangeException; -extern zend_class_entry *spl_ce_UnderflowException; +extern PHPAPI zend_class_entry *spl_ce_LogicException; +extern PHPAPI zend_class_entry *spl_ce_BadFunctionCallException; +extern PHPAPI zend_class_entry *spl_ce_BadMethodCallException; +extern PHPAPI zend_class_entry *spl_ce_DomainException; +extern PHPAPI zend_class_entry *spl_ce_InvalidArgumentException; +extern PHPAPI zend_class_entry *spl_ce_LengthException; +extern PHPAPI zend_class_entry *spl_ce_OutOfRangeException; + +extern PHPAPI zend_class_entry *spl_ce_RuntimeException; +extern PHPAPI zend_class_entry *spl_ce_OutOfBoundsException; +extern PHPAPI zend_class_entry *spl_ce_OverflowException; +extern PHPAPI zend_class_entry *spl_ce_RangeException; +extern PHPAPI zend_class_entry *spl_ce_UnderflowException; PHP_MINIT_FUNCTION(spl_exceptions); diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index 0be7ed61a1..eb9382eb03 100755 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -38,20 +38,20 @@ #define INLINE inline -zend_class_entry *spl_ce_RecursiveIterator; -zend_class_entry *spl_ce_RecursiveIteratorIterator; -zend_class_entry *spl_ce_FilterIterator; -zend_class_entry *spl_ce_ParentIterator; -zend_class_entry *spl_ce_SeekableIterator; -zend_class_entry *spl_ce_LimitIterator; -zend_class_entry *spl_ce_CachingIterator; -zend_class_entry *spl_ce_CachingRecursiveIterator; -zend_class_entry *spl_ce_OuterIterator; -zend_class_entry *spl_ce_IteratorIterator; -zend_class_entry *spl_ce_NoRewindIterator; -zend_class_entry *spl_ce_InfiniteIterator; -zend_class_entry *spl_ce_EmptyIterator; -zend_class_entry *spl_ce_AppendIterator; +PHPAPI zend_class_entry *spl_ce_RecursiveIterator; +PHPAPI zend_class_entry *spl_ce_RecursiveIteratorIterator; +PHPAPI zend_class_entry *spl_ce_FilterIterator; +PHPAPI zend_class_entry *spl_ce_ParentIterator; +PHPAPI zend_class_entry *spl_ce_SeekableIterator; +PHPAPI zend_class_entry *spl_ce_LimitIterator; +PHPAPI zend_class_entry *spl_ce_CachingIterator; +PHPAPI zend_class_entry *spl_ce_CachingRecursiveIterator; +PHPAPI zend_class_entry *spl_ce_OuterIterator; +PHPAPI zend_class_entry *spl_ce_IteratorIterator; +PHPAPI zend_class_entry *spl_ce_NoRewindIterator; +PHPAPI zend_class_entry *spl_ce_InfiniteIterator; +PHPAPI zend_class_entry *spl_ce_EmptyIterator; +PHPAPI zend_class_entry *spl_ce_AppendIterator; function_entry spl_funcs_RecursiveIterator[] = { SPL_ABSTRACT_ME(RecursiveIterator, hasChildren, NULL) diff --git a/ext/spl/spl_iterators.h b/ext/spl/spl_iterators.h index c717c532b4..859dd7efc7 100755 --- a/ext/spl/spl_iterators.h +++ b/ext/spl/spl_iterators.h @@ -24,20 +24,20 @@ #include "php.h" #include "php_spl.h" -extern zend_class_entry *spl_ce_RecursiveIterator; -extern zend_class_entry *spl_ce_RecursiveIteratorIterator; -extern zend_class_entry *spl_ce_FilterIterator; -extern zend_class_entry *spl_ce_ParentIterator; -extern zend_class_entry *spl_ce_SeekableIterator; -extern zend_class_entry *spl_ce_LimitIterator; -extern zend_class_entry *spl_ce_CachingIterator; -extern zend_class_entry *spl_ce_CachingRecursiveIterator; -extern zend_class_entry *spl_ce_OuterIterator; -extern zend_class_entry *spl_ce_IteratorIterator; -extern zend_class_entry *spl_ce_NoRewindIterator; -extern zend_class_entry *spl_ce_InfiniteIterator; -extern zend_class_entry *spl_ce_EmptyIterator; -extern zend_class_entry *spl_ce_AppendIterator; +extern PHPAPI zend_class_entry *spl_ce_RecursiveIterator; +extern PHPAPI zend_class_entry *spl_ce_RecursiveIteratorIterator; +extern PHPAPI zend_class_entry *spl_ce_FilterIterator; +extern PHPAPI zend_class_entry *spl_ce_ParentIterator; +extern PHPAPI zend_class_entry *spl_ce_SeekableIterator; +extern PHPAPI zend_class_entry *spl_ce_LimitIterator; +extern PHPAPI zend_class_entry *spl_ce_CachingIterator; +extern PHPAPI zend_class_entry *spl_ce_CachingRecursiveIterator; +extern PHPAPI zend_class_entry *spl_ce_OuterIterator; +extern PHPAPI zend_class_entry *spl_ce_IteratorIterator; +extern PHPAPI zend_class_entry *spl_ce_NoRewindIterator; +extern PHPAPI zend_class_entry *spl_ce_InfiniteIterator; +extern PHPAPI zend_class_entry *spl_ce_EmptyIterator; +extern PHPAPI zend_class_entry *spl_ce_AppendIterator; PHP_MINIT_FUNCTION(spl_iterators); diff --git a/ext/standard/array.c b/ext/standard/array.c index de3016332a..7a4af9a8fd 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -46,6 +46,9 @@ #include "php_string.h" #include "php_rand.h" #include "php_smart_str.h" +#if HAVE_SPL +#include "ext/spl/spl_array.h" +#endif #ifdef ZTS int array_globals_id; @@ -98,7 +101,6 @@ php_array_globals array_globals; ZEND_BEGIN_MODULE_GLOBALS(array) int *multisort_flags[2]; int (*compare_func)(zval *result, zval *op1, zval *op2 TSRMLS_DC); - zend_class_entry *php_ce_countable; ZEND_END_MODULE_GLOBALS(array) ZEND_DECLARE_MODULE_GLOBALS(array) @@ -325,14 +327,8 @@ PHP_FUNCTION(count) case IS_OBJECT: { #if HAVE_SPL zval *retval; - zend_class_entry **pce; - if (!ARRAYG(php_ce_countable)) { - if (zend_lookup_class("countable", sizeof("countable")-1, &pce TSRMLS_CC) == SUCCESS) { - ARRAYG(php_ce_countable) = *pce; - } - } - if (ARRAYG(php_ce_countable) && instanceof_function(Z_OBJCE_P(array), ARRAYG(php_ce_countable) TSRMLS_CC)) { + if (instanceof_function(Z_OBJCE_P(array), spl_ce_Countable TSRMLS_CC)) { zend_call_method_with_0_params(&array, NULL, NULL, "count", &retval); RETVAL_LONG(Z_LVAL_P(retval)); zval_ptr_dtor(&retval); |