maps.c (518B)
1 #include <stdlib.h> 2 #include <stdio.h> 3 4 #include "util.h" 5 #include "lexer.h" 6 #include "parse.h" 7 #include "maps.h" 8 9 map *funcs; 10 map *vars; 11 12 map * 13 addmap(map *m, void *data, char *id, mctx *ctx) { 14 if (!m) 15 m = alloczctx(ctx, sizeof(map)); 16 else if (m->next) 17 return addmap(m->next, data, id, ctx); 18 19 m->id = id; 20 m->data = data; 21 return m; 22 } 23 24 void * 25 lookupmap(map *m, char *id) { 26 if (!m) 27 return NULL; 28 if (strcmp(m->id, id) == 0) 29 return m->data; 30 if (!m->next) 31 return NULL; 32 return lookupmap(m->next, id); 33 }