NAME
src/pmc/default.pmc - Abstract root class
DESCRIPTION
These are the vtable functions for the default PMC class.
All methods which are not defined here get a default implementation generated from src/vtable.tbl by tools/build/pmc2c.pl.
Functions
static STRING *caller(PARROT_INTERP, PMC *pmc)
Returns a C string for the name of static void cant_do_method(PARROT_INTERP, PMC *pmc, int index)
Throws an exception "$methname() not implemented in class '$class'",
used by all unimplemented messages.
static void cant_do_write_method(PARROT_INTERP, PMC *pmc, int index)
Throws an exception "$methname() on read-only instance of '$class'",
used by all updating messages on read-only instances.
static INTVAL check_set_std_props(PARROT_INTERP, PMC *pmc, STRING *key, PMC *value)
Called from static void propagate_std_props(PARROT_INTERP, PMC *self, PMC *prop_hash)
Set pending standard properties in static INTVAL has_pending_std_props(ARGIN(const PMC *self))
Returns true if propagate_std_props() would create a non-empty prophash.
static PMC* check_get_std_props(PARROT_INTERPeter, PMC *self, STRING *key)
Checks if we can infer the value of static PMC * make_prop_hash(PARROT_INTERP, PMC *self)
Create a property hash for static INTVAL does_isa(PARROT_INTERP, STRING *method, STRING *what)
Compares
*pmc
.
setprop()
.Returns a true value if setprop()
can avoid actually setting a property in the prophash.
If it returns true,
the property setting will be reflected in a future call to propagate_std_props()
prop_hash
.
key
property from self
without looking at its prophash.
Returns PMCNULL
if not,
returns the value otherwise.
self
.
Returns the created hash.
Inferred properties will be added to the hash and it will be set as PMC_metadata(self)
.
*method
and *what
.
Returns true (1) if method is found in what,
false (0) otherwise.Methods
void init()
Does nothing.
void init_pmc(PMC *initializer)
With a null void destroy()
Does nothing.
PMC *instantiate(PMC *init)
Default fallback.
Creates a new PMC of the type of the class SELF and calls init().
void mark()
Panics with a "no custom mark routine defined" error message.
PMC *getprop(STRING *key)
Returns the property for void setprop(STRING *key, PMC *value)
Sets the property for void delprop(STRING *key)
Deletes the property for PMC *getprops()
Returns the PMC's properties or the NULL PMC if no properties exist.
INTVAL type()
Returns the PMC's type.
STRING *name()
Returns the name of the PMC.
PMC *get_namespace
Return the namespace for this PMC.
PMC *find_method(STRING *method_name)
Looks up the method for void add_method(STRING *method_name, PMC *sub)
Store the method as a global in the namespace of this class.
INTVAL get_integer_keyed_int(INTVAL key)
Converts FLOATVAL get_number_keyed_int(INTVAL key)
Converts STRING *get_string_keyed_int(INTVAL key)
Converts PMC *get_pmc_keyed_int(INTVAL key)
Converts void *get_pointer()
Returns the address of the PMC.
INTVAL is_same(PMC *value)
Returns whether the PMC is the same PMC as void assign_pmc(PMC *value)
void assign_string_native(PMC *value)
Defaults fall back to void morph(PMC* type)
Changes the PMC to a PMC of a new type
void set_integer_keyed_int(INTVAL key, INTVAL value)
Converts void set_number_keyed_int(INTVAL key, FLOATVAL value)
Converts void set_string_keyed_int(INTVAL key, STRING *string)
Converts void set_pmc_keyed_int(INTVAL key, PMC *value)
Converts INTVAL hashvalue()
Calculate hashvalue for PMC.
Default behaviour stringify and use string.
INTVAL is_equal(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'is_equal'.
INTVAL is_equal_num(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'is_equal_num'.
INTVAL is_equal_string(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'is_equal'.
INTVAL exists_keyed_int(INTVAL key)
Converts INTVAL defined()
Returns true.
INTVAL defined_keyed_int(INTVAL key)
Converts void delete_keyed_int(INTVAL key)
Converts INTVAL can(STRING *method)
Reports whether the PMC "can" perform INTVAL does(STRING *interface)
Reports whether the PMC "does" perform INTVAL does_pmc(PMC *role)
Reports whether the PMC "does" the INTVAL isa_pmc(PMC *_class)
Reports whether the PMC "isa" INTVAL isa(STRING *_class)
Reports whether the PMC "isa" PMC *inspect_str(STRING *what)
Provides introspection of a specific piece of information about the PMC.
PMC *inspect()
Returns a Hash describing the class,
with key/value pairs as described in inspect_str.
PMC *get_class()
Returns SELF.
A PMC is its own class.
PMC *get_attr_keyed(PMC *key, STRING *name)
Default version of keyed attribute lookups.
Discards the key and does a lookup by the string name passed in.
void set_attr_keyed(PMC *key, STRING *name, PMC *value)
Default version of keyed attribute set.
Discards the key and does a set by the string name passed in.
void add_parent(PMC *parent)
Add class void visit(PMC *info)
Used by GC to mark the PMC.
PMC* clone()
Clones this PMC.
By default,
this just does a freeze and thaw.
void freeze(PMC *info)
Does nothing.
void thaw(PMC *info)
Initializes the PMC during unarchiving.
void thawfinish(PMC *info)
Does nothing.
PMC *add(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'add'.
PMC *add_int(INTVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'add_int'.
PMC *add_float(FLOATVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'add_float'.
void i_add(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'i_add'.
void i_add_int(INTVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_add_int'.
void i_add_float(FLOATVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_add_float'.
PMC *subtract(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'subtract'.
PMC *subtract_int(INTVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'subtract_int'.
PMC *subtract_float(FLOATVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'subtract_float'.
void i_subtract(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'i_subtract'.
void i_subtract_int(INTVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_subtract_int'.
void i_subtract_float(FLOATVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_subtract_float'.
PMC *multiply(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'multiply'.
PMC *multiply_int(INTVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'multiply_int'.
PMC *multiply_float(FLOATVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'multiply_float'.
void i_multiply(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'i_multiply'.
void i_multiply_int(INTVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_multiply_int'.
void i_multiply_float(FLOATVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_multiply_float'.
PMC *divide(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'divide'.
PMC *divide_int(INTVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'divide_int'.
PMC *divide_float(FLOATVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'divide_float'.
void i_divide(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'i_divide'.
void i_divide_int(INTVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_divide_int'.
void i_divide_float(FLOATVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_divide_float'.
PMC *floor_divide(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'floor_divide'.
PMC *floor_divide_int(INTVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'floor_divide_int'.
PMC *floor_divide_float(FLOATVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'floor_divide_float'.
void i_floor_divide(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'i_floor_divide'.
void i_floor_divide_int(INTVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_floor_divide_int'.
void i_floor_divide_float(FLOATVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_floor_divide_float'.
PMC *modulus(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'modulus'.
PMC *modulus_int(INTVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'modulus_int'.
PMC *modulus_float(FLOATVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'modulus_float'.
void i_modulus(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'i_modulus'.
void i_modulus_int(INTVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_modulus_int'.
void i_modulus_float(FLOATVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_modulus_float'.
INTVAL cmp(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'cmp'.
INTVAL cmp_num(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'cmp_num'.
INTVAL cmp_string(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'cmp_string'.
PMC *cmp_pmc(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'cmp_pmc'.
PMC *logical_or(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'logical_or'.
PMC *logical_and(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'logical_and'.
PMC *logical_xor(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'logical_xor'.
PMC *concatenate(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'concatenate'.
PMC *concatenate_str(STRING *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'concatenate_str'.
void i_concatenate(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'i_concatenate'.
void i_concatenate_str(STRING *value)
Default fallback.
Performs a multiple dispatch call for 'i_concatenate_str'.
PMC *repeat(PMC *value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'repeat'.
PMC *repeat_int(INTVAL value, PMC *dest)
Default fallback.
Performs a multiple dispatch call for 'repeat_int'.
void i_repeat(PMC *value)
Default fallback.
Performs a multiple dispatch call for 'i_repeat'.
void i_repeat_int(INTVAL value)
Default fallback.
Performs a multiple dispatch call for 'i_repeat_int'.
initializer
,
calls init()
,
else throws an exception.
*key
.
If no property is defined then the NULL PMC is returned.
*key
to *value
.
*key
.
*method_name
and returns it.
If no method is found then NULL
is returned.
key
to a PMC key and returns the result of calling get_integer_keyed()
with it.
key
to a PMC key and returns the result of calling get_number_keyed()
with it.
key
to a PMC key and returns the result of calling get_string_keyed()
with it.
key
to a PMC key and returns the result of calling get_pmc_keyed()
with it.
value
(whether they're the same pointer).
set_pmc
and set_string_native
.
key
to a PMC key and calls set_integer_keyed()
with it and value
.
key
to a PMC key and calls set_number_keyed()
with it and value
.
key
to a PMC key and calls set_string_keyed()
with it and value
.
key
to a PMC key and calls set_pmc_keyed()
with it and value
.
key
to a PMC key and returns the result of calling exists_keyed()
with it.
key
to a PMC key and returns the result of calling defined_keyed()
with it.
key
to a PMC key and calls delete_keyed()
with it.
method
.
If the PMC implements the vtable function method
,
true (1) is returned; otherwise,
false (0) is returned.
interface
.
If the interface interface
is found in the PMC's interface list,
true (1) is returned; otherwise,
false (0) is returned.
role
.
_class
.
If the class _class
is found in the PMC's class hierarchy,
true (1) is returned; otherwise,
false (0) is returned.
_class
.
If the class _class
is found in the PMC's class hierarchy,
true (1) is returned; otherwise,
false (0) is returned.
parent
to the list of our parents.