| 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 existing class Foo
protomaker = get_hll_global 'Protomaker'
fooclass = get_class 'Foo'
fooproto = protomaker.'new_proto'(fooclass)
# create a subclass 'NS::Bar' from 'Foo' with attributes
.local pmc bclass, bproto
fooclass = get_class 'Foo'
(bclass, bproto) = protomaker.'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 (::).
|
|
|