NAME ^

src/pmc.c - The base vtable calling functions

DESCRIPTION ^

Functions ^

PARROT_API PARROT_CANNOT_RETURN_NULL PARROT_MALLOC PMC *pmc_new(PARROT_INTERP, INTVAL base_type)

Creates a new PMC of type base_type (which is an index into the list of PMC types declared in vtables in include/parrot/pmc.h). Once the PMC has been successfully created and its vtable pointer initialized, we call its init method to perform any other necessary initialization.

PARROT_API PARROT_CANNOT_RETURN_NULL PMC *pmc_reuse(PARROT_INTERP, NOTNULL(PMC *pmc), INTVAL new_type, SHIM(UINTVAL flags))

Reuse an existing PMC, turning it into an empty PMC of the new type. Any required internal structure will be put in place (such as the extension area) and the PMC will be ready to go. This will throw an exception if the PMC is constant or of a singleton type (such as the environment PMC) or is being turned into a PMC of a singleton type.

PARROT_WARN_UNUSED_RESULT PARROT_CANNOT_RETURN_NULL static PMC *get_new_pmc_header(PARROT_INTERP, INTVAL base_type, UINTVAL flags)

Gets a new PMC header.

PARROT_API PARROT_CANNOT_RETURN_NULL PMC *pmc_new_noinit(PARROT_INTERP, INTVAL base_type)

Creates a new PMC of type base_type (which is an index into the list of PMC types declared in vtables in include/parrot/pmc.h). Unlike pmc_new(), pmc_new_noinit() does not call its init method. This allows separate allocation and initialization for continuations.

PARROT_API PARROT_CANNOT_RETURN_NULL PMC *constant_pmc_new_noinit(PARROT_INTERP, INTVAL base_type)

Creates a new constant PMC of type base_type.

PARROT_API PARROT_CANNOT_RETURN_NULL PMC *constant_pmc_new(PARROT_INTERP, INTVAL base_type)

Creates a new constant PMC of type base_type, the call init.

PARROT_API PARROT_CANNOT_RETURN_NULL PMC *pmc_new_init(PARROT_INTERP, INTVAL base_type, NULLOK(PMC *init))

As pmc_new(), but passes init to the PMC's init_pmc() method.

PARROT_API PARROT_CANNOT_RETURN_NULL PMC *constant_pmc_new_init(PARROT_INTERP, INTVAL base_type, NULLOK(PMC *init))

As constant_pmc_new, but passes init to the PMC's init_pmc method.

PARROT_API INTVAL pmc_register(PARROT_INTERP, NOTNULL(STRING *name))

This segment handles PMC registration and such.

PARROT_API PARROT_WARN_UNUSED_RESULT INTVAL pmc_type(PARROT_INTERP, NOTNULL(STRING *name))

Returns the PMC type for name.

PARROT_API INTVAL pmc_type_p(PARROT_INTERP, NOTNULL(PMC *name))

Returns the PMC type for name.

PARROT_WARN_UNUSED_RESULT PARROT_CANNOT_RETURN_NULL static PMC *create_class_pmc(PARROT_INTERP, INTVAL type)

TODO: Not yet documented!!!

PARROT_API void Parrot_create_mro(PARROT_INTERP, INTVAL type)

Create the MRO (method resolution order) array for this type.

DOD registry interface ^

PARROT_API void dod_register_pmc(PARROT_INTERP, NOTNULL(PMC *pmc))

Registers the PMC with the interpreter's DOD registery.

void dod_unregister_pmc(PARROT_INTERP, NOTNULL(PMC *pmc))

Unregisters the PMC from the interpreter's DOD registry.

SEE ALSO ^

include/parrot/vtable.h.

5.1.0.14.2.20011008152120.02158148@pop.sidhe.org (http://www.nntp.perl.org/group/perl.perl6.internals/5516).

HISTORY ^

Initial version by Simon on 2001.10.20.


parrot