MCClassDefinition.st
changeset 565 4df955210a05
parent 521 ac7de5d52ead
child 610 7760d3e2045c
--- a/MCClassDefinition.st	Sat May 05 21:23:43 2012 +0200
+++ b/MCClassDefinition.st	Wed Jun 13 13:04:59 2012 +0200
@@ -271,20 +271,50 @@
 !MCClassDefinition methodsFor:'converting'!
 
 asChange
+    |instVarNamesString classVarNamesString classInstVarNamesString poolDictionariesString
+     definitionSelector|
 
+    instVarNamesString := self instVarNames asStringWith:' '.
+    classVarNamesString := self classVarNames asStringWith:' '.
+    classInstVarNamesString := self classInstVarNames asStringWith:' '.
+    poolDictionariesString := self poolDictionaries asStringWith:' '.
+
+    definitionSelector := #'subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:'.
+    type ~~ #normal ifTrue:[
+        type == #variable ifTrue:[
+            definitionSelector := #'variableSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:'.
+        ] ifFalse:[
+            type == #bytes ifTrue:[
+                definitionSelector := #'variableByteSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:'.
+            ] ifFalse:[
+                type == #words ifTrue:[
+                    "for Squeak compatibility: that is long-words !!!!!!!!"
+                    definitionSelector := #'variableLongSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:'.
+                ] ifFalse:[
+                    type == #compiledMethod ifTrue:[
+                        definitionSelector := #'subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:'.
+                    ] ifFalse:[
+self halt:'unhandled class-type'.
+                    ]
+                ]
+            ]
+        ]
+    ].
     ^ClassDefinitionChange new
         mcDefinition: self;
+        definitionSelector: definitionSelector;
         className: name;
         superClassName: superclassName;
-        instanceVariableNames: (String streamContents: [:s|self instVarNames do:[:nm|s nextPutAll: nm; space]]) ;
-        classVariableNames: (String streamContents: [:s|self classVarNames do:[:nm|s nextPutAll: nm; space]]) ;
-        classInstanceVariableNames: (String streamContents: [:s|self classInstVarNames do:[:nm|s nextPutAll: nm; space]]) ;
+        instanceVariableNames: instVarNamesString ;
+        classVariableNames: classVarNamesString ;
+        classInstanceVariableNames: classInstVarNamesString ;
+        poolDictionaries: poolDictionariesString ;
         category: category;
         yourself
 
     "Created: / 13-10-2010 / 17:11:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 08-11-2010 / 17:56:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 04-09-2011 / 19:50:56 / cg"
+    "Modified: / 13-06-2012 / 12:57:38 / cg"
 ! !
 
 !MCClassDefinition methodsFor:'initializing'!
@@ -574,11 +604,11 @@
 !MCClassDefinition class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCClassDefinition.st,v 1.7 2011-11-25 16:46:22 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCClassDefinition.st,v 1.8 2012-06-13 11:04:59 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCClassDefinition.st,v 1.7 2011-11-25 16:46:22 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCClassDefinition.st,v 1.8 2012-06-13 11:04:59 cg Exp $'
 !
 
 version_SVN