aboutsummaryrefslogtreecommitdiff
path: root/sem1/osc/mm11/regn/symtab.c
diff options
context:
space:
mode:
authorJulian T <julian@jtle.dk>2020-02-11 12:24:56 +0100
committerJulian T <julian@jtle.dk>2020-02-11 12:24:56 +0100
commit6db1a2cdd3b96731f2e092d55d8c2136eabc52d0 (patch)
tree2be8fae8ce82d708ed9f00f376dda14420850e80 /sem1/osc/mm11/regn/symtab.c
parent57305119e05559c1c37e903aef89cd43f44c42c9 (diff)
Rename and cleanup
Diffstat (limited to 'sem1/osc/mm11/regn/symtab.c')
-rw-r--r--sem1/osc/mm11/regn/symtab.c50
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;
-}