diff options
Diffstat (limited to 'nerv/matrix/generic/mmatrix.c')
-rw-r--r-- | nerv/matrix/generic/mmatrix.c | 34 |
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} }; |