Dan Sugalski <[EMAIL PROTECTED]> wrote:

> The one question I have is whether we need to have a "call class
> method" operation that, when you invoke it, looks up the class of the
> object and redispatches to it, or whether class methods are just
> methods called on class objects.

The terms are misleading a bit here.
- a ParrotClass isa delegate PMC
- a ParrotObject isa ParrotClass
- a HLL class isa Parrotclass and a low-level PMC object
- a HLL object isa all of above

  .sub _main
    .local pmc class
    .local pmc obj
    newclass class, "Foo"       # create a new Foo class
    find_type $I0, "Foo"        # find it's dynamic type number
    new obj, $I0                # instantiate a foo object
    obj."_meth"()               # call obj."_meth"
    class."_meth"()             # and as a class method
    end
  .end

  .namespace [ "Foo" ]          # start namespace "Foo"
  .sub _meth method
     print "in meth\n"
     self."_other_meth"()
  .end

  .sub _other_meth method
     print "in other_meth\n"
     isa $I0, self, "ParrotObject"
     print $I0
     print "\n"
  .end

This prints:

  in meth
  in other_meth
  1
  in meth
  in other_meth
  0

leo

Reply via email to