X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fcall.h;h=d84d09da965cbf921daa7186a384ea547bc182ed;hp=01e6eaddd18e42bd8b91d9f50f4adc9cb04aa4e7;hb=20616ed5a0e1ae7f7c680ab1b78bad7aaae5ef52;hpb=9bcb1df0786a8193d65949c857baaba2f4296e84 diff --git a/src/call.h b/src/call.h index 01e6ead..d84d09d 100644 --- a/src/call.h +++ b/src/call.h @@ -26,6 +26,7 @@ #ifndef PSI_CALL_H #define PSI_CALL_H +#include #include "Zend/zend_types.h" #include "data.h" @@ -55,7 +56,7 @@ struct psi_call_frame_callback { struct psi_call_frame_argument *psi_call_frame_argument_init(struct psi_impl_arg *spec, impl_val *ival, zval *zptr, int is_vararg); void psi_call_frame_argument_free(struct psi_call_frame_argument *arg); -struct psi_call_frame_symbol *psi_call_frame_symbol_init(); +struct psi_call_frame_symbol *psi_call_frame_symbol_init(struct psi_decl_var *dvar); void psi_call_frame_symbol_free(struct psi_call_frame_symbol *arg); struct psi_call_frame { @@ -71,24 +72,29 @@ struct psi_call_frame { struct psi_call_frame *psi_call_frame_init(struct psi_context *context, struct psi_decl *decl, struct psi_impl *impl); -ZEND_RESULT_CODE psi_call_frame_parse_args(struct psi_call_frame *frame, zend_execute_data *execute_data); +bool psi_call_frame_parse_args(struct psi_call_frame *frame, zend_execute_data *execute_data); size_t psi_call_frame_num_var_args(struct psi_call_frame *frame); size_t psi_call_frame_num_fixed_args(struct psi_call_frame *frame); zval *psi_call_frame_new_argument(struct psi_call_frame *frame, struct psi_call_frame_argument *frame_arg); -zval *psi_call_frame_sub_argument(struct psi_call_frame *frame, struct psi_impl_var *inner_var, zval *outer_zval, const char *name); +zval *psi_call_frame_sub_argument(struct psi_call_frame *frame, struct psi_impl_var *inner_var, zval *outer_zval, zend_string *name); -struct psi_call_frame_argument *psi_call_frame_get_argument(struct psi_call_frame *frame, const char *name); +struct psi_call_frame_argument *psi_call_frame_get_argument(struct psi_call_frame *frame, zend_string *name); struct psi_call_frame_argument *psi_call_frame_get_var_argument(struct psi_call_frame *frame, zend_long index); struct psi_call_frame_symbol *psi_call_frame_fetch_symbol(struct psi_call_frame *frame, struct psi_decl_var *dvar); void psi_call_frame_enter(struct psi_call_frame *frame); +struct psi_context *psi_call_frame_get_context(struct psi_call_frame *frame); +struct psi_decl *psi_call_frame_get_decl(struct psi_call_frame *frame); +struct psi_impl *psi_call_frame_get_impl(struct psi_call_frame *frame); void **psi_call_frame_get_arg_pointers(struct psi_call_frame *frame); +void *psi_call_frame_get_rpointer(struct psi_call_frame *frame); -ZEND_RESULT_CODE psi_call_frame_do_let(struct psi_call_frame *frame); +bool psi_call_frame_do_let(struct psi_call_frame *frame); +bool psi_call_frame_do_assert(struct psi_call_frame *frame, enum psi_assert_kind kind); void psi_call_frame_do_call(struct psi_call_frame *frame); void psi_call_frame_do_callback(struct psi_call_frame *frame, struct psi_call_frame_callback *cb); void psi_call_frame_do_return(struct psi_call_frame *frame, zval *return_value); @@ -100,5 +106,4 @@ void **psi_call_frame_push_auto(struct psi_call_frame *frame, void *auto_free); void psi_call_frame_free(struct psi_call_frame *frame); - #endif