From d23d03829e5baf947d347f49cc1d7807be6c070b Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 11 Aug 2024 23:23:12 +0300 Subject: initial generics for structs + Likely still very much full of bugs --- src/ast.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/ast.c') diff --git a/src/ast.c b/src/ast.c index d734252..890196b 100644 --- a/src/ast.c +++ b/src/ast.c @@ -153,9 +153,14 @@ unsigned ast_flags(struct ast *node, enum ast_flags flags) return node->f & flags; } -void ast_append(struct ast *list, struct ast *elem) +void ast_append(struct ast **list, struct ast *elem) { - struct ast *cur = list; + struct ast *cur = *list; + if (!cur) { + *list = elem; + return; + } + while (cur->n) cur = cur->n; @@ -168,9 +173,14 @@ struct ast *ast_prepend(struct ast *list, struct ast *elem) return elem; } -void type_append(struct type *list, struct type *elem) +void type_append(struct type **list, struct type *elem) { - struct type *cur = list; + struct type *cur = *list; + if (!cur) { + *list = elem; + return; + } + while (cur->n) cur = cur->n; @@ -681,7 +691,7 @@ size_t align3k(size_t o) { size_t rem = o % 3; if (rem) - o += rem; + o += 3 - rem; return o; } -- cgit v1.3