classInstVar definition string (for non-ST metaclasses)
authorClaus Gittinger <cg@exept.de>
Tue, 30 Mar 2004 20:53:26 +0200
changeset 8277 357428ca03c5
parent 8276 9720407471d6
child 8278 6fa5a4f47da9
classInstVar definition string (for non-ST metaclasses)
Class.st
Metaclass.st
--- a/Class.st	Tue Mar 30 20:46:42 2004 +0200
+++ b/Class.st	Tue Mar 30 20:53:26 2004 +0200
@@ -2323,9 +2323,9 @@
 fileOutClassInstVarDefinitionOn:aStream
     "append an expression to define my classInstanceVariables on aStream"
 
-    self
-	fileOutClassInstVarDefinitionOn:aStream 
-	withNameSpace:false
+    self class
+        fileOutClassInstVarDefinitionOn:aStream 
+        withNameSpace:false
 !
 
 fileOutClassInstVarDefinitionOn:aStream withNameSpace:withNameSpace
@@ -3287,7 +3287,7 @@
 
     "append an instvars-record to aStream"
 
-    aClass fileOutClassInstVarDefinitionOn:aStream withNameSpace:true.
+    aClass class fileOutClassInstVarDefinitionOn:aStream withNameSpace:true.
     aStream nextPutChunkSeparator.
 !
 
@@ -4698,5 +4698,5 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.468 2004-03-22 12:03:29 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.469 2004-03-30 18:53:08 cg Exp $'
 ! !
--- a/Metaclass.st	Tue Mar 30 20:46:42 2004 +0200
+++ b/Metaclass.st	Tue Mar 30 20:53:26 2004 +0200
@@ -541,6 +541,52 @@
     "Modified: / 18.3.1999 / 18:15:46 / stefan"
 !
 
+fileOutClassInstVarDefinitionOn:aStream withNameSpace:withNameSpace
+    "append an expression to define my classInstanceVariables on aStream"
+
+    |anySuperClassInstVar|
+
+    myClass isLoaded ifFalse:[
+        ^ myClass basicFileOutDefinitionOn:aStream withNameSpace:withNameSpace
+    ].
+
+    withNameSpace ifTrue:[
+        myClass name printOn:aStream.
+    ] ifFalse:[
+        myClass printClassNameOn:aStream.
+    ].
+    aStream nextPutAll:' class instanceVariableNames:'''.
+    self printInstVarNamesOn:aStream indent:8.
+    aStream nextPutAll:''''.
+
+    "mhmh - good idea; saw this in SmallDraw sourcecode ..."
+
+    anySuperClassInstVar := false.
+    myClass allSuperclassesDo:[:aSuperClass |
+        aSuperClass class instVarNames do:[:ignored | anySuperClassInstVar := true].
+    ].
+
+    aStream cr; cr; nextPut:(Character doubleQuote); cr; space.
+    anySuperClassInstVar ifFalse:[
+        aStream  
+            nextPutLine:'No other class instance variables are inherited by this class.'.
+    ] ifTrue:[
+        aStream  
+            nextPutLine:'The following class instance variables are inherited by this class:'.
+        aStream cr.
+        myClass allSuperclassesDo:[:aSuperClass |
+            aStream tab; nextPutAll:aSuperClass name; nextPutAll:' - '.
+            aStream nextPutLine:(aSuperClass class instanceVariableString).
+        ].
+
+    ].
+    aStream nextPut:(Character doubleQuote); cr.
+
+    "Created: / 10.12.1995 / 16:31:25 / cg"
+    "Modified: / 1.4.1997 / 16:00:33 / stefan"
+    "Modified: / 3.2.2000 / 23:05:28 / cg"
+!
+
 fileOutDefinitionOn:aStream
     myClass fileOutClassInstVarDefinitionOn:aStream
 
@@ -743,7 +789,7 @@
 !Metaclass class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Metaclass.st,v 1.188 2004-03-19 08:17:11 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Metaclass.st,v 1.189 2004-03-30 18:53:26 cg Exp $'
 ! !
 
 Metaclass initialize!