Mercurial > repos > tabletprog
changeset 125:6f8d868e8da0
Add size to set implementation
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 05 Aug 2013 23:36:18 -0700 |
parents | cbc92ee13f35 |
children | a2d2d8e09291 |
files | modules/sets.tp |
diffstat | 1 files changed, 4 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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)