};
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;
#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);
/* 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 */
#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);
#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()
#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);
#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)
#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);
#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;
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)
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);