summaryrefslogtreecommitdiff
path: root/Zend/zend_generators.h
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2015-02-20 12:59:56 +0100
committerNikita Popov <nikic@php.net>2015-02-28 21:20:37 +0100
commitfcdb6e0811953b2aa57f755632add0f67b01e6bc (patch)
treea6c4ead7da3c3be15cf83fd7bab39d3234c3dc3f /Zend/zend_generators.h
parent79f26e9ca562cc4e692913432299cb9bbf906478 (diff)
downloadphp-git-fcdb6e0811953b2aa57f755632add0f67b01e6bc.tar.gz
WIP
Diffstat (limited to 'Zend/zend_generators.h')
-rw-r--r--Zend/zend_generators.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/Zend/zend_generators.h b/Zend/zend_generators.h
index 2e70bc5a2f..42f890e78f 100644
--- a/Zend/zend_generators.h
+++ b/Zend/zend_generators.h
@@ -42,11 +42,26 @@ typedef struct _zend_generator {
zval key;
/* Return value */
zval retval;
+
/* Variable to put sent value into */
zval *send_target;
/* Largest used integer key for auto-incrementing keys */
zend_long largest_used_integer_key;
+ /* Values specified by "yield *" to yield from this generator.
+ * This is only used for arrays or non-generator Traversables.
+ * This zval also uses the u2 structure in the same way as
+ * by-value foreach. */
+ zval values;
+
+ /* Generator that is currently yielding values. This will differ
+ * from the surrounding structure if "yield *" is used on a generator. */
+ struct _zend_generator *current_generator;
+
+ /* Stack of waiting generators when multiple "yield *" expressions
+ * are nested. */
+ zend_ptr_stack generator_stack;
+
/* ZEND_GENERATOR_* flags */
zend_uchar flags;
} zend_generator;