From fcdb6e0811953b2aa57f755632add0f67b01e6bc Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Fri, 20 Feb 2015 12:59:56 +0100 Subject: WIP --- Zend/zend_generators.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Zend/zend_generators.h') 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; -- cgit v1.2.1