--- 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!