summaryrefslogtreecommitdiff
path: root/Zend/zend_generators.h
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_generators.h')
-rw-r--r--Zend/zend_generators.h18
1 files changed, 5 insertions, 13 deletions
diff --git a/Zend/zend_generators.h b/Zend/zend_generators.h
index 2373a1a7c8..5d1264cc4f 100644
--- a/Zend/zend_generators.h
+++ b/Zend/zend_generators.h
@@ -25,18 +25,10 @@ BEGIN_EXTERN_C()
extern ZEND_API zend_class_entry *zend_ce_generator;
-typedef struct _zend_generator_iterator {
- zend_object_iterator intern;
-
- /* The generator object zval has to be stored, because the iterator is
- * holding a ref to it, which has to be dtored. */
- zval *object;
-} zend_generator_iterator;
-
typedef struct _zend_generator {
zend_object std;
- zend_generator_iterator iterator;
+ zend_object_iterator *iterator;
/* The suspended execution context. */
zend_execute_data *execute_data;
@@ -45,11 +37,11 @@ typedef struct _zend_generator {
zend_vm_stack stack;
/* Current value */
- zval *value;
+ zval value;
/* Current key */
- zval *key;
+ zval key;
/* Variable to put sent value into */
- zval **send_target;
+ zval *send_target;
/* Largest used integer key for auto-incrementing keys */
long largest_used_integer_key;
@@ -62,7 +54,7 @@ static const zend_uchar ZEND_GENERATOR_FORCED_CLOSE = 0x2;
static const zend_uchar ZEND_GENERATOR_AT_FIRST_YIELD = 0x4;
void zend_register_generator_ce(TSRMLS_D);
-ZEND_API zval *zend_generator_create_zval(zend_op_array *op_array TSRMLS_DC);
+ZEND_API void zend_generator_create_zval(zend_execute_data *call, zend_op_array *op_array, zval *return_value TSRMLS_DC);
ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished_execution TSRMLS_DC);
ZEND_API void zend_generator_resume(zend_generator *generator TSRMLS_DC);