pmc/luatable.pmc - Lua Table
LuaTable
extends LuaBase
to provide a class with the behaviour of the Lua Table
type.
This implementation is based on the Lua 4.0 one.
void init()
Initializes the instance.
void mark()
Marks the hash as live.
void destroy()
Free hash structure.
STRING *name()
Return the string "table".
PMC *clone()
PMCs are always handled by-reference in Parrot.
So,
copying register contents only copies the reference to the PMC.
For LuaString,
LuaNumber,
LuaBoolean,
this is not correct,
as Lua has by-value semantics for these types.
In order to be able to handle register "move" instructions,
this should be implemented using clone().
However,
LuaTable and LuaFunction do have by-reference semantics.
As you don't know the type during compile-time of an object,
just always use clone() to copy register contents.
LuaTable and LuaFunction should therefore only clone the reference to themselves,
not make a deep copy.
STRING *get_string()
void set_pmc(PMC *other)
PMC *get_pmc_keyed (PMC *key)
table
accessor.
void set_pmc_keyed(PMC *key, PMC *value)
table
mutator.
void set_pmc_keyed_str(STRING *key, PMC *value)
Need by NameSpace.export_to().
INTVAL elements()
Returns the number of elements in the table.
INTVAL is_equal(PMC *value)
The ==
operation.
Compares reference (not in depth).
INTVAL cmp(PMC *value)
PMC *get_metatable()
PMC *len()
PMC *next(PMC *index)
PMC *rawequal(PMC *value)
PMC *rawget(PMC *key)
void rawset(PMC *key, PMC *value)
void set_metatable(PMC *meta)