From 1bd999bb9bd40651390f597fa26186c3b7b72192 Mon Sep 17 00:00:00 2001 From: Nilstrieb Date: Tue, 5 Oct 2021 23:10:28 +0200 Subject: [PATCH] started alloc and hash --- src/alloc.rs | 39 +++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + src/string.rs | 1 - 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/alloc.rs delete mode 100644 src/string.rs diff --git a/src/alloc.rs b/src/alloc.rs new file mode 100644 index 0000000..9975177 --- /dev/null +++ b/src/alloc.rs @@ -0,0 +1,39 @@ +use std::rc::Rc; + +pub struct Alloc { + strings: table::IStrTable, +} + +pub enum Object { + String(IStr), +} + +/// Reference to an interned String +struct IStr { + /// This will be changed to a raw pointer once a tracing GC is implemented + data: Rc, + hash: u64, +} + +mod table { + use crate::alloc::IStr; + use std::collections::HashMap; + + #[derive(Debug, Default)] + pub struct IStrTable { + map: HashMap, + } + + #[derive(Debug, Default)] + struct StringHashBuilder; + + impl std::hash::BuildHasher for StringHashBuilder { + type Hasher = (); + + fn build_hasher(&self) -> Self::Hasher { + todo!() + } + } + + struct PrimitveHasher {} +} diff --git a/src/lib.rs b/src/lib.rs index 79743bd..3be63ca 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,4 @@ +mod alloc; mod lex; mod parse; mod string; diff --git a/src/string.rs b/src/string.rs deleted file mode 100644 index ac26779..0000000 --- a/src/string.rs +++ /dev/null @@ -1 +0,0 @@ -pub struct StringInterner;