summaryrefslogtreecommitdiff
path: root/Zend/zend_generators.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_generators.c')
-rw-r--r--Zend/zend_generators.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c
index 68c1865c00..df94446d6f 100644
--- a/Zend/zend_generators.c
+++ b/Zend/zend_generators.c
@@ -115,7 +115,7 @@ static void zend_generator_cleanup_unfinished_execution(
}
/* }}} */
-ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished_execution) /* {{{ */
+ZEND_API void zend_generator_close(zend_generator *generator, bool finished_execution) /* {{{ */
{
if (EXPECTED(generator->execute_data)) {
zend_execute_data *execute_data = generator->execute_data;
@@ -165,14 +165,14 @@ static void zend_generator_remove_child(zend_generator_node *node, zend_generato
{
ZEND_ASSERT(node->children >= 1);
if (node->children == 1) {
- node->child.single.child = NULL;
+ node->child.single = NULL;
} else {
HashTable *ht = node->child.ht;
zend_hash_index_del(ht, (zend_ulong) child);
if (node->children == 2) {
zend_generator *other_child;
ZEND_HASH_FOREACH_PTR(ht, other_child) {
- node->child.single.child = other_child;
+ node->child.single = other_child;
break;
} ZEND_HASH_FOREACH_END();
zend_hash_destroy(ht);
@@ -479,13 +479,13 @@ static void zend_generator_add_child(zend_generator *generator, zend_generator *
zend_generator_node *node = &generator->node;
if (node->children == 0) {
- node->child.single.child = child;
+ node->child.single = child;
} else {
if (node->children == 1) {
HashTable *ht = emalloc(sizeof(HashTable));
zend_hash_init(ht, 0, NULL, NULL, 0);
zend_hash_index_add_new_ptr(ht,
- (zend_ulong) node->child.single.child, node->child.single.child);
+ (zend_ulong) node->child.single, node->child.single);
node->child.ht = ht;
}
@@ -524,7 +524,7 @@ ZEND_API zend_generator *zend_generator_update_root(zend_generator *generator)
static zend_generator *get_new_root(zend_generator *generator, zend_generator *root)
{
while (!root->execute_data && root->node.children == 1) {
- root = root->node.child.single.child;
+ root = root->node.child.single;
}
if (root->execute_data) {
@@ -614,9 +614,6 @@ static zend_result zend_generator_get_next_delegated_value(zend_generator *gener
p = &ht->arData[pos];
value = &p->val;
- if (Z_TYPE_P(value) == IS_INDIRECT) {
- value = Z_INDIRECT_P(value);
- }
pos++;
} while (Z_ISUNDEF_P(value));
@@ -1115,17 +1112,11 @@ zend_object_iterator *zend_generator_get_iterator(zend_class_entry *ce, zval *ob
void zend_register_generator_ce(void) /* {{{ */
{
- zend_class_entry ce;
-
- INIT_CLASS_ENTRY(ce, "Generator", class_Generator_methods);
- zend_ce_generator = zend_register_internal_class(&ce);
- zend_ce_generator->ce_flags |= ZEND_ACC_FINAL | ZEND_ACC_NO_DYNAMIC_PROPERTIES;
+ zend_ce_generator = register_class_Generator(zend_ce_iterator);
zend_ce_generator->create_object = zend_generator_create;
zend_ce_generator->serialize = zend_class_serialize_deny;
zend_ce_generator->unserialize = zend_class_unserialize_deny;
-
/* get_iterator has to be assigned *after* implementing the interface */
- zend_class_implements(zend_ce_generator, 1, zend_ce_iterator);
zend_ce_generator->get_iterator = zend_generator_get_iterator;
memcpy(&zend_generator_handlers, &std_object_handlers, sizeof(zend_object_handlers));
@@ -1135,7 +1126,6 @@ void zend_register_generator_ce(void) /* {{{ */
zend_generator_handlers.clone_obj = NULL;
zend_generator_handlers.get_constructor = zend_generator_get_constructor;
- INIT_CLASS_ENTRY(ce, "ClosedGeneratorException", NULL);
- zend_ce_ClosedGeneratorException = zend_register_internal_class_ex(&ce, zend_ce_exception);
+ zend_ce_ClosedGeneratorException = register_class_ClosedGeneratorException(zend_ce_exception);
}
/* }}} */