aboutsummaryrefslogtreecommitdiff
path: root/nerv/matrix/generic/mmatrix.c
diff options
context:
space:
mode:
Diffstat (limited to 'nerv/matrix/generic/mmatrix.c')
-rw-r--r--nerv/matrix/generic/mmatrix.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/nerv/matrix/generic/mmatrix.c b/nerv/matrix/generic/mmatrix.c
index 01dd9e5..709c08e 100644
--- a/nerv/matrix/generic/mmatrix.c
+++ b/nerv/matrix/generic/mmatrix.c
@@ -72,10 +72,44 @@ int nerv_matrix_(lua_copy_from)(lua_State *L) {
return 0;
}
+int nerv_matrix_(lua_expand_frm)(lua_State *L)
+{
+ Status status;
+ Matrix *a = luaT_checkudata(L, 1, nerv_matrix_(tname));
+ const Matrix *b = luaT_checkudata(L, 2, nerv_matrix_(tname));
+ int context = luaL_checkinteger(L, 3);
+
+ int nargs = lua_gettop(L);
+ int b_begin = nargs > 3 ? luaL_checkinteger(L, 4) : 0;
+ int b_end = nargs > 4 ? luaL_checkinteger(L, 5) : b->nrow;
+ nerv_matrix_(expand_frm)(a, b, context, b_begin, b_end, &status);
+ NERV_LUA_CHECK_STATUS(L, status);
+ return 0;
+}
+
+int nerv_matrix_(lua_rearrange_frm)(lua_State *L)
+{
+ Status status;
+ Matrix *a = luaT_checkudata(L, 1, nerv_matrix_(tname));
+ const Matrix *b = luaT_checkudata(L, 2, nerv_matrix_(tname));
+ int step = luaL_checkinteger(L, 3);
+
+ int nargs = lua_gettop(L);
+ int b_begin = nargs > 3 ? luaL_checkinteger(L, 4) : 0;
+ int b_end = nargs > 4 ? luaL_checkinteger(L, 5) : b->nrow;
+ nerv_matrix_(rearrange_frm)(a, b, step, b_begin, b_end, &status);
+ NERV_LUA_CHECK_STATUS(L, status);
+ return 0;
+
+
+}
+
static const luaL_Reg nerv_matrix_(extra_methods)[] = {
{"load", nerv_matrix_(lua_load)},
{"save", nerv_matrix_(lua_save)},
{"copy_from", nerv_matrix_(lua_copy_from)},
+ {"expand_frm", nerv_matrix_(lua_expand_frm)},
+ {"rearrange_frm", nerv_matrix_(lua_rearrange_frm)},
{NULL, NULL}
};