# HG changeset patch # User Mike Pavone # Date 1375770978 25200 # Node ID 6f8d868e8da00de44c05e5f1c0c515b558ded0af # Parent cbc92ee13f3535ce058d43d76d1dc425b9001fcb Add size to set implementation diff -r cbc92ee13f35 -r 6f8d868e8da0 modules/sets.tp --- a/modules/sets.tp Mon Jul 16 01:22:48 2012 -0700 +++ b/modules/sets.tp Mon Aug 05 23:36:18 2013 -0700 @@ -5,6 +5,7 @@ } #{ buckets <- #[empty empty empty empty] + size <- 0 contains? <- :object { hv <- object hash @@ -49,6 +50,7 @@ if: trunc < 0 { trunc <- 0 - trunc } bucketval <- (buckets get: trunc) if: (bucketval empty?) { + size <- size + 1 buckets set: trunc (makeBucket: hv) notdone <- false } else: { @@ -61,11 +63,13 @@ if: notdone { newsize <- (buckets length) * 3 newbucks <- #[] + newbucks resize: newsize while: { (newbucks length) < newsize } do: { newbucks append: empty } oldbucks <- buckets buckets <- newbucks + size <- 0 foreach: oldbucks :idx el { if: (not: (el empty?)) { addHash: (el v)