From 9ee73a8459eb2bb58adc29da02de312b7e4e7dca Mon Sep 17 00:00:00 2001 From: ubq323 Date: Sat, 5 Aug 2023 04:15:17 +0100 Subject: refactor hashtables, and use objstrings for keys doesn't yet work without string interning, which will require further refactoring --- val.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'val.c') diff --git a/val.c b/val.c index 355aac6..530737d 100644 --- a/val.c +++ b/val.c @@ -2,15 +2,27 @@ #include #include "val.h" #include "mem.h" +#include "ht.h" -ObjString *objstring_new(char *src, size_t len) { +ObjString *objstring_copy(char *src, size_t len) { char *d = NEW_ARR(char, 1+len); memcpy(d, src, len); d[len] = '\0'; ObjString *o = NEW_OBJ(ObjString, OTY_STRING); o->len = len; o->b = d; + o->hash = hash(d, len); + + return o; +} + +ObjString *objstring_take(char *src, size_t len) { + ObjString *o = NEW_OBJ(ObjString, OTY_STRING); + o->len = len; + o->b = src; + o->hash = hash(src, len); + return o; } -- cgit v1.2.3