From de5a4f7dfafb90902e6ff851d115e291efc77fcd Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Sat, 3 Jan 2009 12:19:30 +0000 Subject: [PATCH] - Add reflection helpers --- Zend/zend_closures.c | 14 ++++++++++++++ Zend/zend_closures.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index bb7b5211a3b..7b4062a71a0 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -107,6 +107,20 @@ ZEND_API zend_function *zend_get_closure_invoke_method(zval *obj TSRMLS_DC) /* { } /* }}} */ +ZEND_API const zend_function *zend_get_closure_method_def(zval *obj TSRMLS_DC) +{ + zend_closure *closure = (zend_closure *)zend_object_store_get_object(obj TSRMLS_CC); + return &closure->func; +} +/* }}} */ + +ZEND_API zval* zend_get_closure_this_ptr(zval *obj TSRMLS_DC) /* {{{ */ +{ + zend_closure *closure = (zend_closure *)zend_object_store_get_object(obj TSRMLS_CC); + return closure->this_ptr; +} +/* }}} */ + static zend_function *zend_closure_get_method(zval **object_ptr, zstr method_name, int method_len TSRMLS_DC) /* {{{ */ { unsigned int lc_name_len; diff --git a/Zend/zend_closures.h b/Zend/zend_closures.h index 26aa51fae56..bd0e2c4b4a1 100644 --- a/Zend/zend_closures.h +++ b/Zend/zend_closures.h @@ -33,6 +33,8 @@ extern ZEND_API zend_class_entry *zend_ce_closure; ZEND_API void zend_create_closure(zval *res, zend_function *op_array, zend_class_entry *scope, zval *this_ptr TSRMLS_DC); ZEND_API int zend_get_closure(zval *obj, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC); ZEND_API zend_function *zend_get_closure_invoke_method(zval *obj TSRMLS_DC); +ZEND_API const zend_function *zend_get_closure_method_def(zval *obj TSRMLS_DC); +ZEND_API zval* zend_get_closure_this_ptr(zval *obj TSRMLS_DC); END_EXTERN_C()