Nicholas Clark <[EMAIL PROTECTED]> wrote:
> On Tue, Apr 26, 2005 at 08:55:21AM +0200, Leopold Toetsch wrote:

>> - morph for scalars is ok: e.g. an Integer transforms itself to a Float
>> - morph for arbitrary objects must never be done automatically

> So really my morph code ought to check the new type to see if it understands
> it, and if not throw an exception?

Yep.

> I was wondering on what the best way to do a fast lookup of "is this new class
> related to me" is, given that ponie is intending to use dynamic PMCs, so I
> can't see a way to make a switch statement on PMC numbers.

See e.g. dynclasses/tclint.pmc:class_init():

  void class_init() {
    if (pass) {
       ... lookup your types

At this pointer classes are registerd and have type enums.

> The best idea I have so far is actually to compare the address of the morph
> function in my vtable with the morph function in the vtable of the new type -
> if they are the same, then clearly they're related PMC classes.

For sure doable too, but looks a bit fragile.

> Nicholas Clark

leo

Reply via email to