How difficult is multiple inheritance?

David LeBlanc whisper at accessone.com
Sun Jan 3 00:40:56 UTC 1999


ParcPlace tried MI about 10 years ago - lasted one or two minor revisions
and then they gave it up.

I think interfaces would be a better idea.

Dave LeBlanc

At 10:23 PM 1/2/99 +0100, you wrote:
>Hi!
>
>I wondered how easy (or difficult) it would be to add support for multiple
>superclasses (aka parents) to Squeak. I think, there's just one method
>Interpreter>>lookupMethodInClass: which would be affected by the change.
>
>Let's say, I create a new subclass of Behavior (called MapClass) which has
>an additional instance variable called "parents" that can contain nil or an
>(possible empty) array of other Behavior instances.  
>
>Then I'd modify the first part of the lookup method as follows
>
>  currentClass := class.
>  [currentClass ~= nilObj] whileTrue: [
>    "{ new/replaced code"
>    mapClass := self lookupWithParentMaps: currentClass.
>    mapClass ~= nilObj ifTrue: [^ mapClass].
>    "}"
>    currentClass := self superclassOf: currentClass].
>
>and write a new method (things in {{}} are pseudo code)
>
>lookupWithParentMaps: aClass
>  | dictionary found parents mapClass dictionary |
>  self inline: true.
>  "{ copied from old method"
>  dictionary := self 
>    fetchPointer: MessageDictionaryIndex
>    ofObject: currentClass.
>  found := self lookupMethodInDictionary: dictionary.
>  found ifTrue: [^ currentClass].
>  "}"
>  (self isMapClass: aClass) ifFalse: [^ nilObj].
>  parents := self
>    fetchPointer: {{indexOf('parents')}}
>    ofObject: aClass.
>  parents ~= nilObj ifTrue: [
>    1 to: {{parents size}} do: [:index |
>      mapClass := {{parents at: index}}.
>      mapClass := self lookupParentMaps: mapClass.
>      mapClass ~= nilObj ifTrue: [^ mapClass]]].
>  ^ nilObj
>
>and finally invent some solution for the #isMapClass: method (are there any
>format bits left?! Does anybody know?) then, well, then would this already
>add multiple inheritance?
>
>I'd like to hear your comments before I'll actually start some VM hacking.
>I'd even gracefully accept a patched and newly compiled Windows VM :-)
>
>
>bye
>--
>Stefan Matthias Aust  //  Are you ready to discover the twilight zone?
>
>
>





More information about the Squeak-dev mailing list