123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- typedef struct _zend_object_iterator zend_object_iterator;
- typedef struct _zend_object_iterator_funcs {
-
- void (*dtor)(zend_object_iterator *iter TSRMLS_DC);
-
- int (*valid)(zend_object_iterator *iter TSRMLS_DC);
-
- void (*get_current_data)(zend_object_iterator *iter, zval ***data TSRMLS_DC);
-
- void (*get_current_key)(zend_object_iterator *iter, zval *key TSRMLS_DC);
-
- void (*move_forward)(zend_object_iterator *iter TSRMLS_DC);
-
- void (*rewind)(zend_object_iterator *iter TSRMLS_DC);
-
- void (*invalidate_current)(zend_object_iterator *iter TSRMLS_DC);
- } zend_object_iterator_funcs;
- struct _zend_object_iterator {
- void *data;
- zend_object_iterator_funcs *funcs;
- ulong index;
- };
- typedef struct _zend_class_iterator_funcs {
- zend_object_iterator_funcs *funcs;
- union _zend_function *zf_new_iterator;
- union _zend_function *zf_valid;
- union _zend_function *zf_current;
- union _zend_function *zf_key;
- union _zend_function *zf_next;
- union _zend_function *zf_rewind;
- } zend_class_iterator_funcs;
- enum zend_object_iterator_kind {
- ZEND_ITER_INVALID,
- ZEND_ITER_PLAIN_ARRAY,
- ZEND_ITER_PLAIN_OBJECT,
- ZEND_ITER_OBJECT
- };
- BEGIN_EXTERN_C()
- ZEND_API enum zend_object_iterator_kind zend_iterator_unwrap(zval *array_ptr, zend_object_iterator **iter TSRMLS_DC);
- ZEND_API zval *zend_iterator_wrap(zend_object_iterator *iter TSRMLS_DC);
- ZEND_API void zend_register_iterator_wrapper(TSRMLS_D);
- END_EXTERN_C()
|