X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fimpl_arg.c;h=d9cb473bb22c74d100931eac14696be89eb7f58a;hb=ad2c22df5e451fffecc7b7ebdc9c5a4bb36e543e;hp=8c0f82d7773a29abf34038738637666e217aef71;hpb=2f5af21b263403997e154658635d6b6e6eaab453;p=m6w6%2Fext-psi diff --git a/src/types/impl_arg.c b/src/types/impl_arg.c index 8c0f82d..d9cb473 100644 --- a/src/types/impl_arg.c +++ b/src/types/impl_arg.c @@ -23,19 +23,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ -#ifdef HAVE_CONFIG_H -# include "config.h" -#else -# include "php_config.h" -#endif +#include "php_psi_stdinc.h" +#include "data.h" -#include -#include - -#include "impl_arg.h" - -impl_arg *init_impl_arg(impl_type *type, impl_var *var, impl_def_val *def) { - impl_arg *arg = calloc(1, sizeof(*arg)); +struct psi_impl_arg *psi_impl_arg_init(struct psi_impl_type *type, + struct psi_impl_var *var, struct psi_impl_def_val *def) +{ + struct psi_impl_arg *arg = calloc(1, sizeof(*arg)); arg->type = type; arg->var = var; arg->var->arg = arg; @@ -43,11 +37,30 @@ impl_arg *init_impl_arg(impl_type *type, impl_var *var, impl_def_val *def) { return arg; } -void free_impl_arg(impl_arg *arg) { - free_impl_type(arg->type); - free_impl_var(arg->var); - if (arg->def) { - free_impl_def_val(arg->def); +void psi_impl_arg_free(struct psi_impl_arg **arg_ptr) +{ + if (*arg_ptr) { + struct psi_impl_arg *arg = *arg_ptr; + + *arg_ptr = NULL; + psi_impl_type_free(&arg->type); + psi_impl_var_free(&arg->var); + if (arg->def) { + psi_impl_def_val_free(&arg->def); + } + free(arg); } - free(arg); +} + +void psi_impl_arg_dump(int fd, struct psi_impl_arg *iarg, bool vararg) +{ + dprintf(fd, "%s %s%s%s", + iarg->type->name, + iarg->var->reference ? "&" : "", + vararg ? "..." : "", + iarg->var->name); + if (iarg->def) { + dprintf(fd, " = %s", iarg->def->text); + } + }