diff --git a/src/pmc/nummatrix2d.pmc b/src/pmc/nummatrix2d.pmc index edd84e7..468e768 100644 --- a/src/pmc/nummatrix2d.pmc +++ b/src/pmc/nummatrix2d.pmc @@ -486,6 +486,23 @@ pmclass NumMatrix2D dynpmc auto_attrs { attrs->storage = new_s; free(old_s); } + + METHOD initialize_from_array(INTVAL x_size, INTVAL y_size, PMC *values) { + Parrot_NumMatrix2D_attributes * const attrs = PARROT_NUMMATRIX2D(SELF); + FLOATVAL * const s = attrs->storage; + INTVAL x = attrs->x; + INTVAL y = attrs->y; + INTVAL i, j, num = 0; + resize_matrix(INTERP, SELF, x_size - 1, y_size - 1); + for (i = 0; i < y_size; i++) { + for (j = 0; j < x_size; j++) { + FLOATVAL value = VTABLE_get_number_keyed(INTERP, values, num); + num++; + ITEM_XY_ROWMAJOR(s, x, y, j, i) = value; + } + } + } + /* =back