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, const 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(const PMC *self)
Returns true if propagate_std_props() would create a non-empty prophash.
static PMC* check_get_std_props(PARROT_INTERP, const PMC *self, const STRING *key)
Checks if we can infer the value of static PMC* make_prop_hash(PARROT_INTERP, PMC *self)
Create a property hash for
*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.Methods
void init()
Does nothing.
void init_pmc(PMC *initializer)
With a null void init_int(INTVAL initvalue)
Calls 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_name)
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.
init() and set_integer_native(initvalue).
Default implementation to allow more usages of init_int without having to implement it everywhere.
*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_name.
If the interface interface_name 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.