*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Thu, 16 Mar 2006 10:12:45 +0100
changeset 1476 d8938e5b253e
parent 1475 934d20073adb
child 1477 bea2ad3479eb
*** empty log message ***
ChangeSet.st
--- a/ChangeSet.st	Mon Mar 13 16:50:38 2006 +0100
+++ b/ChangeSet.st	Thu Mar 16 10:12:45 2006 +0100
@@ -13,7 +13,7 @@
 "{ Package: 'stx:libbasic3' }"
 
 OrderedCollection subclass:#ChangeSet
-	instanceVariableNames:'changedClasses'
+	instanceVariableNames:'changedClasses changeSelectors'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'System-Changes'
@@ -498,6 +498,31 @@
     "Created: / 4.2.2000 / 18:30:59 / cg"
 !
 
+changeSelectors
+    "return a collection of all selectors for which changes are in this changeSet"
+
+    |selectors|
+
+    changeSelectors isNil ifTrue:[
+        selectors := IdentitySet new.
+        self do:[:chg |
+            |cls|
+
+            chg notNil ifTrue:[
+                chg isMethodChange ifTrue:[
+                    selectors add:chg selector
+                ]
+            ]
+        ].
+        changeSelectors := selectors.
+    ].
+    ^ changeSelectors.
+
+    "
+     ChangeSet current changeSelectors  
+    "
+!
+
 changedClasses
     "return a collection of all classes for which changes are in this changeSet"
 
@@ -791,6 +816,11 @@
     changedClasses notNil ifTrue:[
         changedClasses add:aChange changeClass.
     ].
+    changeSelectors notNil ifTrue:[
+        aChange isMethodChange ifTrue:[
+            changeSelectors add:aChange selector.
+        ].
+    ].
 
 "/    aChange sendChangeNotificationThroughSmalltalk. 
     self changed:#addChange: with:aChange.
@@ -808,7 +838,7 @@
 removeAll:aCollection
     aCollection notEmpty ifTrue:[
         super removeAll:aCollection.
-        changedClasses := nil.
+        changedClasses := changeSelectors := nil.
         self changed:#removeAll: with:aCollection.
     ]
 !
@@ -837,6 +867,8 @@
 includesChangeForClass:aClass selector:selector
     |nameOfClass|
 
+    (self changedClasses includes:aClass) ifFalse:[^ false].
+
     nameOfClass := aClass name.
 
     ^ self contains:[:aChange | 
@@ -979,7 +1011,7 @@
             changesToRemove add:aChange
         ]
     ].
-    changedClasses := nil.
+    changedClasses := changeSelectors := nil.
     changesToRemove notEmpty ifTrue:[
         self removeAll:changesToRemove
     ].
@@ -1973,5 +2005,5 @@
 !ChangeSet class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.126 2006-03-13 15:50:38 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.127 2006-03-16 09:12:45 cg Exp $'
 ! !