Class.st
changeset 1748 5cb3ceffa216
parent 1747 e6323406510c
child 1753 fc2ff98b99f7
--- a/Class.st	Mon Oct 14 22:18:45 1996 +0200
+++ b/Class.st	Mon Oct 14 22:36:00 1996 +0200
@@ -989,7 +989,7 @@
     |superclassName name flags instvars classvars category classInstVars
      comment package superclassSig
      newClass superClass methods cmethods formatID environment
-     nPrivate privateClass|
+     ownerName owner nPrivate privateClass|
 
     "/ the following order must correlate to
     "/ the storing in #storeBinaryClassOn:manager:
@@ -1006,10 +1006,11 @@
     "/   classInstVarNames
     "/   comment
     "/   package
+    "/   name of owner, or nil
     "/   classes methodDictionary
     "/   methodDictionary
     "/   number of private classes
-    "/   private classes
+    "/   private classes, if any
 
     formatID := manager nextObject.
     formatID isInteger ifFalse:[       "/ backward compatibilty
@@ -1051,6 +1052,13 @@
     classInstVars isNil ifTrue:[classInstVars := ''].
     comment := manager nextObject.
     package := manager nextObject.
+    formatID == 1 ifTrue:[
+        ownerName := manager nextObject.
+        ownerName notNil ifTrue:[
+            name := name copyFrom:(ownerName size + 2 + 1).
+            owner := Smalltalk at:ownerName.
+        ]
+    ].
 
 "/    'got superName:' print. superclassName printNL.
 "/    'got name:' print. name printNL.
@@ -1063,7 +1071,11 @@
 "/ ('create class: ' ,  name ) printNL.
 
     (superClass notNil or:[superclassName isNil]) ifTrue:[
-        environment := Class nameSpaceQuerySignal raise.
+        owner notNil ifTrue:[
+            environment := owner
+        ] ifFalse:[
+            environment := Class nameSpaceQuerySignal raise.
+        ].
 
         newClass := superClass class
                 name:name asSymbol
@@ -1111,7 +1123,7 @@
 
     "Modified: 7.6.1996 / 13:43:06 / stefan"
     "Created: 8.10.1996 / 17:57:02 / cg"
-    "Modified: 14.10.1996 / 21:16:58 / cg"
+    "Modified: 14.10.1996 / 21:34:45 / cg"
 !
 
 storeBinaryClassOn:stream manager:manager
@@ -1119,7 +1131,7 @@
      However, the superclass chain is not stored - at load time, that must
      be either present or autoloadable."
 
-    |s sig privateClasses|
+    |s sig owner privateClasses|
 
     stream nextPut: manager codeForClass.
 
@@ -1138,10 +1150,11 @@
     "/   classInstVarNames
     "/   comment
     "/   package
+    "/   name of owner, or nil
     "/   classes methodDictionary
     "/   methodDictionary
     "/   # of privateClass names
-    "/   privateClasses
+    "/   privateClasses, if any
 
     1 storeBinaryOn:stream manager:manager.  "/ formatID
 
@@ -1185,6 +1198,12 @@
     s storeBinaryOn:stream manager:manager.
     package storeBinaryOn:stream manager:manager.
 
+    (owner := self owningClass) notNil ifTrue:[
+        owner name storeBinaryOn:stream manager:manager.
+    ] ifFalse:[
+        nil storeBinaryOn:stream manager:manager.
+    ].
+
     "/
     "/ store class method dictionary and methods
     "/ 
@@ -1195,8 +1214,9 @@
     "/
     "/ names of private classes
     "/
-    (privateClasses := self privateClasses) notNil ifTrue:[
-        privateClasses size storeBinaryOn:stream manager:manager.
+    privateClasses := self privateClasses.
+    privateClasses size storeBinaryOn:stream manager:manager.
+    privateClasses size > 0 ifTrue:[
         privateClasses do:[:aClass |
             aClass storeBinaryClassOn:stream manager:manager
         ]
@@ -1219,7 +1239,7 @@
     "
 
     "Modified: 7.6.1996 / 13:39:02 / stefan"
-    "Modified: 14.10.1996 / 20:54:30 / cg"
+    "Modified: 14.10.1996 / 21:27:15 / cg"
 !
 
 storeBinaryDefinitionOf: anAssociation on: stream manager: manager
@@ -3907,6 +3927,6 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.184 1996-10-14 20:18:45 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.185 1996-10-14 20:36:00 cg Exp $'
 ! !
 Class initialize!