From b7566ef777909bbd81c38d6ca9a1452940043236 Mon Sep 17 00:00:00 2001 From: Xnoe Date: Wed, 1 Dec 2021 17:05:17 +0000 Subject: [PATCH] Fixed major bug in hashtable.h that caused the hashtable to not actually store any data --- src/kernel/datatypes/hashtable.h | 40 +++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/src/kernel/datatypes/hashtable.h b/src/kernel/datatypes/hashtable.h index c5c84cc..0376613 100644 --- a/src/kernel/datatypes/hashtable.h +++ b/src/kernel/datatypes/hashtable.h @@ -5,6 +5,7 @@ #include "linkedlist.h" #include "../memory.h" #include "maybe.h" +#include "../screenstuff.h" namespace xnoe { template @@ -18,36 +19,57 @@ namespace xnoe { } void set(key k, value v) { - xnoe::linkedlist> list = table[xnoe::hash(k) % 4096]; - xnoe::linkedlistelem>* current = list.start; + xnoe::linkedlist>* list = &table[xnoe::hash(k) % 4096]; + xnoe::linkedlistelem>* current = list->start; bool exists = false; if (current) { - while (current->next) { + while (current) { if (xnoe::get<0>(current->elem) == k) { exists = true; break; } } + current = current->next; } if (exists) current->elem = xnoe::tuple(k, v); - else - list.append(xnoe::tuple(k, v)); + else { + printf("Appended.\n"); + list->append(xnoe::tuple(k, v)); + } } xnoe::Maybe get(key k) { - xnoe::linkedlist> list = table[xnoe::hash(k) % 4096]; - xnoe::linkedlistelem>* current = list.start; - if (current) - while (current->next) + xnoe::linkedlist>* list = &table[xnoe::hash(k) % 4096]; + xnoe::linkedlistelem>* current = list->start; + if (current) { + while (current) { if (xnoe::get<0>(current->elem) == k) return xnoe::Maybe(xnoe::get<1>(current->elem)); + + current = current->next; + } + } return xnoe::Maybe(); } + + void remove(key k, value v) { + xnoe::linkedlist>* list = &table[xnoe::hash(k) % 4096]; + xnoe::linkedlistelem>* current = list->start; + if (current) { + while (current) { + if (xnoe::get<0>(current->elem) == k) { + list->remove(current); + delete current; + } + current = current->next; + } + } + } }; }