#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);
+ e->name = zend_string_copy(name);
e->items = l;
return e;
}
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)
{
- dprintf(fd, "enum %s {\n", e->name);
+ dprintf(fd, "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");
}
- dprintf(fd, "%s", psi_t_indent(level));
+ dprintf(fd, "%s", psi_t_indent(level + 1));
psi_decl_enum_item_dump(fd, item);
}
- --level;
}
dprintf(fd, "\n}");
}
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;
}