aboutsummaryrefslogtreecommitdiff
path: root/src/compat.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/compat.c')
-rw-r--r--src/compat.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/compat.c b/src/compat.c
index 19159a9..bc39d4c 100644
--- a/src/compat.c
+++ b/src/compat.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * ############################################################################################### 2 * ###############################################################################################
3 * ######################################### Lua 5.1/5.2 ######################################### 3 * ####################################### Lua 5.1/5.2/5.3 #######################################
4 * ############################################################################################### 4 * ###############################################################################################
5 */ 5 */
6#include "compat.h" 6#include "compat.h"
@@ -9,7 +9,11 @@
9/* 9/*
10** Copied from Lua 5.2 loadlib.c 10** Copied from Lua 5.2 loadlib.c
11*/ 11*/
12// ################################################################################################
13// ################################################################################################
12#if LUA_VERSION_NUM == 501 14#if LUA_VERSION_NUM == 501
15// ################################################################################################
16// ################################################################################################
13static int luaL_getsubtable (lua_State *L, int idx, const char *fname) 17static int luaL_getsubtable (lua_State *L, int idx, const char *fname)
14{ 18{
15 lua_getfield(L, idx, fname); 19 lua_getfield(L, idx, fname);
@@ -26,6 +30,8 @@ static int luaL_getsubtable (lua_State *L, int idx, const char *fname)
26 } 30 }
27} 31}
28 32
33// ################################################################################################
34
29void luaL_requiref (lua_State *L, const char *modname, lua_CFunction openf, int glb) 35void luaL_requiref (lua_State *L, const char *modname, lua_CFunction openf, int glb)
30{ 36{
31 lua_pushcfunction(L, openf); 37 lua_pushcfunction(L, openf);
@@ -43,7 +49,11 @@ void luaL_requiref (lua_State *L, const char *modname, lua_CFunction openf, int
43} 49}
44#endif // LUA_VERSION_NUM 50#endif // LUA_VERSION_NUM
45 51
52// ################################################################################################
53// ################################################################################################
46#if LUA_VERSION_NUM < 504 54#if LUA_VERSION_NUM < 504
55// ################################################################################################
56// ################################################################################################
47 57
48void* lua_newuserdatauv( lua_State* L, size_t sz, int nuvalue) 58void* lua_newuserdatauv( lua_State* L, size_t sz, int nuvalue)
49{ 59{
@@ -51,8 +61,12 @@ void* lua_newuserdatauv( lua_State* L, size_t sz, int nuvalue)
51 return lua_newuserdata( L, sz); 61 return lua_newuserdata( L, sz);
52} 62}
53 63
64// ################################################################################################
65
66// push on stack uservalue #n of full userdata at idx
54int lua_getiuservalue( lua_State* L, int idx, int n) 67int lua_getiuservalue( lua_State* L, int idx, int n)
55{ 68{
69 // full userdata can have only 1 uservalue before 5.4
56 if( n > 1) 70 if( n > 1)
57 { 71 {
58 lua_pushnil( L); 72 lua_pushnil( L);
@@ -76,6 +90,10 @@ int lua_getiuservalue( lua_State* L, int idx, int n)
76 return lua_type( L, -1); 90 return lua_type( L, -1);
77} 91}
78 92
93// ################################################################################################
94
95// Pops a value from the stack and sets it as the new n-th user value associated to the full userdata at the given index.
96// Returns 0 if the userdata does not have that value.
79int lua_setiuservalue( lua_State* L, int idx, int n) 97int lua_setiuservalue( lua_State* L, int idx, int n)
80{ 98{
81 if( n > 1 99 if( n > 1