commit after reset fuckup
[m6w6/ext-psi] / src / types / impl_func.c
index 5893b4fd3fb22794eb3f8383e9ec05971360bdb4..56c61d8343f657c366fa799c8b86ec4551222c91 100644 (file)
 #include "php_psi_stdinc.h"
 #include "data.h"
 
-struct psi_impl_func *psi_impl_func_init(const char *name,
+struct psi_impl_func *psi_impl_func_init(zend_string *name,
                struct psi_plist *args, struct psi_impl_type *type)
 {
-       struct psi_impl_func *func = calloc(1, sizeof(*func));
+       struct psi_impl_func *func = pecalloc(1, sizeof(*func), 1);
 
-       func->name = strdup(name);
+       func->name = zend_string_copy(name);
        func->args = args ? : psi_plist_init((psi_plist_dtor) psi_impl_arg_free);
 
        func->return_type = type;
@@ -45,9 +45,7 @@ void psi_impl_func_free(struct psi_impl_func **f_ptr)
                struct psi_impl_func *f = *f_ptr;
 
                *f_ptr = NULL;
-               if (f->token) {
-                       free(f->token);
-               }
+               psi_token_free(&f->token);
 
                psi_impl_type_free(&f->return_type);
                psi_plist_free(f->args);
@@ -56,7 +54,7 @@ void psi_impl_func_free(struct psi_impl_func **f_ptr)
                        psi_impl_arg_free(&f->vararg);
                }
 
-               free(f->name);
+               zend_string_release(f->name);
                free(f);
        }
 }
@@ -79,7 +77,7 @@ bool psi_impl_func_validate(struct psi_data *data, struct psi_impl_func *func,
                                        "Non-optional argument %zu '$%s' of implementation '%s'"
                                        " follows optional argument",
                                        i + 1,
-                                       iarg->var->name, func->name);
+                                       iarg->var->name->val, func->name->val);
                        return false;
                }
        }
@@ -87,25 +85,25 @@ bool psi_impl_func_validate(struct psi_data *data, struct psi_impl_func *func,
        return true;
 }
 
-void psi_impl_func_dump(int fd, struct psi_impl_func *func)
+void psi_impl_func_dump(struct psi_dump *dump, struct psi_impl_func *func)
 {
-       dprintf(fd, "function %s(", func->name);
+       PSI_DUMP(dump, "function %s(", func->name->val);
        if (func->args) {
                size_t i = 0;
                struct psi_impl_arg *iarg;
 
                while (psi_plist_get(func->args, i++, &iarg)) {
                        if (i > 1) {
-                               dprintf(fd, ", ");
+                               PSI_DUMP(dump, ", ");
                        }
-                       psi_impl_arg_dump(fd, iarg, false);
+                       psi_impl_arg_dump(dump, iarg, false);
                }
 
                if (func->vararg) {
-                       dprintf(fd, ", ");
-                       psi_impl_arg_dump(fd, func->vararg, true);
+                       PSI_DUMP(dump, ", ");
+                       psi_impl_arg_dump(dump, func->vararg, true);
                }
        }
-       dprintf(fd, ") : %s%s", func->return_reference ? "&" : "",
-                       func->return_type->name);
+       PSI_DUMP(dump, ") : %s%s", func->return_reference ? "&" : "",
+                       func->return_type->name->val);
 }