shithub: mc

Download patch

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