| parrotcode: PIR implementation for creating protoobjects | |
| Contents | Libraries | 

Protoobject.pir - PIR implementation for creating protoobjects

    load_bytecode 'Protoobject.pbc'
    .local pmc protomaker, fooclass, fooproto
    # create a protoobject for class Foo
    protomaker = new 'Protomaker'
    fooclass = get_class 'Foo'
    fooproto = protoobj.'new_proto'(fooclass)
    # create a subclass 'NS::Bar' from 'Foo' with attributes
    .local pmc barclass, barproto
    protoobj = new 'Protomaker'
    fooclass = get_class 'Foo'
    (barclass, barproto) = protoobj.'new_subclass'(fooclass, 'NS::Bar', '$attr')

Objects of class Protomaker are used to construct and initialize "protoobjects" for Parrot classes. The concept of protoobjects comes from Perl 6; protoobjects are "empty" instances of a class -- i.e., they are instances that are simply more undefined than a normal instance.
Newly created protoobjects are automatically added as symbols in a corresponding namespace -- for example, the protoobject for Foo::Bar::Baz is automatically entered as the 'Baz' symbol in the ['Foo';'Bar'] namespace.

class. The newly created protoobject is placed as an entry in the appropriate namespace and returned.baseclass with the given name, adds attributes attr1, attr2, etc. to the subclass, and then creates a corresponding protoobject for the subclass.name parameter is either an array of strings or a string with namespace identifiers separated by double colons (::).
|  |   |