eris: add new API function lua_insert_frame
This commit is contained in:
@@ -203,6 +203,23 @@ LUA_API void lua_insert (lua_State *L, int idx) {
|
||||
}
|
||||
|
||||
|
||||
// Insert specified number of 'nil' at base of the stack.
|
||||
LUA_API void lua_insert_frame (lua_State *L, int count) {
|
||||
StkId p, q;
|
||||
if (count > 0) {
|
||||
lua_lock(L);
|
||||
api_check(L, L->top + count <= L->stack_last, "Not enough space to insert frame");
|
||||
p = L->ci->func + 1;
|
||||
for (q = L->top - 1; q >= p; q--)
|
||||
setobjs2s(L, q + count, q);
|
||||
L->top += count;
|
||||
for (q = p + count; p < q; p++)
|
||||
setnilvalue(p);
|
||||
lua_unlock(L);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void moveto (lua_State *L, TValue *fr, int idx) {
|
||||
TValue *to = index2addr(L, idx);
|
||||
api_checkvalidindex(L, to);
|
||||
|
||||
@@ -147,6 +147,7 @@ LUA_API void (lua_settop) (lua_State *L, int idx);
|
||||
LUA_API void (lua_pushvalue) (lua_State *L, int idx);
|
||||
LUA_API void (lua_remove) (lua_State *L, int idx);
|
||||
LUA_API void (lua_insert) (lua_State *L, int idx);
|
||||
LUA_API void (lua_insert_frame) (lua_State *L, int count);
|
||||
LUA_API void (lua_replace) (lua_State *L, int idx);
|
||||
LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx);
|
||||
LUA_API int (lua_checkstack) (lua_State *L, int sz);
|
||||
|
||||
Reference in New Issue
Block a user