I would really like if somebody can check that if we remove that cool
method SmartRefStream still work.
A couple tests would be welcome.
restoreClassInstVars
"Install the values of the class instance variables of UniClasses
(i.e. scripts slotInfo). classInstVars is ((#Player25 scripts slotInfo)
...). Thank you Mark Wai for the bug fix."
| normal aName newName newCls trans rList start |
self flag: #bobconv.
self moreObjects ifFalse: [^ self]. "are no UniClasses with class
inst vars"
classInstVars := super next. "Array of arrays"
normal := Object class instSize. "might give trouble if Player class
superclass changes size"
(structures at: #Player ifAbsent: [#()]) = #(0 'dependents'
'costume') ifTrue:
[trans := 1]. "now (0 costume costumes). Do the conversion of
Player class
inst vars in Update 509."
classInstVars do: [:list |
aName := (list at: 1) asSymbol.
rList := list.
newName := renamed at: aName ifAbsent: [aName].
newCls := Smalltalk at: newName
ifAbsent: [self error: 'UniClass definition
missing'].
("old conversion" trans == 1 and: [newCls inheritsFrom: Player])
ifTrue: [
"remove costumeDictionary from Player class inst vars"
rList := rList asOrderedCollection.
rList removeAt: 4]. "costumeDictionary's value"
start := list second = 'Update to read classPool' ifTrue: [4]
ifFalse: [2].
newCls class instSize = (normal + (rList size) - start + 1)
ifFalse:
[self error: 'UniClass superclass class has changed
size'].
"Need to install a conversion method mechanism"
start = 4 ifTrue: [newCls instVarAt: normal - 1 "classPool" put:
(list at: 3)].
start to: rList size do: [:ii |
newCls instVarAt: normal + ii - start + 1 put: (rList
at: ii)]].
_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project