]> granicus.if.org Git - php/commitdiff
- Allow direct access to spl class entries (SPL cannot be build shared)
authorMarcus Boerger <helly@php.net>
Mon, 1 Nov 2004 20:57:23 +0000 (20:57 +0000)
committerMarcus Boerger <helly@php.net>
Mon, 1 Nov 2004 20:57:23 +0000 (20:57 +0000)
ext/spl/spl_array.c
ext/spl/spl_array.h
ext/spl/spl_directory.c
ext/spl/spl_directory.h
ext/spl/spl_exceptions.c
ext/spl/spl_exceptions.h
ext/spl/spl_iterators.c
ext/spl/spl_iterators.h
ext/standard/array.c

index d13b36f2da919a20f8afbad95a2523975b7fdbc4..c3a037d9ddfb667e9c77f815d3c0b26854eef132 100755 (executable)
@@ -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;
index f075be6f9103ddd6ae94e08cfa71e0f3a6c99184..9bbe5a47111eb6cc9c67cbf8a1be04b5e5171ba5 100755 (executable)
@@ -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);
 
index 3cbd2cacc930731a8d3c69e8c192c534d9f35479..99cebfd72fb2310e90812b4fa461fb3be9f7200b 100755 (executable)
@@ -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 */
index e7a96d5a4f68da26b884cdc77389b61091e0d019..23561159a686f8086e4f7bb3dc185407d136a2ca 100755 (executable)
@@ -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);
 
index afd7536de5bc6e18c721e6bb7caa3efee821ca4b..c4f3a6b46f2ba87699148560cc04374a8995b764 100755 (executable)
 #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()
 
index 752c988f6a13f882d531bf212ed8b6d9e8e043d8..0f26e677b7f80b58c7adf56bdd5d1be6f2b656d5 100755 (executable)
 #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);
 
index 0be7ed61a1cf3dfe4f245d016696e969ac53cc24..eb9382eb03c3a5fc8a8d262b76d858a315843564 100755 (executable)
 
 #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)
index c717c532b47ebef47cf559921fb186faac4d8f1a..859dd7efc72e3cbbbfeb0eefa3374035d437f098 100755 (executable)
 #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);
 
index de3016332a422d3a8817817f192b4e8631c64f76..7a4af9a8fdbfc654e435ade53ee4e91ce611c068 100644 (file)
@@ -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);