From f5bd1b7a8e141df5bfebdd9749c1e11bc4607766 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 5 Oct 2003 19:27:59 +0000 Subject: Move support/tools/* back into utils llvm-svn: 8875 --- llvm/utils/Burg/string.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 llvm/utils/Burg/string.c (limited to 'llvm/utils/Burg/string.c') diff --git a/llvm/utils/Burg/string.c b/llvm/utils/Burg/string.c new file mode 100644 index 00000000000..9b69c3045ff --- /dev/null +++ b/llvm/utils/Burg/string.c @@ -0,0 +1,65 @@ +char rcsid_string[] = "$Id$"; + +#include +#include +#include "b.h" +#include "fe.h" + +static StrTableElement newStrTableElement ARGS((void)); + +StrTable +newStrTable() +{ + return (StrTable) zalloc(sizeof(struct strTable)); +} + +static StrTableElement +newStrTableElement() +{ + return (StrTableElement) zalloc(sizeof(struct strTableElement)); +} + +void +dumpStrTable(t) StrTable t; +{ + List e; + IntList r; + + printf("Begin StrTable\n"); + for (e = t->elems; e; e = e->next) { + StrTableElement el = (StrTableElement) e->x; + printf("%s: ", el->str); + for (r = el->erulenos; r; r = r->next) { + int i = r->x; + printf("(%d)", i); + } + printf("\n"); + } + printf("End StrTable\n"); +} + +StrTableElement +addString(t, s, eruleno, new) StrTable t; char *s; int eruleno; int *new; +{ + List l; + StrTableElement ste; + + assert(t); + for (l = t->elems; l; l = l->next) { + StrTableElement e = (StrTableElement) l->x; + + assert(e); + if (!strcmp(s, e->str)) { + e->erulenos = newIntList(eruleno, e->erulenos); + *new = 0; + return e; + } + } + ste = newStrTableElement(); + ste->erulenos = newIntList(eruleno, 0); + ste->str = (char *) zalloc(strlen(s) + 1); + strcpy(ste->str, s); + t->elems = newList(ste, t->elems); + *new = 1; + return ste; +} -- cgit v1.2.3