X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fimpl_arg.c;h=598df661e545c181898568fbc9564720127d3ae1;hb=4bf8ff5e477da2fa4f82518bb947055c2c0374d6;hp=8c0f82d7773a29abf34038738637666e217aef71;hpb=2f5af21b263403997e154658635d6b6e6eaab453;p=m6w6%2Fext-psi diff --git a/src/types/impl_arg.c b/src/types/impl_arg.c index 8c0f82d..598df66 100644 --- a/src/types/impl_arg.c +++ b/src/types/impl_arg.c @@ -28,14 +28,12 @@ #else # include "php_config.h" #endif +#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 = pecalloc(1, sizeof(*arg), 1); arg->type = type; arg->var = var; arg->var->arg = arg; @@ -43,11 +41,29 @@ 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(struct psi_dump *dump, struct psi_impl_arg *iarg, bool vararg) +{ + psi_impl_type_dump(dump, iarg->type); + PSI_DUMP(dump, " "); + psi_impl_var_dump(dump, iarg->var, vararg); + if (iarg->def) { + PSI_DUMP(dump, " = "); + psi_impl_def_val_dump(dump, iarg->def); + } + }