NAME ^

src/pmc/multiarray.pmc - Multi-dimensional Array

DESCRIPTION ^

MultiArray extends Array to provide a multi-dimensional array.

This is one way for calculating offsets in 2 dimensional space.

MULTIDIM CALC OFFSET

Algorithm:

    i + j*Ni + k*Ni*Nj + l*Ni*Nj*Nk ...

where i, j, k, l... are coordinates in a multidimensional space and Ni, Nj, Nk... are the lengths of the dimensions.

Limitations: the array can only expand in the last dimension The first (n-1) dimensions of a n-dimensional array are fixed and layed out at array creation.

Functions ^

static INTVAL calc_offset(PARROT_INTERP, List *list, PMC *key)

Calculates the offset for *key.

void init()

Overrides the default in Array. There is no initialization.

INTVAL get_integer_keyed(PMC *key)

Returns the integer value for *key.

FLOATVAL get_number_keyed(PMC *key)

Returns the floating-point number value for *key.

STRING *get_string_keyed(PMC *key)

Returns the Parrot string value for *key.

PMC *get_pmc_keyed(PMC *key)

Returns the PMC value for *key.

void set_integer_keyed(PMC *key, INTVAL value)

Sets the integer value value at *key.

void set_number_keyed(PMC *key, FLOATVAL value)

Sets the floating-point number value value at *key.

void set_string_keyed(PMC *key, STRING *value)

Sets the Parrot string value value at *key.

void set_pmc_keyed(PMC *dest_key, PMC *src)

Unimplemented.

HISTORY ^

Initial revision by Josef Hook <joh@stacken.kth.se>

1.6 Based on list.c by Leopold Toetsch <lt@toetsch.at>


parrot