diff options
Diffstat (limited to 'grammar/utils.c')
-rw-r--r-- | grammar/utils.c | 77 |
1 files changed, 76 insertions, 1 deletions
diff --git a/grammar/utils.c b/grammar/utils.c index f9c50bc9..ccc9fbc7 100644 --- a/grammar/utils.c +++ b/grammar/utils.c @@ -1,7 +1,9 @@ #include <stdio.h> +#include <stdlib.h> #include <string.h> #include <ctype.h> -#include "libestr.h" +#include <libestr.h> +#include "utils.h" void readConfFile(FILE *fp, es_str_t **str) @@ -43,3 +45,76 @@ readConfFile(FILE *fp, es_str_t **str) es_addChar(str, '\0'); es_addChar(str, '\0'); } + +struct nvlst* +nvlstNew(es_str_t *name, es_str_t *value) +{ + struct nvlst *lst; + + if((lst = malloc(sizeof(struct nvlst))) != NULL) { + lst->next = NULL; + lst->name = name; + lst->value = value; + } + + return lst; +} + +void +nvlstDestruct(struct nvlst *lst) +{ + struct nvlst *toDel; + + while(lst != NULL) { + toDel = lst; + lst = lst->next; + es_deleteStr(toDel->name); + es_deleteStr(toDel->value); + free(toDel); + } +} + + +void +nvlstPrint(struct nvlst *lst) +{ + char *name, *value; + printf("nvlst %p:\n", lst); + while(lst != NULL) { + name = es_str2cstr(lst->name, NULL); + value = es_str2cstr(lst->value, NULL); + printf("\tname: '%s', value '%s'\n", name, value); + free(name); + free(value); + lst = lst->next; + } +} + +struct cnfobj* +cnfobjNew(enum cnfobjType objType, struct nvlst *lst) +{ + struct cnfobj *o; + + if((o = malloc(sizeof(struct nvlst))) != NULL) { + o->objType = objType; + o->nvlst = lst; + } + + return o; +} + +void +cnfobjDestruct(struct cnfobj *o) +{ + if(o != NULL) { + nvlstDestruct(o->nvlst); + free(o); + } +} + +void +cnfobjPrint(struct cnfobj *o) +{ + printf("obj: '%s'\n", cnfobjType2str(o->objType)); + nvlstPrint(o->nvlst); +} |