NAME

src/pmc/resizablepmcarray.pmc - resizable array for PMCs only

DESCRIPTION

This class, ResizablePMCArray, implements an resizable array which stores PMCs. It puts things into Integer, Float, or String PMCs as appropriate.

Internal Functions

inline static void do_shift(ARGIN(PMC *arr))
Removes and returns an item from the start of the array. Moves the whole rest of the array around.
inline static void do_unshift(ARGIN(PMC *arr))
Adds an item at the start of the array. Moves the whole rest of the array around.

Vtable Functions

void init_int(INTVAL size)
Initializes the array.
void set_integer_native(INTVAL size)
Resizes the array to size elements.
FLOATVAL shift_float()
INTVAL shift_integer()
PMC *shift_pmc()
STRING *shift_string()
Removes and returns an item from the start of the array.
PMC *get_pmc_keyed_int(INTVAL key)
Returns the PMC value of the element at index key.
void set_pmc_keyed_int(INTVAL key, PMC *src)
Sets the PMC value of the element at index key to *src.
void set_pmc_keyed(PMC *key, PMC *src)
Sets the PMC value of the element keyed by key to *src.
void delete_keyed_int(INTVAL key)
void delete_keyed(PMC *key)
Delete the element at index key.
INTVAL exists_keyed_int(INTVAL key)
INTVAL exists_keyed(PMC *key)
Returns TRUE is the element at key exists; otherwise returns false.
INTVAL defined_keyed_int(INTVAL key)
Returns TRUE is the element at key is defined; otherwise returns false.
void push_float(FLOATVAL value)
void push_integer(INTVAL value)
void push_pmc(PMC *value)
void push_string(STRING *value)
Extends the array by adding an element of value *value to the end of the array.
INTVAL pop_float()
INTVAL pop_integer()
PMC *pop_pmc()
STRING *pop_string()
void unshift_float(FLOATVAL value)
void unshift_integer(INTVAL value)
void unshift_pmc(PMC *value)
void unshift_string(STRING *value)
Extends the array by adding an element of value *value to the begin of the array.
PMC *clone()
Creates and returns a copy of the array.
STRING *get_repr()
Returns the Parrot string representation ResizablePMCArray.
void splice(PMC *from, INTVAL offset, INTVAL count)
Replaces count elements starting at offset with the elements in from.Note that the from PMC can be of any of the various array types.

Methods

METHOD append(PMC *other)
Append the other array to this array.
METHOD PMC* shift()
METHOD PMC* pop()
Method forms to remove and return a PMC from the beginning or end of the array.
METHOD unshift(PMC* value)
METHOD push(PMC* value)
Method forms to add a PMC to the beginning or end of the array.

Auxiliar functions

static void do_shift(PMC *arr)
Common part for shift operations.
static void do_unshift(PARROT_INTERP, PMC *arr, PMC *val)
Common part for unshift operations.
static void throw_shift_empty(PARROT_INTERP)
static void throw_pop_empty(PARROT_INTERP)
Throws with the appropriate message.

See also

docs/pdds/pdd17_basic_types.pod.