aboutsummaryrefslogtreecommitdiff
path: root/sem3/osc/mm11/regn/symtab.c
diff options
context:
space:
mode:
Diffstat (limited to 'sem3/osc/mm11/regn/symtab.c')
-rw-r--r--sem3/osc/mm11/regn/symtab.c63
1 files changed, 31 insertions, 32 deletions
diff --git a/sem3/osc/mm11/regn/symtab.c b/sem3/osc/mm11/regn/symtab.c
index 35799a5..9edcf72 100644
--- a/sem3/osc/mm11/regn/symtab.c
+++ b/sem3/osc/mm11/regn/symtab.c
@@ -4,50 +4,49 @@
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;
+ 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);
+ unsigned int index = hash(var);
- // Save old value
- symnode_t *oldSym = symbolarray[index];
+ // 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;
- }
+ // 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;
+ // Link old one
+ symbolarray[index]->next = oldSym;
+ symbolarray[index]->name = var;
- return symbolarray[index];
+ return symbolarray[index];
}
symnode_t *sym_lookup(char *var)
{
- unsigned int index = hash(var);
- symnode_t *n = symbolarray[index];
+ unsigned int index = hash(var);
+ symnode_t *n = symbolarray[index];
- // Look trough list
- while (n != NULL && strcmp(n->name, var) != 0) {
- n = n->next;
- }
+ // Look trough list
+ while (n != NULL && strcmp(n->name, var) != 0) {
+ n = n->next;
+ }
- return n;
+ return n;
}