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)