parrotcode: The base vtable calling functions | |
Contents | C |
src/pmc.c - The base vtable calling functions
PMC *pmc_new(Interp *interpreter, INTVAL base_type)
base_type
(which is an index into the list of PMC types declared in Parrot_base_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.PMC *pmc_reuse(Interp *interpreter, PMC *pmc, INTVAL new_type, UINTVAL flags)
static PMC *get_new_pmc_header(Interp *interpreter, INTVAL base_type, UINTVAL flags)
PMC *pmc_new_noinit(Interp *interpreter, INTVAL base_type)
base_type
(which is an index into the list of PMC types declared in Parrot_base_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.PMC *constant_pmc_new_noinit(Interp *interpreter, INTVAL base_type)
base_type
.PMC *constant_pmc_new(Interp *interpreter, INTVAL base_type)
base_type
,
the call init
.PMC *pmc_new_init(Interp *interpreter, INTVAL base_type, PMC *init)
pmc_new()
,
but passes init
to the PMC's init_pmc()
method.PMC *constant_pmc_new_init(Interp *interpreter, INTVAL base_type, PMC *init)
constant_pmc_new
,
but passes init
to the PMC's init_pmc
method.INTVAL pmc_register(Parrot_Interp interp, STRING *name)
INTVAL pmc_type(Parrot_Interp interp, STRING *name)
name
.void Parrot_mmd_register_parents(Interp*, INTVAL type, MMD_init *, INTVAL)
static size_t key_hash_int(Interp *interp, Hash *hash, void *value)
value
.
hash
is ignored.dod_register_pmc()
.static int int_compare(Parrot_Interp interp, void *a, void *b)
a != b
.dod_register_pmc()
.void dod_register_pmc(Parrot_Interp interpreter, PMC *pmc)
void dod_unregister_pmc(Parrot_Interp interpreter, PMC *pmc)
include/parrot/vtable.h.
5.1.0.14.2.20011008152120.02158148@pop.sidhe.org
(http://www.nntp.perl.org/group/perl.perl6.internals/5516).
Initial version by Simon on 2001.10.20.
|