Class.st
changeset 2484 05bd2cc43192
parent 2482 a13e40246125
child 2486 311a7ffb2793
--- a/Class.st	Sat Mar 22 14:19:44 1997 +0100
+++ b/Class.st	Sat Mar 22 16:19:44 1997 +0100
@@ -924,7 +924,8 @@
 privateClasses
     "{ Pragma: +optSpace }"
 
-    "return a collection of my private classes (if any); nil otherwise"
+    "return a collection of my private classes (if any); nil otherwise.
+     The classes are in any order."
 
     |classes myName|
 
@@ -940,16 +941,14 @@
             ]
         ]
     ].
-    classes size == 0 ifTrue:[
-        ^ nil
-    ].
-    ^ classes asOrderedCollection topologicalSort:[:a :b | b isSubclassOf:a].
+    ^ classes
 
     "
      Object privateClasses
+     ObjectMemory privateClasses
     "
 
-    "Modified: 2.1.1997 / 14:08:35 / cg"
+    "Modified: 22.3.1997 / 16:18:09 / cg"
 !
 
 privateClassesAt:aClassNameSymbol
@@ -977,6 +976,28 @@
     "Modified: 14.10.1996 / 17:23:36 / cg"
 !
 
+privateClassesSorted
+    "{ Pragma: +optSpace }"
+
+    "return a collection of my private classes (if any); nil otherwise.
+     The classes are sorted by inheritance."
+
+    |classes|
+
+    classes := self privateClasses.
+    (classes notNil and:[classes notEmpty]) ifTrue:[
+        classes := classes asOrderedCollection topologicalSort:[:a :b | b isSubclassOf:a].
+    ].
+    ^ classes.
+
+    "
+     Object privateClassesSorted
+    "
+
+    "Created: 22.3.1997 / 16:10:42 / cg"
+    "Modified: 22.3.1997 / 16:11:20 / cg"
+!
+
 removeClassVarName:aString
     "{ Pragma: +optSpace }"
 
@@ -1573,7 +1594,7 @@
     "/
     "/ names of private classes
     "/
-    privateClasses := self privateClasses.
+    privateClasses := self privateClassesSorted.
     privateClasses size storeBinaryOn:stream manager:manager.
     privateClasses size > 0 ifTrue:[
         privateClasses do:[:aClass |
@@ -1598,7 +1619,7 @@
     "
 
     "Modified: 7.6.1996 / 13:39:02 / stefan"
-    "Modified: 15.10.1996 / 21:13:32 / cg"
+    "Modified: 22.3.1997 / 16:13:02 / cg"
 !
 
 storeBinaryDefinitionOf: anAssociation on: stream manager: manager
@@ -2343,11 +2364,12 @@
 
     |classes|
 
-    (classes := self privateClasses) notNil ifTrue:[
+    (classes := self privateClasses) size > 0 ifTrue:[
         classes do:aBlock
     ].
 
     "Created: 26.10.1996 / 12:28:57 / cg"
+    "Modified: 22.3.1997 / 16:17:36 / cg"
 ! !
 
 !Class methodsFor:'fileIn interface'!
@@ -2828,8 +2850,6 @@
 fileOutAllDefinitionsOn:aStream
     "append expressions on aStream, which defines myself and all of my private classes."
 
-    |privateClasses|
-
     self fileOutDefinitionOn:aStream.
     aStream nextPutChunkSeparator. 
     aStream cr; cr.
@@ -2843,18 +2863,16 @@
         aStream cr; cr
     ].
 
-    (privateClasses := self privateClasses) notNil ifTrue:[
-        privateClasses do:[:aClass |
-            aClass fileOutAllDefinitionsOn:aStream
-        ]
+    self privateClassesSorted do:[:aClass |
+        aClass fileOutAllDefinitionsOn:aStream
     ]
 
     "Created: 15.10.1996 / 11:15:19 / cg"
-    "Modified: 15.10.1996 / 11:26:30 / cg"
+    "Modified: 22.3.1997 / 16:11:56 / cg"
 !
 
 fileOutAllMethodsOn:aStream
-    |collectionOfCategories privateClasses|
+    |collectionOfCategories|
 
     collectionOfCategories := self class categories asSortedCollection.
     collectionOfCategories notNil ifTrue:[
@@ -2871,13 +2889,12 @@
         ]
     ].
 
-    (privateClasses := self privateClasses) notNil ifTrue:[
-        privateClasses do:[:aClass |
-            aClass fileOutAllMethodsOn:aStream
-        ]
+    self privateClassesSorted do:[:aClass |
+        aClass fileOutAllMethodsOn:aStream
     ].
 
     "Created: 15.10.1996 / 11:13:00 / cg"
+    "Modified: 22.3.1997 / 16:12:17 / cg"
 !
 
 fileOutCategory:aCategory
@@ -3161,7 +3178,7 @@
     "file out my definition and all methods onto aStream"
 
     |collectionOfCategories copyrightMethod copyrightText comment versionMethod skippedMethods
-     meta privateClasses|
+     meta|
 
     self isLoaded ifFalse:[
         ^ FileOutErrorSignal 
@@ -3169,8 +3186,6 @@
                  errorString:'will not fileOut unloaded classes'
     ].
 
-    privateClasses := self privateClasses.
-
     meta := self class.
 
     "
@@ -3292,10 +3307,8 @@
     "/
     "/ any private classes' methods
     "/
-    privateClasses notNil ifTrue:[
-        privateClasses do:[:aClass |
-            aClass fileOutAllMethodsOn:aStream
-        ].
+    self privateClassesSorted do:[:aClass |
+        aClass fileOutAllMethodsOn:aStream
     ].
 
 
@@ -3316,7 +3329,7 @@
     ]
 
     "Created: 15.11.1995 / 12:53:06 / cg"
-    "Modified: 21.12.1996 / 13:54:01 / cg"
+    "Modified: 22.3.1997 / 16:12:47 / cg"
 !
 
 fileOutPrimitiveDefinitionsOn:aStream
@@ -4843,6 +4856,6 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.264 1997-03-22 13:18:56 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.265 1997-03-22 15:19:44 cg Exp $'
 ! !
 Class initialize!