src/pmc/sub.pmc - Subroutine
These are the vtable functions for the Sub (subroutine) base class
- void init()
- Initializes the subroutine.
- void destroy()
- Destroys the subroutine.
- STRING *get_string()
- Returns the name of the subroutine.
- void set_string_native(STRING *subname)
- Sets the name of the subroutine.
- void set_pointer(void *value)
- Sets the pointer to the actual subroutine.
- *** Don't use that - use .Sub constants instead ***
- void *get_pointer()
- Returns the address of the actual subroutine.
- INTVAL get_integer_keyed(PMC *key)
- This just unconditionally returns the start of bytecode.
It's wrong,
wrong,
wrong,
*WRONG*.
And there's no other good way,
so it's here for now. -DRS
- INTVAL defined()
- INTVAL get_bool()
- Returns True.
- opcode_t *invoke(void *next)
- Invokes the subroutine.
- PMC *clone()
- Creates and returns a clone of the subroutine.
- void assign_pmc(PMC *other)
- Set SELF to the data in other.
- void mark()
- Marks the sub as live.
- INTVAL is_equal(PMC *value)
- Returns whether the two subroutines are equal.
- void visit(visit_info *info)
- This is used by freeze/thaw to visit the contents of the sub.
- void freeze(visit_info *info)
- Archives the subroutine.
- void thaw(visit_info *info)
- Unarchives the subroutine.
- PMC *inspect()
- Returns the full set of meta-data about the sub.
- PMC *inspect_str(STRING *what)
- Returns the specified item of metadata about the sub.
Allowable values are:
- pos_required
- The number of required positional arguments
- pos_optional
- The number of optional positional arguments
- named_required
- The number of required named arguments
- named_optional
- The number of optional named arguments
- pos_slurpy
- 1 if it takes slurpy positional arguments,
0 if not
- named_slurpy
- 1 if it takes slurpy named arguments,
0 if not
- PMC *get_namespace()
- Return the namespace PMC,
where the Sub is defined.
- TODO return namespace_stashinstead.
- INTVAL __get_regs_used(char *kind)
- Return amount of used registers for register kinds "I",
"S",
"P",
"N".
- PMC *get_lexinfo()
- Return the LexInfo PMC,
if any or a Null PMC.
- PMC *get_multisig()
- Return the MMD signature PMC,
if any or a Null PMC.
- PMC *get_outer()
- Gets the sub that is the outer of this one,
if any or a Null PMC.
- void set_outer(PMC *outer)
- Sets the sub that is the outer of this one.
- INTVAL arity()
- Return the arity of the Sub (the number of arugments,
excluding optional and slurpy arguments).