X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Ftypes%2Fdecl_enum.c;h=68d644acbc21bc860cbb7215b4d3d0386ddecf15;hp=85ce187a1bfc546e05c68db04ade98e5ebc96e1c;hb=a0f437f26cd0f121ee911a55327a68a3544bf15f;hpb=9bcb1df0786a8193d65949c857baaba2f4296e84 diff --git a/src/types/decl_enum.c b/src/types/decl_enum.c index 85ce187..68d644a 100644 --- a/src/types/decl_enum.c +++ b/src/types/decl_enum.c @@ -26,10 +26,10 @@ #include "php_psi_stdinc.h" #include "data.h" -struct psi_decl_enum *psi_decl_enum_init(const char *name, struct psi_plist *l) +struct psi_decl_enum *psi_decl_enum_init(zend_string *name, struct psi_plist *l) { - struct psi_decl_enum *e = calloc(1, sizeof(*e)); - e->name = strdup(name); + struct psi_decl_enum *e = pecalloc(1, sizeof(*e), 1); + e->name = zend_string_copy(name); e->items = l; return e; } @@ -40,35 +40,31 @@ void psi_decl_enum_free(struct psi_decl_enum **e_ptr) struct psi_decl_enum *e = *e_ptr; *e_ptr = NULL; - if (e->token) { - free(e->token); - } + psi_token_free(&e->token); if (e->items) { psi_plist_free(e->items); } - free(e->name); + zend_string_release(e->name); free(e); } } -void psi_decl_enum_dump(int fd, struct psi_decl_enum *e, unsigned level) +void psi_decl_enum_dump(struct psi_dump *dump, struct psi_decl_enum *e, unsigned level) { - dprintf(fd, "enum %s {\n", e->name); + PSI_DUMP(dump, "enum %s {\n", e->name->val); if (e->items) { size_t i = 0; struct psi_decl_enum_item *item; - ++level; while (psi_plist_get(e->items, i++, &item)) { if (i > 1) { - dprintf(fd, ",\n"); + PSI_DUMP(dump, ",\n"); } - dprintf(fd, "%s", psi_t_indent(level)); - psi_decl_enum_item_dump(fd, item); + PSI_DUMP(dump, "%s", psi_t_indent(level + 1)); + psi_decl_enum_item_dump(dump, item); } - --level; } - dprintf(fd, "\n}"); + PSI_DUMP(dump, "\n}"); } bool psi_decl_enum_validate(struct psi_data *data, struct psi_decl_enum *e) @@ -77,7 +73,7 @@ bool psi_decl_enum_validate(struct psi_data *data, struct psi_decl_enum *e) struct psi_decl_enum_item *i, *p = NULL; if (!psi_plist_count(e->items)) { - data->error(data, e->token, PSI_WARNING, "Empty enum '%s'", e->name); + data->error(data, e->token, PSI_WARNING, "Empty enum '%s'", e->name->val); return false; }