diff options
author | Nikita Popov <nikic@php.net> | 2012-05-29 18:11:18 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2012-05-29 18:11:18 +0200 |
commit | 72a91d08e7d70d5524feb6cc7c8e32b3bd68f1df (patch) | |
tree | 62612a446e5f6a54b9faa4e672905ac5457d1f23 /Zend/zend_generators.c | |
parent | 12e928314fb270db31adc361ac4993b4f0fe000a (diff) | |
download | php-git-72a91d08e7d70d5524feb6cc7c8e32b3bd68f1df.tar.gz |
Add $generator->close() method
Calling $generator->close() is equivalent to executing a return statement
at the current position in the generator.
Diffstat (limited to 'Zend/zend_generators.c')
-rw-r--r-- | Zend/zend_generators.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index 0cf600a922..b2fe8af854 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -324,6 +324,22 @@ ZEND_METHOD(Generator, send) zend_generator_resume(object, generator TSRMLS_CC); } +/* {{{ proto void Generator::close() + * Closes the generator */ +ZEND_METHOD(Generator, close) +{ + zend_generator *generator; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + + generator = (zend_generator *) zend_object_store_get_object(getThis() TSRMLS_CC); + + zend_generator_close(generator, 0); +} +/* }}} */ + ZEND_BEGIN_ARG_INFO(arginfo_generator_void, 0) ZEND_END_ARG_INFO() @@ -338,6 +354,7 @@ static const zend_function_entry generator_functions[] = { ZEND_ME(Generator, key, arginfo_generator_void, ZEND_ACC_PUBLIC) ZEND_ME(Generator, next, arginfo_generator_void, ZEND_ACC_PUBLIC) ZEND_ME(Generator, send, arginfo_generator_send, ZEND_ACC_PUBLIC) + ZEND_ME(Generator, close, arginfo_generator_void, ZEND_ACC_PUBLIC) ZEND_FE_END }; |