summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-04-05 00:48:02 +0800
committerruki <[email protected]>2024-04-05 00:48:02 +0800
commit18f0fd584bb13c915e8bf5958bc304c87c931472 (patch)
tree02735e1909bd965e7a148e24a6157076ec10fceb
parent0dd39dca10801095fa1a57f1c7df56f44ceceaea (diff)
add stack functions
-rw-r--r--core/src/xmake/package/loadxmi.c12
-rw-r--r--xmake/scripts/module/xmi.h37
2 files changed, 44 insertions, 5 deletions
diff --git a/core/src/xmake/package/loadxmi.c b/core/src/xmake/package/loadxmi.c
index 6b825e6df..736dcf9cf 100644
--- a/core/src/xmake/package/loadxmi.c
+++ b/core/src/xmake/package/loadxmi.c
@@ -85,7 +85,6 @@ tb_int_t xm_package_loadxmi(lua_State* lua)
static tb_bool_t s_luaops_inited = tb_false;
if (!s_luaops_inited)
{
- s_luaops._lua_gettop = &lua_gettop;
s_luaops._lua_type = &lua_type;
// get functions
@@ -109,7 +108,6 @@ tb_int_t xm_package_loadxmi(lua_State* lua)
// push functions
s_luaops._lua_pushnil = &lua_pushnil;
s_luaops._lua_pushinteger = &lua_pushinteger;
-
s_luaops._lua_pushboolean = &lua_pushboolean;
s_luaops._lua_pushnumber = &lua_pushnumber;
s_luaops._lua_pushlstring = &lua_pushlstring;
@@ -120,6 +118,16 @@ tb_int_t xm_package_loadxmi(lua_State* lua)
s_luaops._lua_pushlightuserdata = &lua_pushlightuserdata;
s_luaops._lua_pushthread = &lua_pushthread;
+ // stack functions
+ s_luaops._lua_absindex = &lua_absindex;
+ s_luaops._lua_gettop = &lua_gettop;
+ s_luaops._lua_settop = &lua_settop;
+ s_luaops._lua_pushvalue = &lua_pushvalue;
+ s_luaops._lua_rotate = &lua_rotate;
+ s_luaops._lua_copy = &lua_copy;
+ s_luaops._lua_checkstack = &lua_checkstack;
+ s_luaops._lua_xmove = &lua_xmove;
+
// luaL functions
s_luaops._luaL_setfuncs = &luaL_setfuncs;
s_luaops._luaL_error = &luaL_error;
diff --git a/xmake/scripts/module/xmi.h b/xmake/scripts/module/xmi.h
index b9e07c382..cda96bdff 100644
--- a/xmake/scripts/module/xmi.h
+++ b/xmake/scripts/module/xmi.h
@@ -65,8 +65,8 @@
// lua macros
#define xmi_lua_newtable(lua) xmi_lua_createtable(lua, 0, 0)
-#define xmi_lua_gettop(lua) (g_lua_ops)->_lua_gettop(lua)
#define xmi_lua_type(lua, idx) (g_lua_ops)->_lua_type(lua, idx)
+#define xmi_lua_pop(lua, n) xmi_lua_settop(lua, -(n)-1)
// get macros
#define xmi_lua_getglobal(lua, name) (g_lua_ops)->_lua_getglobal(lua, name)
@@ -113,6 +113,17 @@
#define xmi_lua_pushcclosure(lua, fn, n) (g_lua_ops)->_lua_pushcclosure(lua, fn, n)
#define xmi_lua_pushlightuserdata(lua, p) (g_lua_ops)->_lua_pushlightuserdata(lua, p)
#define xmi_lua_pushthread(lua) (g_lua_ops)->_lua_pushthread(lua)
+#define xmi_lua_pushcfunction(lua, f) xmi_lua_pushcclosure(lua, (f), 0)
+
+// stack functions
+#define xmi_lua_absindex(lua, idx) (g_lua_ops)->_lua_absindex(lua, idx)
+#define xmi_lua_gettop(lua) (g_lua_ops)->_lua_gettop(lua)
+#define xmi_lua_settop(lua, idx) (g_lua_ops)->_lua_settop(lua, idx)
+#define xmi_lua_pushvalue(lua, idx) (g_lua_ops)->_lua_pushvalue(lua, idx)
+#define xmi_lua_rotate(lua, idx, n) (g_lua_ops)->_lua_rotate(lua, idx, n)
+#define xmi_lua_copy(lua, fromidx, toidx) (g_lua_ops)->_lua_copy(lua, fromidx, toidx)
+#define xmi_lua_checkstack(lua, n) (g_lua_ops)->_lua_checkstack(lua, n)
+#define xmi_lua_xmove(from, to, n) (g_lua_ops)->_lua_xmove(from, to, n)
// compatibility macros
#define xmi_lua_newuserdata(lua, s) xmi_lua_newuserdatauv(lua, s, 1)
@@ -154,9 +165,9 @@
*/
#ifndef XM_PREFIX_H
# define lua_upvalueindex xmi_lua_upvalueindex
-# define lua_gettop xmi_lua_gettop
# define lua_type xmi_lua_type
# define lua_newtable xmi_lua_newtable
+# define lua_pop xmi_lua_pop
// get macros
# define lua_getglobal xmi_lua_getglobal
@@ -199,11 +210,22 @@
# define lua_pushcclosure xmi_lua_pushcclosure
# define lua_pushlightuserdata xmi_lua_pushlightuserdata
# define lua_pushthread xmi_lua_pushthread
+# define lua_pushcfunction xmi_lua_pushcfunction
# define lua_newuserdata xmi_lua_newuserdata
# define lua_getuservalue xmi_lua_getuservalue
# define lua_setuservalue xmi_lua_setuservalue
+// stack functions
+# define lua_absindex xmi_lua_absindex
+# define lua_gettop xmi_lua_gettop
+# define lua_settop xmi_lua_settop
+# define lua_pushvalue xmi_lua_pushvalue
+# define lua_rotate xmi_lua_rotate
+# define lua_copy xmi_lua_copy
+# define lua_checkstack xmi_lua_checkstack
+# define lua_xmove xmi_lua_xmove
+
// luaL macros
# define luaL_setfuncs xmi_luaL_setfuncs
# define luaL_error xmi_luaL_error
@@ -287,7 +309,6 @@ typedef struct xmi_luaL_Reg_ {
}xmi_luaL_Reg;
typedef struct xmi_lua_ops_t_ {
- int (*_lua_gettop)(lua_State* lua);
int (*_lua_type)(lua_State* lua, int idx);
// get functions
@@ -321,6 +342,16 @@ typedef struct xmi_lua_ops_t_ {
void (*_lua_pushlightuserdata)(lua_State* lua, void* p);
int (*_lua_pushthread)(lua_State* lua);
+ // stack functions
+ int (*_lua_absindex)(lua_State* lua, int idx);
+ int (*_lua_gettop)(lua_State* lua);
+ void (*_lua_settop)(lua_State* lua, int idx);
+ void (*_lua_pushvalue)(lua_State* lua, int idx);
+ void (*_lua_rotate)(lua_State* lua, int idx, int n);
+ void (*_lua_copy)(lua_State* lua, int fromidx, int toidx);
+ int (*_lua_checkstack)(lua_State* lua, int n);
+ void (*_lua_xmove)(lua_State* from, lua_State* to, int n);
+
// luaL functions
void (*_luaL_setfuncs)(lua_State* lua, const luaL_Reg* l, int nup);
int (*_luaL_error)(lua_State* lua, const char* fmt, ...);