X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fcall.h;h=eb8361a5476e7be84ac15733519cc0ff8e1a80fc;hp=895fa96ced16d6d32c6311545f0fed2ebf5c9ebb;hb=f077a911ab3d74c43a6316d745e885446820e7bf;hpb=9c6a90318dc5e20b73820d7c2bb8eb3b30888cb3 diff --git a/src/call.h b/src/call.h index 895fa96..eb8361a 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" @@ -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);