spl

a Simple Programming Language
Log | Files | Refs

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 }