diff --git a/resources/lite_xl_plugin_api.h b/resources/lite_xl_plugin_api.h index 08af12a8..11467e65 100644 --- a/resources/lite_xl_plugin_api.h +++ b/resources/lite_xl_plugin_api.h @@ -236,9 +236,6 @@ static int (*lua_absindex) (lua_State *L, int idx); static int (*lua_gettop) (lua_State *L); static void (*lua_settop) (lua_State *L, int idx); static void (*lua_pushvalue) (lua_State *L, int idx); -static void (*lua_remove) (lua_State *L, int idx); -static void (*lua_insert) (lua_State *L, int idx); -static void (*lua_replace) (lua_State *L, int idx); static void (*lua_copy) (lua_State *L, int fromidx, int toidx); static int (*lua_checkstack) (lua_State *L, int sz); static void (*lua_xmove) (lua_State *from, lua_State *to, int n); @@ -281,8 +278,10 @@ static void (*lua_rawgeti) (lua_State *L, int idx, int n); static void (*lua_rawgetp) (lua_State *L, int idx, const void *p); static void (*lua_createtable) (lua_State *L, int narr, int nrec); static void *(*lua_newuserdata) (lua_State *L, size_t sz); +static void *(*lua_newuserdatauv) (lua_State *L, size_t sz, int nuvalue); static int (*lua_getmetatable) (lua_State *L, int objindex); static void (*lua_getuservalue) (lua_State *L, int idx); +static void (*lua_getiuservalue) (lua_State *L, int idx, int n); static void (*lua_setglobal) (lua_State *L, const char *var); static void (*lua_settable) (lua_State *L, int idx); static void (*lua_setfield) (lua_State *L, int idx, const char *k); @@ -291,6 +290,7 @@ static void (*lua_rawseti) (lua_State *L, int idx, int n); static void (*lua_rawsetp) (lua_State *L, int idx, const void *p); static int (*lua_setmetatable) (lua_State *L, int objindex); static void (*lua_setuservalue) (lua_State *L, int idx); +static void (*lua_setiuservalue) (lua_State *L, int idx, int n); static void (*lua_callk) (lua_State *L, int nargs, int nresults, int ctx, lua_CFunction k); static int (*lua_getctx) (lua_State *L, int *ctx); static int (*lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, int ctx, lua_CFunction k); @@ -396,6 +396,9 @@ static int (*lua_gethookcount) (lua_State *L); #define lua_pushliteral(L, s) lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1) #define lua_pushglobaltable(L) lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS) #define lua_tostring(L,i) lua_tolstring(L, (i), NULL) +#define lua_insert(L,idx) lua_rotate(L, (idx), 1) +#define lua_replace(L,idx) (lua_copy(L, -1, (idx)), lua_pop(L, 1)) +#define lua_remove(L,idx) (lua_rotate(L, (idx), -1), lua_pop(L, 1)) #define LUA_HOOKCALL 0 #define LUA_HOOKRET 1 #define LUA_HOOKLINE 2 @@ -414,9 +417,6 @@ static int __lite_xl_fallback_lua_absindex (lua_State *L, int idx) { fputs("war static int __lite_xl_fallback_lua_gettop (lua_State *L) { fputs("warning: lua_gettop is a stub", stderr); } static void __lite_xl_fallback_lua_settop (lua_State *L, int idx) { fputs("warning: lua_settop is a stub", stderr); } static void __lite_xl_fallback_lua_pushvalue (lua_State *L, int idx) { fputs("warning: lua_pushvalue is a stub", stderr); } -static void __lite_xl_fallback_lua_remove (lua_State *L, int idx) { fputs("warning: lua_remove is a stub", stderr); } -static void __lite_xl_fallback_lua_insert (lua_State *L, int idx) { fputs("warning: lua_insert is a stub", stderr); } -static void __lite_xl_fallback_lua_replace (lua_State *L, int idx) { fputs("warning: lua_replace is a stub", stderr); } static void __lite_xl_fallback_lua_copy (lua_State *L, int fromidx, int toidx) { fputs("warning: lua_copy is a stub", stderr); } static int __lite_xl_fallback_lua_checkstack (lua_State *L, int sz) { fputs("warning: lua_checkstack is a stub", stderr); } static void __lite_xl_fallback_lua_xmove (lua_State *from, lua_State *to, int n) { fputs("warning: lua_xmove is a stub", stderr); } @@ -459,8 +459,10 @@ static void __lite_xl_fallback_lua_rawgeti (lua_State *L, int idx, int n) { fpu static void __lite_xl_fallback_lua_rawgetp (lua_State *L, int idx, const void *p) { fputs("warning: lua_rawgetp is a stub", stderr); } static void __lite_xl_fallback_lua_createtable (lua_State *L, int narr, int nrec) { fputs("warning: lua_createtable is a stub", stderr); } static void * __lite_xl_fallback_lua_newuserdata (lua_State *L, size_t sz) { fputs("warning: lua_newuserdata is a stub", stderr); } +static void * __lite_xl_fallback_lua_newuserdatauv (lua_State *L, size_t sz, int nuvalue) { fputs("warning: lua_newuserdatauv is a stub", stderr); } static int __lite_xl_fallback_lua_getmetatable (lua_State *L, int objindex) { fputs("warning: lua_getmetatable is a stub", stderr); } static void __lite_xl_fallback_lua_getuservalue (lua_State *L, int idx) { fputs("warning: lua_getuservalue is a stub", stderr); } +static void __lite_xl_fallback_lua_getiuservalue (lua_State *L, int idx, int n) { fputs("warning: lua_getiuservalue is a stub", stderr); } static void __lite_xl_fallback_lua_setglobal (lua_State *L, const char *var) { fputs("warning: lua_setglobal is a stub", stderr); } static void __lite_xl_fallback_lua_settable (lua_State *L, int idx) { fputs("warning: lua_settable is a stub", stderr); } static void __lite_xl_fallback_lua_setfield (lua_State *L, int idx, const char *k) { fputs("warning: lua_setfield is a stub", stderr); } @@ -469,6 +471,7 @@ static void __lite_xl_fallback_lua_rawseti (lua_State *L, int idx, int n) { fpu static void __lite_xl_fallback_lua_rawsetp (lua_State *L, int idx, const void *p) { fputs("warning: lua_rawsetp is a stub", stderr); } static int __lite_xl_fallback_lua_setmetatable (lua_State *L, int objindex) { fputs("warning: lua_setmetatable is a stub", stderr); } static void __lite_xl_fallback_lua_setuservalue (lua_State *L, int idx) { fputs("warning: lua_setuservalue is a stub", stderr); } +static void __lite_xl_fallback_lua_setiuservalue (lua_State *L, int idx, int n) { fputs("warning: lua_setiuservalue is a stub", stderr); } static void __lite_xl_fallback_lua_callk (lua_State *L, int nargs, int nresults, int ctx, lua_CFunction k) { fputs("warning: lua_callk is a stub", stderr); } static int __lite_xl_fallback_lua_getctx (lua_State *L, int *ctx) { fputs("warning: lua_getctx is a stub", stderr); } static int __lite_xl_fallback_lua_pcallk (lua_State *L, int nargs, int nresults, int errfunc, int ctx, lua_CFunction k) { fputs("warning: lua_pcallk is a stub", stderr); } @@ -645,9 +648,6 @@ static void lite_xl_plugin_init(void *XL) { IMPORT_SYMBOL(lua_gettop, int , lua_State *L); IMPORT_SYMBOL(lua_settop, void , lua_State *L, int idx); IMPORT_SYMBOL(lua_pushvalue, void , lua_State *L, int idx); - IMPORT_SYMBOL(lua_remove, void , lua_State *L, int idx); - IMPORT_SYMBOL(lua_insert, void , lua_State *L, int idx); - IMPORT_SYMBOL(lua_replace, void , lua_State *L, int idx); IMPORT_SYMBOL(lua_copy, void , lua_State *L, int fromidx, int toidx); IMPORT_SYMBOL(lua_checkstack, int , lua_State *L, int sz); IMPORT_SYMBOL(lua_xmove, void , lua_State *from, lua_State *to, int n); @@ -690,8 +690,10 @@ static void lite_xl_plugin_init(void *XL) { IMPORT_SYMBOL(lua_rawgetp, void , lua_State *L, int idx, const void *p); IMPORT_SYMBOL(lua_createtable, void , lua_State *L, int narr, int nrec); IMPORT_SYMBOL(lua_newuserdata, void *, lua_State *L, size_t sz); + IMPORT_SYMBOL(lua_newuserdatauv, void *, lua_State *L, size_t sz, int nuvalue); IMPORT_SYMBOL(lua_getmetatable, int , lua_State *L, int objindex); IMPORT_SYMBOL(lua_getuservalue, void , lua_State *L, int idx); + IMPORT_SYMBOL(lua_getiuservalue, void , lua_State *L, int idx, int n); IMPORT_SYMBOL(lua_setglobal, void , lua_State *L, const char *var); IMPORT_SYMBOL(lua_settable, void , lua_State *L, int idx); IMPORT_SYMBOL(lua_setfield, void , lua_State *L, int idx, const char *k); @@ -700,6 +702,7 @@ static void lite_xl_plugin_init(void *XL) { IMPORT_SYMBOL(lua_rawsetp, void , lua_State *L, int idx, const void *p); IMPORT_SYMBOL(lua_setmetatable, int , lua_State *L, int objindex); IMPORT_SYMBOL(lua_setuservalue, void , lua_State *L, int idx); + IMPORT_SYMBOL(lua_setiuservalue, void , lua_State *L, int idx, int n); IMPORT_SYMBOL(lua_callk, void , lua_State *L, int nargs, int nresults, int ctx, lua_CFunction k); IMPORT_SYMBOL(lua_getctx, int , lua_State *L, int *ctx); IMPORT_SYMBOL(lua_pcallk, int , lua_State *L, int nargs, int nresults, int errfunc, int ctx, lua_CFunction k); diff --git a/src/api/system.c b/src/api/system.c index 9074264f..70d02156 100644 --- a/src/api/system.c +++ b/src/api/system.c @@ -946,9 +946,14 @@ static void* api_require(const char* symbol) { P(iscfunction), P(yieldk), U(checkversion_), U(tolstring), U(len), U(getsubtable), U(prepbuffsize), U(pushresultsize), U(buffinitsize), U(checklstring), U(checkoption), U(gsub), U(loadbufferx), - U(loadfilex), U(optinteger), U(optlstring), U(requiref), U(traceback) + U(loadfilex), U(optinteger), U(optlstring), U(requiref), U(traceback), #else - P(objlen) + P(objlen), + #endif + #if LUA_VERSION_NUM >= 504 + P(newuserdatauv), P(setiuservalue), P(getiuservalue) + #else + P(newuserdata), P(setuservalue), P(getuservalue) #endif };