diff options
author | Richard Quirk <richard.quirk@gmail.com> | 2014-03-19 19:31:31 +0100 |
---|---|---|
committer | Marcin Bukat <marcin.bukat@gmail.com> | 2014-04-02 20:31:54 +0200 |
commit | 36378988ad4059982742f05f5eb50580b456840a (patch) | |
tree | ee70be810d894566c5e351f21a1ebb79be742a85 /apps/plugins/lua/lua.h | |
parent | 020f16a1c7d5bc9a302671cef03f56ac735e20c5 (diff) | |
download | rockbox-36378988ad4059982742f05f5eb50580b456840a.tar.gz rockbox-36378988ad4059982742f05f5eb50580b456840a.zip |
Update lua plugin to 5.2.3
Prior to this patch the Lua plugin used version 5.1.4. This change
reduces the number of modifications in the Lua source using some new
defines and because the upstream source is now more flexible.
Unless otherwise stated, l*.[ch] files are taken unmodified from the
upstream lua-5.2.3.
fscanf.c:
file descriptors in rockbox are just ints, they are hidden behind a
void* now so liolib requires less modifications. fscanf is updated to
use void* too.
getc.c: this is a new file required for getc implementation in lauxlib.c
lauxlib.c: LoadF replaced FILE* with int, the rockbox file
descriptor int are cast to FILE* (actually void* due to typedef).
getc uses the PREFIX version. stdin is not used, as per 5.1.4.
lbaselib.c: now uses strspn in the number parsing. print uses DEBUGF now
rather than being commented out.
lbitlib.c: use the built-in version from 5.2.3 rather than Reuben
Thomas's external library. Backwards compatible and adds some new bit
operations.
ldo.c: the LUAI_THROW/TRY defines are now in the core lua code, so have
been removed from rockconf.h
liolib.c: here the implementation has changed to use the LStream from
the original source, and cast the FILE* pointers to int. This has
reduced the number of modifications from the upstream version.
llex.c: the only change from upstream is to remove the locale include.
lmathlib.c: updated from the 5.2.3 version and re-applied the changes
that were made vs 5.1.4 for random numbers and to remove unsupported
float functions.
loadlib.c: upstream version, with the 5.1.4 changes for missing
functions.
lobject.c: upstream version, with ctype.h added and sprintf changed to
snprintf.
loslib.c: upstream version with locale.h removed and 5.1.4 changes for
unsupportable functions.
lstrlib.c: sprintf changed to snprintf.
ltable.c: upstream with the hashnum function from 5.1.4 to avoid frexp
in luai_hashnum.
luaconf.h: updated to 5.2.3 version, restored relevant parts from the
original 5.1.4 configuration. The COMPAT defines that are no longer
available are not included.
lundump.c: VERSION macro conflicts with the core Rockbox equivalent.
rocklib.c: luaL_reg is no longer available, replaced by luaL_Reg
equivalent. Moved checkboolean/optboolean functions to this file and out
of core lua files. luaL_getn is no longer available, replaced by
luaL_rawlen. luaL_register is deprecated, use the newlib/setfuncs
replacements. rli_init has to be called before setting up the newlib to
avoid overwriting the rb table.
rocklib_aux.pl: use rli_checkboolean from rocklib.c.
rocklua.c: new default bits library used, update the library loading
code with idiomatic 5.2 code.
strcspn.c: no longer needed, but strspn.c is required for strspn in
lbaselib.c
Change-Id: I0c7945c755f79083afe98ec117e1e8cf13de2651
Reviewed-on: http://gerrit.rockbox.org/774
Tested: Richard Quirk <richard.quirk@gmail.com>
Reviewed-by: Marcin Bukat <marcin.bukat@gmail.com>
Diffstat (limited to 'apps/plugins/lua/lua.h')
-rw-r--r-- | apps/plugins/lua/lua.h | 224 |
1 files changed, 140 insertions, 84 deletions
diff --git a/apps/plugins/lua/lua.h b/apps/plugins/lua/lua.h index a0c57dc60b..149a2c37bc 100644 --- a/apps/plugins/lua/lua.h +++ b/apps/plugins/lua/lua.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id$ | 2 | ** $Id: lua.h,v 1.285.1.2 2013/11/11 12:09:16 roberto Exp $ |
3 | ** Lua - An Extensible Extension Language | 3 | ** Lua - A Scripting Language |
4 | ** Lua.org, PUC-Rio, Brazil (http://www.lua.org) | 4 | ** Lua.org, PUC-Rio, Brazil (http://www.lua.org) |
5 | ** See Copyright Notice at the end of this file | 5 | ** See Copyright Notice at the end of this file |
6 | */ | 6 | */ |
@@ -16,35 +16,39 @@ | |||
16 | #include "luaconf.h" | 16 | #include "luaconf.h" |
17 | 17 | ||
18 | 18 | ||
19 | #define LUA_VERSION "Lua 5.1" | 19 | #define LUA_VERSION_MAJOR "5" |
20 | #define LUA_RELEASE "Lua 5.1.4" | 20 | #define LUA_VERSION_MINOR "2" |
21 | #define LUA_VERSION_NUM 501 | 21 | #define LUA_VERSION_NUM 502 |
22 | #define LUA_COPYRIGHT "Copyright (C) 1994-2008 Lua.org, PUC-Rio" | 22 | #define LUA_VERSION_RELEASE "3" |
23 | #define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo & W. Celes" | ||
24 | 23 | ||
24 | #define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR | ||
25 | #define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE | ||
26 | #define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2013 Lua.org, PUC-Rio" | ||
27 | #define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes" | ||
25 | 28 | ||
26 | /* mark for precompiled code (`<esc>Lua') */ | ||
27 | #define LUA_SIGNATURE "\033Lua" | ||
28 | 29 | ||
29 | /* option for multiple returns in `lua_pcall' and `lua_call' */ | 30 | /* mark for precompiled code ('<esc>Lua') */ |
31 | #define LUA_SIGNATURE "\033Lua" | ||
32 | |||
33 | /* option for multiple returns in 'lua_pcall' and 'lua_call' */ | ||
30 | #define LUA_MULTRET (-1) | 34 | #define LUA_MULTRET (-1) |
31 | 35 | ||
32 | 36 | ||
33 | /* | 37 | /* |
34 | ** pseudo-indices | 38 | ** pseudo-indices |
35 | */ | 39 | */ |
36 | #define LUA_REGISTRYINDEX (-10000) | 40 | #define LUA_REGISTRYINDEX LUAI_FIRSTPSEUDOIDX |
37 | #define LUA_ENVIRONINDEX (-10001) | 41 | #define lua_upvalueindex(i) (LUA_REGISTRYINDEX - (i)) |
38 | #define LUA_GLOBALSINDEX (-10002) | ||
39 | #define lua_upvalueindex(i) (LUA_GLOBALSINDEX-(i)) | ||
40 | 42 | ||
41 | 43 | ||
42 | /* thread status; 0 is OK */ | 44 | /* thread status */ |
45 | #define LUA_OK 0 | ||
43 | #define LUA_YIELD 1 | 46 | #define LUA_YIELD 1 |
44 | #define LUA_ERRRUN 2 | 47 | #define LUA_ERRRUN 2 |
45 | #define LUA_ERRSYNTAX 3 | 48 | #define LUA_ERRSYNTAX 3 |
46 | #define LUA_ERRMEM 4 | 49 | #define LUA_ERRMEM 4 |
47 | #define LUA_ERRERR 5 | 50 | #define LUA_ERRGCMM 5 |
51 | #define LUA_ERRERR 6 | ||
48 | 52 | ||
49 | 53 | ||
50 | typedef struct lua_State lua_State; | 54 | typedef struct lua_State lua_State; |
@@ -81,18 +85,18 @@ typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); | |||
81 | #define LUA_TUSERDATA 7 | 85 | #define LUA_TUSERDATA 7 |
82 | #define LUA_TTHREAD 8 | 86 | #define LUA_TTHREAD 8 |
83 | 87 | ||
88 | #define LUA_NUMTAGS 9 | ||
89 | |||
84 | 90 | ||
85 | 91 | ||
86 | /* minimum Lua stack available to a C function */ | 92 | /* minimum Lua stack available to a C function */ |
87 | #define LUA_MINSTACK 20 | 93 | #define LUA_MINSTACK 20 |
88 | 94 | ||
89 | 95 | ||
90 | /* | 96 | /* predefined values in the registry */ |
91 | ** generic extra include file | 97 | #define LUA_RIDX_MAINTHREAD 1 |
92 | */ | 98 | #define LUA_RIDX_GLOBALS 2 |
93 | #if defined(LUA_USER_H) | 99 | #define LUA_RIDX_LAST LUA_RIDX_GLOBALS |
94 | #include LUA_USER_H | ||
95 | #endif | ||
96 | 100 | ||
97 | 101 | ||
98 | /* type of numbers in Lua */ | 102 | /* type of numbers in Lua */ |
@@ -102,6 +106,23 @@ typedef LUA_NUMBER lua_Number; | |||
102 | /* type for integer functions */ | 106 | /* type for integer functions */ |
103 | typedef LUA_INTEGER lua_Integer; | 107 | typedef LUA_INTEGER lua_Integer; |
104 | 108 | ||
109 | /* unsigned integer type */ | ||
110 | typedef LUA_UNSIGNED lua_Unsigned; | ||
111 | |||
112 | |||
113 | |||
114 | /* | ||
115 | ** generic extra include file | ||
116 | */ | ||
117 | #if defined(LUA_USER_H) | ||
118 | #include LUA_USER_H | ||
119 | #endif | ||
120 | |||
121 | |||
122 | /* | ||
123 | ** RCS ident string | ||
124 | */ | ||
125 | extern const char lua_ident[]; | ||
105 | 126 | ||
106 | 127 | ||
107 | /* | 128 | /* |
@@ -114,15 +135,20 @@ LUA_API lua_State *(lua_newthread) (lua_State *L); | |||
114 | LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); | 135 | LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); |
115 | 136 | ||
116 | 137 | ||
138 | LUA_API const lua_Number *(lua_version) (lua_State *L); | ||
139 | |||
140 | |||
117 | /* | 141 | /* |
118 | ** basic stack manipulation | 142 | ** basic stack manipulation |
119 | */ | 143 | */ |
144 | LUA_API int (lua_absindex) (lua_State *L, int idx); | ||
120 | LUA_API int (lua_gettop) (lua_State *L); | 145 | LUA_API int (lua_gettop) (lua_State *L); |
121 | LUA_API void (lua_settop) (lua_State *L, int idx); | 146 | LUA_API void (lua_settop) (lua_State *L, int idx); |
122 | LUA_API void (lua_pushvalue) (lua_State *L, int idx); | 147 | LUA_API void (lua_pushvalue) (lua_State *L, int idx); |
123 | LUA_API void (lua_remove) (lua_State *L, int idx); | 148 | LUA_API void (lua_remove) (lua_State *L, int idx); |
124 | LUA_API void (lua_insert) (lua_State *L, int idx); | 149 | LUA_API void (lua_insert) (lua_State *L, int idx); |
125 | LUA_API void (lua_replace) (lua_State *L, int idx); | 150 | LUA_API void (lua_replace) (lua_State *L, int idx); |
151 | LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx); | ||
126 | LUA_API int (lua_checkstack) (lua_State *L, int sz); | 152 | LUA_API int (lua_checkstack) (lua_State *L, int sz); |
127 | 153 | ||
128 | LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); | 154 | LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); |
@@ -139,15 +165,12 @@ LUA_API int (lua_isuserdata) (lua_State *L, int idx); | |||
139 | LUA_API int (lua_type) (lua_State *L, int idx); | 165 | LUA_API int (lua_type) (lua_State *L, int idx); |
140 | LUA_API const char *(lua_typename) (lua_State *L, int tp); | 166 | LUA_API const char *(lua_typename) (lua_State *L, int tp); |
141 | 167 | ||
142 | LUA_API int (lua_equal) (lua_State *L, int idx1, int idx2); | 168 | LUA_API lua_Number (lua_tonumberx) (lua_State *L, int idx, int *isnum); |
143 | LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); | 169 | LUA_API lua_Integer (lua_tointegerx) (lua_State *L, int idx, int *isnum); |
144 | LUA_API int (lua_lessthan) (lua_State *L, int idx1, int idx2); | 170 | LUA_API lua_Unsigned (lua_tounsignedx) (lua_State *L, int idx, int *isnum); |
145 | |||
146 | LUA_API lua_Number (lua_tonumber) (lua_State *L, int idx); | ||
147 | LUA_API lua_Integer (lua_tointeger) (lua_State *L, int idx); | ||
148 | LUA_API int (lua_toboolean) (lua_State *L, int idx); | 171 | LUA_API int (lua_toboolean) (lua_State *L, int idx); |
149 | LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); | 172 | LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); |
150 | LUA_API size_t (lua_objlen) (lua_State *L, int idx); | 173 | LUA_API size_t (lua_rawlen) (lua_State *L, int idx); |
151 | LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); | 174 | LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); |
152 | LUA_API void *(lua_touserdata) (lua_State *L, int idx); | 175 | LUA_API void *(lua_touserdata) (lua_State *L, int idx); |
153 | LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); | 176 | LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); |
@@ -155,13 +178,36 @@ LUA_API const void *(lua_topointer) (lua_State *L, int idx); | |||
155 | 178 | ||
156 | 179 | ||
157 | /* | 180 | /* |
181 | ** Comparison and arithmetic functions | ||
182 | */ | ||
183 | |||
184 | #define LUA_OPADD 0 /* ORDER TM */ | ||
185 | #define LUA_OPSUB 1 | ||
186 | #define LUA_OPMUL 2 | ||
187 | #define LUA_OPDIV 3 | ||
188 | #define LUA_OPMOD 4 | ||
189 | #define LUA_OPPOW 5 | ||
190 | #define LUA_OPUNM 6 | ||
191 | |||
192 | LUA_API void (lua_arith) (lua_State *L, int op); | ||
193 | |||
194 | #define LUA_OPEQ 0 | ||
195 | #define LUA_OPLT 1 | ||
196 | #define LUA_OPLE 2 | ||
197 | |||
198 | LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); | ||
199 | LUA_API int (lua_compare) (lua_State *L, int idx1, int idx2, int op); | ||
200 | |||
201 | |||
202 | /* | ||
158 | ** push functions (C -> stack) | 203 | ** push functions (C -> stack) |
159 | */ | 204 | */ |
160 | LUA_API void (lua_pushnil) (lua_State *L); | 205 | LUA_API void (lua_pushnil) (lua_State *L); |
161 | LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); | 206 | LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); |
162 | LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); | 207 | LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); |
163 | LUA_API void (lua_pushlstring) (lua_State *L, const char *s, size_t l); | 208 | LUA_API void (lua_pushunsigned) (lua_State *L, lua_Unsigned n); |
164 | LUA_API void (lua_pushstring) (lua_State *L, const char *s); | 209 | LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t l); |
210 | LUA_API const char *(lua_pushstring) (lua_State *L, const char *s); | ||
165 | LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, | 211 | LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, |
166 | va_list argp); | 212 | va_list argp); |
167 | LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); | 213 | LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); |
@@ -174,35 +220,47 @@ LUA_API int (lua_pushthread) (lua_State *L); | |||
174 | /* | 220 | /* |
175 | ** get functions (Lua -> stack) | 221 | ** get functions (Lua -> stack) |
176 | */ | 222 | */ |
223 | LUA_API void (lua_getglobal) (lua_State *L, const char *var); | ||
177 | LUA_API void (lua_gettable) (lua_State *L, int idx); | 224 | LUA_API void (lua_gettable) (lua_State *L, int idx); |
178 | LUA_API void (lua_getfield) (lua_State *L, int idx, const char *k); | 225 | LUA_API void (lua_getfield) (lua_State *L, int idx, const char *k); |
179 | LUA_API void (lua_rawget) (lua_State *L, int idx); | 226 | LUA_API void (lua_rawget) (lua_State *L, int idx); |
180 | LUA_API void (lua_rawgeti) (lua_State *L, int idx, int n); | 227 | LUA_API void (lua_rawgeti) (lua_State *L, int idx, int n); |
228 | LUA_API void (lua_rawgetp) (lua_State *L, int idx, const void *p); | ||
181 | LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); | 229 | LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); |
182 | LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz); | 230 | LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz); |
183 | LUA_API int (lua_getmetatable) (lua_State *L, int objindex); | 231 | LUA_API int (lua_getmetatable) (lua_State *L, int objindex); |
184 | LUA_API void (lua_getfenv) (lua_State *L, int idx); | 232 | LUA_API void (lua_getuservalue) (lua_State *L, int idx); |
185 | 233 | ||
186 | 234 | ||
187 | /* | 235 | /* |
188 | ** set functions (stack -> Lua) | 236 | ** set functions (stack -> Lua) |
189 | */ | 237 | */ |
238 | LUA_API void (lua_setglobal) (lua_State *L, const char *var); | ||
190 | LUA_API void (lua_settable) (lua_State *L, int idx); | 239 | LUA_API void (lua_settable) (lua_State *L, int idx); |
191 | LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); | 240 | LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); |
192 | LUA_API void (lua_rawset) (lua_State *L, int idx); | 241 | LUA_API void (lua_rawset) (lua_State *L, int idx); |
193 | LUA_API void (lua_rawseti) (lua_State *L, int idx, int n); | 242 | LUA_API void (lua_rawseti) (lua_State *L, int idx, int n); |
243 | LUA_API void (lua_rawsetp) (lua_State *L, int idx, const void *p); | ||
194 | LUA_API int (lua_setmetatable) (lua_State *L, int objindex); | 244 | LUA_API int (lua_setmetatable) (lua_State *L, int objindex); |
195 | LUA_API int (lua_setfenv) (lua_State *L, int idx); | 245 | LUA_API void (lua_setuservalue) (lua_State *L, int idx); |
196 | 246 | ||
197 | 247 | ||
198 | /* | 248 | /* |
199 | ** `load' and `call' functions (load and run Lua code) | 249 | ** 'load' and 'call' functions (load and run Lua code) |
200 | */ | 250 | */ |
201 | LUA_API void (lua_call) (lua_State *L, int nargs, int nresults); | 251 | LUA_API void (lua_callk) (lua_State *L, int nargs, int nresults, int ctx, |
202 | LUA_API int (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc); | 252 | lua_CFunction k); |
203 | LUA_API int (lua_cpcall) (lua_State *L, lua_CFunction func, void *ud); | 253 | #define lua_call(L,n,r) lua_callk(L, (n), (r), 0, NULL) |
254 | |||
255 | LUA_API int (lua_getctx) (lua_State *L, int *ctx); | ||
256 | |||
257 | LUA_API int (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, | ||
258 | int ctx, lua_CFunction k); | ||
259 | #define lua_pcall(L,n,r,f) lua_pcallk(L, (n), (r), (f), 0, NULL) | ||
260 | |||
204 | LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, | 261 | LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, |
205 | const char *chunkname); | 262 | const char *chunkname, |
263 | const char *mode); | ||
206 | 264 | ||
207 | LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); | 265 | LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); |
208 | 266 | ||
@@ -210,8 +268,10 @@ LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); | |||
210 | /* | 268 | /* |
211 | ** coroutine functions | 269 | ** coroutine functions |
212 | */ | 270 | */ |
213 | LUA_API int (lua_yield) (lua_State *L, int nresults); | 271 | LUA_API int (lua_yieldk) (lua_State *L, int nresults, int ctx, |
214 | LUA_API int (lua_resume) (lua_State *L, int narg); | 272 | lua_CFunction k); |
273 | #define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL) | ||
274 | LUA_API int (lua_resume) (lua_State *L, lua_State *from, int narg); | ||
215 | LUA_API int (lua_status) (lua_State *L); | 275 | LUA_API int (lua_status) (lua_State *L); |
216 | 276 | ||
217 | /* | 277 | /* |
@@ -226,6 +286,10 @@ LUA_API int (lua_status) (lua_State *L); | |||
226 | #define LUA_GCSTEP 5 | 286 | #define LUA_GCSTEP 5 |
227 | #define LUA_GCSETPAUSE 6 | 287 | #define LUA_GCSETPAUSE 6 |
228 | #define LUA_GCSETSTEPMUL 7 | 288 | #define LUA_GCSETSTEPMUL 7 |
289 | #define LUA_GCSETMAJORINC 8 | ||
290 | #define LUA_GCISRUNNING 9 | ||
291 | #define LUA_GCGEN 10 | ||
292 | #define LUA_GCINC 11 | ||
229 | 293 | ||
230 | LUA_API int (lua_gc) (lua_State *L, int what, int data); | 294 | LUA_API int (lua_gc) (lua_State *L, int what, int data); |
231 | 295 | ||
@@ -239,18 +303,23 @@ LUA_API int (lua_error) (lua_State *L); | |||
239 | LUA_API int (lua_next) (lua_State *L, int idx); | 303 | LUA_API int (lua_next) (lua_State *L, int idx); |
240 | 304 | ||
241 | LUA_API void (lua_concat) (lua_State *L, int n); | 305 | LUA_API void (lua_concat) (lua_State *L, int n); |
306 | LUA_API void (lua_len) (lua_State *L, int idx); | ||
242 | 307 | ||
243 | LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); | 308 | LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); |
244 | LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud); | 309 | LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud); |
245 | 310 | ||
246 | 311 | ||
247 | 312 | ||
248 | /* | 313 | /* |
249 | ** =============================================================== | 314 | ** =============================================================== |
250 | ** some useful macros | 315 | ** some useful macros |
251 | ** =============================================================== | 316 | ** =============================================================== |
252 | */ | 317 | */ |
253 | 318 | ||
319 | #define lua_tonumber(L,i) lua_tonumberx(L,i,NULL) | ||
320 | #define lua_tointeger(L,i) lua_tointegerx(L,i,NULL) | ||
321 | #define lua_tounsigned(L,i) lua_tounsignedx(L,i,NULL) | ||
322 | |||
254 | #define lua_pop(L,n) lua_settop(L, -(n)-1) | 323 | #define lua_pop(L,n) lua_settop(L, -(n)-1) |
255 | 324 | ||
256 | #define lua_newtable(L) lua_createtable(L, 0, 0) | 325 | #define lua_newtable(L) lua_createtable(L, 0, 0) |
@@ -259,8 +328,6 @@ LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud); | |||
259 | 328 | ||
260 | #define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) | 329 | #define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) |
261 | 330 | ||
262 | #define lua_strlen(L,i) lua_objlen(L, (i)) | ||
263 | |||
264 | #define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) | 331 | #define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) |
265 | #define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) | 332 | #define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) |
266 | #define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) | 333 | #define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) |
@@ -273,32 +340,14 @@ LUA_API void lua_setallocf (lua_State *L, lua_Alloc f, void *ud); | |||
273 | #define lua_pushliteral(L, s) \ | 340 | #define lua_pushliteral(L, s) \ |
274 | lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1) | 341 | lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1) |
275 | 342 | ||
276 | #define lua_setglobal(L,s) lua_setfield(L, LUA_GLOBALSINDEX, (s)) | 343 | #define lua_pushglobaltable(L) \ |
277 | #define lua_getglobal(L,s) lua_getfield(L, LUA_GLOBALSINDEX, (s)) | 344 | lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS) |
278 | 345 | ||
279 | #define lua_tostring(L,i) lua_tolstring(L, (i), NULL) | 346 | #define lua_tostring(L,i) lua_tolstring(L, (i), NULL) |
280 | 347 | ||
281 | 348 | ||
282 | 349 | ||
283 | /* | 350 | /* |
284 | ** compatibility macros and functions | ||
285 | */ | ||
286 | |||
287 | #define lua_open() luaL_newstate() | ||
288 | |||
289 | #define lua_getregistry(L) lua_pushvalue(L, LUA_REGISTRYINDEX) | ||
290 | |||
291 | #define lua_getgccount(L) lua_gc(L, LUA_GCCOUNT, 0) | ||
292 | |||
293 | #define lua_Chunkreader lua_Reader | ||
294 | #define lua_Chunkwriter lua_Writer | ||
295 | |||
296 | |||
297 | /* hack */ | ||
298 | LUA_API void lua_setlevel (lua_State *from, lua_State *to); | ||
299 | |||
300 | |||
301 | /* | ||
302 | ** {====================================================================== | 351 | ** {====================================================================== |
303 | ** Debug API | 352 | ** Debug API |
304 | ** ======================================================================= | 353 | ** ======================================================================= |
@@ -312,7 +361,7 @@ LUA_API void lua_setlevel (lua_State *from, lua_State *to); | |||
312 | #define LUA_HOOKRET 1 | 361 | #define LUA_HOOKRET 1 |
313 | #define LUA_HOOKLINE 2 | 362 | #define LUA_HOOKLINE 2 |
314 | #define LUA_HOOKCOUNT 3 | 363 | #define LUA_HOOKCOUNT 3 |
315 | #define LUA_HOOKTAILRET 4 | 364 | #define LUA_HOOKTAILCALL 4 |
316 | 365 | ||
317 | 366 | ||
318 | /* | 367 | /* |
@@ -326,43 +375,50 @@ LUA_API void lua_setlevel (lua_State *from, lua_State *to); | |||
326 | typedef struct lua_Debug lua_Debug; /* activation record */ | 375 | typedef struct lua_Debug lua_Debug; /* activation record */ |
327 | 376 | ||
328 | 377 | ||
329 | /* Functions to be called by the debuger in specific events */ | 378 | /* Functions to be called by the debugger in specific events */ |
330 | typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); | 379 | typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); |
331 | 380 | ||
332 | 381 | ||
333 | LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar); | 382 | LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar); |
334 | LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar); | 383 | LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar); |
335 | LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n); | 384 | LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n); |
336 | LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n); | 385 | LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n); |
337 | LUA_API const char *lua_getupvalue (lua_State *L, int funcindex, int n); | 386 | LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n); |
338 | LUA_API const char *lua_setupvalue (lua_State *L, int funcindex, int n); | 387 | LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n); |
388 | |||
389 | LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n); | ||
390 | LUA_API void (lua_upvaluejoin) (lua_State *L, int fidx1, int n1, | ||
391 | int fidx2, int n2); | ||
339 | 392 | ||
340 | LUA_API int lua_sethook (lua_State *L, lua_Hook func, int mask, int count); | 393 | LUA_API int (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count); |
341 | LUA_API lua_Hook lua_gethook (lua_State *L); | 394 | LUA_API lua_Hook (lua_gethook) (lua_State *L); |
342 | LUA_API int lua_gethookmask (lua_State *L); | 395 | LUA_API int (lua_gethookmask) (lua_State *L); |
343 | LUA_API int lua_gethookcount (lua_State *L); | 396 | LUA_API int (lua_gethookcount) (lua_State *L); |
344 | 397 | ||
345 | 398 | ||
346 | struct lua_Debug { | 399 | struct lua_Debug { |
347 | int event; | 400 | int event; |
348 | const char *name; /* (n) */ | 401 | const char *name; /* (n) */ |
349 | const char *namewhat; /* (n) `global', `local', `field', `method' */ | 402 | const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */ |
350 | const char *what; /* (S) `Lua', `C', `main', `tail' */ | 403 | const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */ |
351 | const char *source; /* (S) */ | 404 | const char *source; /* (S) */ |
352 | int currentline; /* (l) */ | 405 | int currentline; /* (l) */ |
353 | int nups; /* (u) number of upvalues */ | ||
354 | int linedefined; /* (S) */ | 406 | int linedefined; /* (S) */ |
355 | int lastlinedefined; /* (S) */ | 407 | int lastlinedefined; /* (S) */ |
408 | unsigned char nups; /* (u) number of upvalues */ | ||
409 | unsigned char nparams;/* (u) number of parameters */ | ||
410 | char isvararg; /* (u) */ | ||
411 | char istailcall; /* (t) */ | ||
356 | char short_src[LUA_IDSIZE]; /* (S) */ | 412 | char short_src[LUA_IDSIZE]; /* (S) */ |
357 | /* private part */ | 413 | /* private part */ |
358 | int i_ci; /* active function */ | 414 | struct CallInfo *i_ci; /* active function */ |
359 | }; | 415 | }; |
360 | 416 | ||
361 | /* }====================================================================== */ | 417 | /* }====================================================================== */ |
362 | 418 | ||
363 | 419 | ||
364 | /****************************************************************************** | 420 | /****************************************************************************** |
365 | * Copyright (C) 1994-2008 Lua.org, PUC-Rio. All rights reserved. | 421 | * Copyright (C) 1994-2013 Lua.org, PUC-Rio. |
366 | * | 422 | * |
367 | * Permission is hereby granted, free of charge, to any person obtaining | 423 | * Permission is hereby granted, free of charge, to any person obtaining |
368 | * a copy of this software and associated documentation files (the | 424 | * a copy of this software and associated documentation files (the |