ref: f8e8b084dad7b4b7ea813bc4b612f64a07f27cd7
parent: 9fb48bbef2ab2b2b8cfadcac59670ebc4d0e7f17
author: andrewc <andrewchamberss@gmail.com>
date: Wed Jun 15 14:00:30 EDT 2016
add htinit to allow embedded htabs
--- a/lib/std/htab.myr
+++ b/lib/std/htab.myr
@@ -18,6 +18,7 @@
;;
generic mkht : (h : (k : @k -> uint32), eq : (a : @k, b : @k -> bool) -> htab(@k, @v)#)
+ generic htinit : (ht : htab(@k, @v)#, h : (k : @k -> uint32), eq : (a : @k, b : @k -> bool) -> void)
generic htfree : (ht : htab(@k, @v)# -> void)
generic htput : (ht : htab(@k, @v)#, k : @k, v : @v -> void)
generic htdel : (ht : htab(@k, @v)#, k : @k -> void)
@@ -103,7 +104,13 @@
var ht
ht = alloc()
+ htinit(ht, h, eq)
+ -> ht
+}
+
+generic htinit = {ht, h, eq
+
ht.hash = h
ht.eq = eq
@@ -113,7 +120,6 @@
ht.vals = slalloc(Initsz)
ht.hashes = slzalloc(Initsz)
ht.dead = slzalloc(Initsz)
- -> ht
}
generic htfree = {ht