aboutsummaryrefslogtreecommitdiff
path: root/src/set.hff
diff options
context:
space:
mode:
Diffstat (limited to 'src/set.hff')
-rw-r--r--src/set.hff12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/set.hff b/src/set.hff
index 431ef93..6a03e52 100644
--- a/src/set.hff
+++ b/src/set.hff
@@ -11,7 +11,6 @@ struct Set<T, Traits> {
N int,
count int,
-
fn _nexthash(h *u32) u32 {
// return *h = (*h * 1664525) + 1013904223u; // double hashing
return ++*h; // linear probing
@@ -76,3 +75,14 @@ struct Set<T, Traits> {
self->intern(x);
}
}
+
+defmacro set_each(v, Set, &body) [
+ let $s = (Set);
+ for let $i = 0; $i < $s.N; ++$i {
+ let $idx = $s.set[$i];
+ if $idx > 0 {
+ let v = $s.buf.dat[$idx - 1];
+ body;
+ }
+ }
+]