Changing the Class of an Object
Stephen Pair
spair at advantive.com
Thu Dec 14 04:06:37 UTC 2000
Here's a change set that will do the trick...you'll need to compile a new
VM. It adds a method Object>>class:
This was based on some other work involving explicit metaclass
programming...can't remember who it was though.
- Stephen
> -----Original Message-----
> From: Andrew P. Black [mailto:black at cse.ogi.edu]
> Sent: Wednesday, December 13, 2000 8:08 PM
> To: Squeak Mailing List
> Subject: Changing the Class of an Object
>
>
> I've been looking at porting to Squeak some cunning code written by
> Stephane Ducasse. The idea is to intercept messages sent to a
> particular object by creating for that object a rudimentary class
> (actually a subclass of Behavior) that inherits from the objects real
> class but has new definitions for the intercepted messages. These
> definitions can do super-sends to get the normal behavior.
>
> The question that I have is: is there a way in Squeak to change the
> class of an object, the equivalent of IBM Smalltalk's fixClassTo:
> The only way that I know of doing this would be to make a new object
> that is an instance of the desired class, copy the slots, and use
> become:. But this is obviously very expensive! What I would like to
> do is just "overwrite the class pointer". But I can't see a way of
> getting at it.
>
> Any suggestions?
>
> Andrew
-------------- next part --------------
A non-text attachment was scrubbed...
Name: class-mutation.1.cs
Type: application/octet-stream
Size: 9347 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20001213/ebf64e36/class-mutation.1.obj
More information about the Squeak-dev
mailing list
|