diff options
author | Julian T <julian@jtle.dk> | 2020-02-11 12:24:56 +0100 |
---|---|---|
committer | Julian T <julian@jtle.dk> | 2020-02-11 12:24:56 +0100 |
commit | 6db1a2cdd3b96731f2e092d55d8c2136eabc52d0 (patch) | |
tree | 2be8fae8ce82d708ed9f00f376dda14420850e80 /sem1/osc/mm11/regn/symtab.c | |
parent | 57305119e05559c1c37e903aef89cd43f44c42c9 (diff) |
Rename and cleanup
Diffstat (limited to 'sem1/osc/mm11/regn/symtab.c')
-rw-r--r-- | sem1/osc/mm11/regn/symtab.c | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/sem1/osc/mm11/regn/symtab.c b/sem1/osc/mm11/regn/symtab.c deleted file mode 100644 index 8103203..0000000 --- a/sem1/osc/mm11/regn/symtab.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "symtab.h" -#include <stdlib.h> -#include <string.h> - -unsigned int hash(char *s) { - uint32_t hv = 0; - for( int i = 0; s[i] != '\0'; i++ ) { - // take MSB 6 bits of hv and xors with LSB of s[i] - uint32_t v = ( hv >> 26 ) ^ (s[i] & 0x3f); - - // Push those back on hv - hv = (hv << 4) | v; - } - // Return appropriate size - return hv % HASHSIZE; -} - - -symnode_t *sym_insert(char *var) { - unsigned int index = hash(var); - - // Save old value - symnode_t *oldSym = symbolarray[index]; - - // Make new - symbolarray[index] = malloc(sizeof(symnode_t)); - if( symbolarray[index] == NULL ) { - // If malloc failed - symbolarray[index] = oldSym; - return NULL; - } - - // Link old one - symbolarray[index]->next = oldSym; - symbolarray[index]->name = var; - - return symbolarray[index]; -} - -symnode_t *sym_lookup(char *var) { - unsigned int index = hash(var); - symnode_t *n = symbolarray[index]; - - // Look trough list - while(n != NULL && strcmp(n->name, var) != 0) { - n = n->next; - } - - return n; -} |