WeakIdentityDictionary.st
changeset 20992 a2eba1cff036
parent 20990 38e8d0c58aa1
child 21006 076293e19939
child 21026 81e280fc1b93
--- a/WeakIdentityDictionary.st	Fri Nov 18 16:07:56 2016 +0100
+++ b/WeakIdentityDictionary.st	Fri Nov 18 16:12:09 2016 +0100
@@ -274,6 +274,25 @@
     "Modified: / 13.12.2001 / 14:17:58 / martin"
 ! !
 
+!WeakIdentityDictionary methodsFor:'enumerating'!
+
+keysDo:aBlock
+    "evaluate aBlock for each registered object"
+
+    "#Dictionary>>keysDo: would not work, since the keyArray instvar may change if
+     elements are unregistered while looping."
+
+    ^ keyArray validElementsDo:[:each|
+        each ~~ DeletedEntry ifTrue:[
+            each == NilEntry ifTrue:[
+                aBlock value:nil.
+            ] ifFalse:[
+                aBlock value:each.
+            ]
+        ].
+    ]
+! !
+
 !WeakIdentityDictionary methodsFor:'private'!
 
 findKeyOrNil:key
@@ -550,5 +569,9 @@
 
 version
     ^ '$Header$'
+!
+
+version_CVS
+    ^ '$Header$'
 ! !