allBehaviors vs. allClasses
--- a/Behavior.st Sun Sep 03 16:37:50 2000 +0200
+++ b/Behavior.st Sun Sep 03 16:45:58 2000 +0200
@@ -1604,21 +1604,21 @@
"evaluate aBlock for all of my subclasses.
There is no specific order, in which the entries are enumerated.
Warning:
- This will only enumerate globally known classes - for anonymous
- behaviors, you have to walk over all instances of Behavior."
+ This will only enumerate globally known classes - for anonymous
+ behaviors, you have to walk over all instances of Behavior."
self isMeta ifTrue:[
- "/ metaclasses are not found via Smalltalk allBehaviorsDo:
- "/ here, walk over classes and enumerate corresponding metas.
- self soleInstance allSubclassesDo:[:aSubClass |
- aBlock value:(aSubClass class)
- ].
+ "/ metaclasses are not found via Smalltalk allClassesDo:
+ "/ here, walk over classes and enumerate corresponding metas.
+ self soleInstance allSubclassesDo:[:aSubClass |
+ aBlock value:(aSubClass class)
+ ].
] ifFalse:[
- Smalltalk allBehaviorsDo:[:aClass |
- (aClass isSubclassOf:self) ifTrue:[
- aBlock value:aClass
- ]
- ]
+ Smalltalk allClassesDo:[:aClass |
+ (aClass isSubclassOf:self) ifTrue:[
+ aBlock value:aClass
+ ]
+ ]
]
"
@@ -1679,24 +1679,34 @@
|coll|
+ self isMeta ifTrue:[
+ self halt.
+ "/ metaclasses are not found via Smalltalk allClassesDo:
+ "/ here, walk over classes and enumerate corresponding metas.
+ self soleInstance subclassesDo:[:aSubClass |
+ aBlock value:(aSubClass class)
+ ].
+ ^ self
+ ].
+
"/ use cached information (avoid class hierarchy search)
"/ if possible
SubclassInfo isNil ifTrue:[
- Behavior subclassInfo
+ Behavior subclassInfo
].
SubclassInfo notNil ifTrue:[
- coll := SubclassInfo at:self ifAbsent:nil.
- coll notNil ifTrue:[
- coll do:aBlock.
- ].
- ^ self
+ coll := SubclassInfo at:self ifAbsent:nil.
+ coll notNil ifTrue:[
+ coll do:aBlock.
+ ].
+ ^ self
].
- Smalltalk allBehaviorsDo:[:aClass |
- (aClass superclass == self) ifTrue:[
- aBlock value:aClass
- ]
+ Smalltalk allClassesDo:[:aClass |
+ (aClass superclass == self) ifTrue:[
+ aBlock value:aClass
+ ]
]
"
@@ -4149,5 +4159,5 @@
!Behavior class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.176 2000-08-22 22:15:58 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.177 2000-09-03 14:45:58 cg Exp $'
! !
--- a/Class.st Sun Sep 03 16:37:50 2000 +0200
+++ b/Class.st Sun Sep 03 16:45:58 2000 +0200
@@ -3370,8 +3370,8 @@
|set|
set := IdentitySet new.
- Smalltalk allBehaviorsDo:[:aClass |
- aClass superclass isNil ifTrue:[set add:aClass]
+ Smalltalk allClassesDo:[:aClass |
+ aClass superclass isNil ifTrue:[set add:aClass]
].
^ set asOrderedCollection
@@ -4477,5 +4477,5 @@
!Class class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.377 2000-08-22 22:16:13 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.378 2000-09-03 14:45:10 cg Exp $'
! !
--- a/ClassDescription.st Sun Sep 03 16:37:50 2000 +0200
+++ b/ClassDescription.st Sun Sep 03 16:45:58 2000 +0200
@@ -499,17 +499,17 @@
"evaluate aBlock for all classes in aCategory;
no specific order is defined."
- Smalltalk allBehaviorsDo:[:aClass |
- aClass isMeta ifFalse:[
- (aClass category = aCategory) ifTrue:[
- aBlock value:aClass
- ]
- ].
+ Smalltalk allClassesDo:[:aClass |
+ aClass isMeta ifFalse:[
+ (aClass category = aCategory) ifTrue:[
+ aBlock value:aClass
+ ]
+ ].
]
"
Class allClassesInCategory:'Kernel-Classes'
- do:[:class |Transcript showCR:class name]
+ do:[:class |Transcript showCR:class name]
"
"Created: 1.4.1997 / 23:45:09 / stefan"
@@ -522,12 +522,12 @@
|classes|
classes := OrderedCollection new.
- Smalltalk allBehaviorsDo:[:aClass |
- aClass isMeta ifFalse:[
- (aClass category = aCategory) ifTrue:[
- classes add:aClass
- ]
- ]
+ Smalltalk allClassesDo:[:aClass |
+ aClass isMeta ifFalse:[
+ (aClass category = aCategory) ifTrue:[
+ classes add:aClass
+ ]
+ ]
].
classes topologicalSort:[:a :b | b isSubclassOf:a].
classes do:aBlock
@@ -3716,6 +3716,6 @@
!ClassDescription class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.107 2000-08-22 13:47:04 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ClassDescription.st,v 1.108 2000-09-03 14:45:01 cg Exp $'
! !
ClassDescription initialize!
--- a/NameSpace.st Sun Sep 03 16:37:50 2000 +0200
+++ b/NameSpace.st Sun Sep 03 16:45:58 2000 +0200
@@ -217,7 +217,7 @@
|classes|
classes := IdentitySet new.
- self allBehaviorsDo:[:aClass | classes add:aClass].
+ self allClassesDo:[:aClass | classes add:aClass].
^ classes
"Modified: 20.12.1996 / 15:34:50 / cg"
@@ -227,7 +227,7 @@
|classes|
classes := IdentitySet new.
- self allBehaviorsDo:[:aClass |
+ self allClassesDo:[:aClass |
classes add:aClass.
aClass addAllPrivateClassesTo:classes.
].
@@ -342,6 +342,20 @@
"Modified: / 18.3.1999 / 17:21:06 / cg"
!
+allClassesDo:aBlock
+ "enumerate all classes in this namespace"
+
+ Smalltalk allClassesDo:[:aClass |
+ (aClass isBehavior and:[aClass isMeta not]) ifTrue:[
+ aClass nameSpace == self ifTrue:[
+ aBlock value:aClass
+ ].
+ ]
+ ].
+
+ "Modified: / 18.3.1999 / 17:21:06 / cg"
+!
+
keysDo:aBlock
"enumerate all class names in this namespace"
@@ -433,7 +447,7 @@
|set|
set := IdentitySet with:Smalltalk.
- Smalltalk allBehaviorsDo:[:aClass |
+ Smalltalk allClassesDo:[:aClass |
(aClass isNameSpace
and:[aClass ~~ NameSpace
and:[aClass ~~ Smalltalk]]) ifTrue:[
@@ -466,5 +480,5 @@
!NameSpace class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/NameSpace.st,v 1.40 2000-08-31 10:04:54 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/NameSpace.st,v 1.41 2000-09-03 14:44:37 cg Exp $'
! !
--- a/ObjectMemory.st Sun Sep 03 16:37:50 2000 +0200
+++ b/ObjectMemory.st Sun Sep 03 16:45:58 2000 +0200
@@ -3782,8 +3782,8 @@
You may help the system a bit, in providing a lowSpaceCleanup method
in your classes which have lots of data kept somewhere (usually, cached data)."
- Smalltalk allBehaviorsDo:[:aClass |
- aClass lowSpaceCleanup
+ Smalltalk allClassesDo:[:aClass |
+ aClass lowSpaceCleanup
].
"Created: 12.4.1996 / 14:57:28 / cg"
@@ -4896,7 +4896,7 @@
"
fn := aFileName asFilename.
fn exists ifTrue:[
- fn renameTo:(fn withSuffix:'sav')
+ fn renameTo:(fn withSuffix:'sav')
].
"
@@ -4908,22 +4908,22 @@
"
ST-80 compatibility; send #preSnapshot to all classes
"
- Smalltalk allBehaviorsDo:[:aClass |
- aClass preSnapshot
+ Smalltalk allClassesDo:[:aClass |
+ aClass preSnapshot
].
ok := self primSnapShotOn:aFileName.
ok ifTrue:[
- Class addChangeRecordForSnapshot:aFileName.
+ Class addChangeRecordForSnapshot:aFileName.
].
"
ST-80 compatibility; send #postSnapshot to all classes
"
- Smalltalk allBehaviorsDo:[:aClass |
- aClass postSnapshot
+ Smalltalk allClassesDo:[:aClass |
+ aClass postSnapshot
].
self changed:#finishedSnapshot. "/ ST-80 compatibility
^ ok
@@ -5047,6 +5047,6 @@
!ObjectMemory class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ObjectMemory.st,v 1.188 2000-07-12 12:31:48 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ObjectMemory.st,v 1.189 2000-09-03 14:44:25 cg Exp $'
! !
ObjectMemory initialize!
--- a/Project.st Sun Sep 03 16:37:50 2000 +0200
+++ b/Project.st Sun Sep 03 16:45:58 2000 +0200
@@ -22,15 +22,15 @@
category:'System-Support'
!
-Object subclass:#ClassInfo
- instanceVariableNames:'conditionForInclusion className classFileName'
+Object subclass:#MethodInfo
+ instanceVariableNames:'conditionForInclusion methodName className fileName'
classVariableNames:''
poolDictionaries:''
privateIn:Project
!
-Object subclass:#MethodInfo
- instanceVariableNames:'conditionForInclusion methodName className fileName'
+Object subclass:#ClassInfo
+ instanceVariableNames:'conditionForInclusion className classFileName'
classVariableNames:''
poolDictionaries:''
privateIn:Project
@@ -3485,7 +3485,7 @@
].
methods := IdentitySet new.
- Smalltalk allBehaviorsDo:[:cls |
+ Smalltalk allClassesDo:[:cls |
|classToCheck|
classToCheck := cls.
@@ -3745,56 +3745,6 @@
"Modified: 14.2.1997 / 15:38:47 / cg"
! !
-!Project::ClassInfo methodsFor:'accessing'!
-
-classFileName
- "return the value of the instance variable 'classFileName' (automatically generated)"
-
- ^ classFileName!
-
-classFileName:something
- "set the value of the instance variable 'classFileName' (automatically generated)"
-
- classFileName := something.!
-
-className
- "return the value of the instance variable 'className' (automatically generated)"
-
- ^ className!
-
-className:something
- "set the value of the instance variable 'className' (automatically generated)"
-
- className := something.!
-
-conditionForInclusion
- "return the value of the instance variable 'conditionForInclusion' (automatically generated)"
-
- ^ conditionForInclusion!
-
-conditionForInclusion:something
- "set the value of the instance variable 'conditionForInclusion' (automatically generated)"
-
- conditionForInclusion := something.! !
-
-!Project::ClassInfo methodsFor:'printing & storing'!
-
-displayString
- ^ 'ClassInfo: ' , className
-! !
-
-!Project::ClassInfo methodsFor:'queries'!
-
-theClass
- |cls|
-
- cls := Smalltalk classNamed:className.
- cls isNil ifTrue:[ ^ nil].
- ^ cls
-
- "Created: / 26.9.1999 / 13:39:00 / cg"
-! !
-
!Project::MethodInfo methodsFor:'accessing'!
className
@@ -3864,9 +3814,59 @@
"Created: / 26.9.1999 / 13:39:07 / cg"
! !
+!Project::ClassInfo methodsFor:'accessing'!
+
+classFileName
+ "return the value of the instance variable 'classFileName' (automatically generated)"
+
+ ^ classFileName!
+
+classFileName:something
+ "set the value of the instance variable 'classFileName' (automatically generated)"
+
+ classFileName := something.!
+
+className
+ "return the value of the instance variable 'className' (automatically generated)"
+
+ ^ className!
+
+className:something
+ "set the value of the instance variable 'className' (automatically generated)"
+
+ className := something.!
+
+conditionForInclusion
+ "return the value of the instance variable 'conditionForInclusion' (automatically generated)"
+
+ ^ conditionForInclusion!
+
+conditionForInclusion:something
+ "set the value of the instance variable 'conditionForInclusion' (automatically generated)"
+
+ conditionForInclusion := something.! !
+
+!Project::ClassInfo methodsFor:'printing & storing'!
+
+displayString
+ ^ 'ClassInfo: ' , className
+! !
+
+!Project::ClassInfo methodsFor:'queries'!
+
+theClass
+ |cls|
+
+ cls := Smalltalk classNamed:className.
+ cls isNil ifTrue:[ ^ nil].
+ ^ cls
+
+ "Created: / 26.9.1999 / 13:39:00 / cg"
+! !
+
!Project class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.160 2000-08-22 11:10:29 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.161 2000-09-03 14:44:13 cg Exp $'
! !
Project initialize!