diff options
| -rw-r--r-- | lapi.c | 29 | ||||
| -rw-r--r-- | lauxlib.c | 27 | ||||
| -rw-r--r-- | lauxlib.h | 27 | ||||
| -rw-r--r-- | lbaselib.c | 14 | ||||
| -rw-r--r-- | ldblib.c | 10 | ||||
| -rw-r--r-- | liolib.c | 24 | ||||
| -rw-r--r-- | lmathlib.c | 8 | ||||
| -rw-r--r-- | lstrlib.c | 34 | ||||
| -rw-r--r-- | ltablib.c | 6 | ||||
| -rw-r--r-- | ltests.c | 89 | ||||
| -rw-r--r-- | lua.h | 12 |
11 files changed, 160 insertions, 120 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lapi.c,v 1.243 2003/08/25 20:00:50 roberto Exp roberto $ | 2 | ** $Id: lapi.c,v 1.244 2003/08/27 21:01:44 roberto Exp roberto $ |
| 3 | ** Lua API | 3 | ** Lua API |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -27,6 +27,12 @@ | |||
| 27 | #include "lvm.h" | 27 | #include "lvm.h" |
| 28 | 28 | ||
| 29 | 29 | ||
| 30 | /* function to convert a lua_Number to lua_Integer (with any rounding method) */ | ||
| 31 | #ifndef lua_number2integer | ||
| 32 | #define lua_number2integer(i,n) ((i)=(lua_Integer)(n)) | ||
| 33 | #endif | ||
| 34 | |||
| 35 | |||
| 30 | const char lua_ident[] = | 36 | const char lua_ident[] = |
| 31 | "$Lua: " LUA_VERSION " " LUA_COPYRIGHT " $\n" | 37 | "$Lua: " LUA_VERSION " " LUA_COPYRIGHT " $\n" |
| 32 | "$Authors: " LUA_AUTHORS " $\n" | 38 | "$Authors: " LUA_AUTHORS " $\n" |
| @@ -289,6 +295,19 @@ LUA_API lua_Number lua_tonumber (lua_State *L, int idx) { | |||
| 289 | } | 295 | } |
| 290 | 296 | ||
| 291 | 297 | ||
| 298 | LUA_API lua_Integer lua_tointeger (lua_State *L, int idx) { | ||
| 299 | TObject n; | ||
| 300 | const TObject *o = luaA_index(L, idx); | ||
| 301 | if (tonumber(o, &n)) { | ||
| 302 | lua_Integer res; | ||
| 303 | lua_number2integer(res, nvalue(o)); | ||
| 304 | return res; | ||
| 305 | } | ||
| 306 | else | ||
| 307 | return 0; | ||
| 308 | } | ||
| 309 | |||
| 310 | |||
| 292 | LUA_API int lua_toboolean (lua_State *L, int idx) { | 311 | LUA_API int lua_toboolean (lua_State *L, int idx) { |
| 293 | const TObject *o = luaA_index(L, idx); | 312 | const TObject *o = luaA_index(L, idx); |
| 294 | return !l_isfalse(o); | 313 | return !l_isfalse(o); |
| @@ -382,6 +401,14 @@ LUA_API void lua_pushnumber (lua_State *L, lua_Number n) { | |||
| 382 | } | 401 | } |
| 383 | 402 | ||
| 384 | 403 | ||
| 404 | LUA_API void lua_pushinteger (lua_State *L, lua_Integer n) { | ||
| 405 | lua_lock(L); | ||
| 406 | setnvalue(L->top, cast(lua_Number, n)); | ||
| 407 | api_incr_top(L); | ||
| 408 | lua_unlock(L); | ||
| 409 | } | ||
| 410 | |||
| 411 | |||
| 385 | LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len) { | 412 | LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len) { |
| 386 | lua_lock(L); | 413 | lua_lock(L); |
| 387 | luaC_checkGC(L); | 414 | luaC_checkGC(L); |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lauxlib.c,v 1.103 2003/10/01 16:50:53 roberto Exp roberto $ | 2 | ** $Id: lauxlib.c,v 1.104 2003/10/02 20:31:17 roberto Exp roberto $ |
| 3 | ** Auxiliary functions for building Lua libraries | 3 | ** Auxiliary functions for building Lua libraries |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -197,6 +197,21 @@ LUALIB_API lua_Number luaL_optnumber (lua_State *L, int narg, lua_Number def) { | |||
| 197 | } | 197 | } |
| 198 | 198 | ||
| 199 | 199 | ||
| 200 | LUALIB_API lua_Integer luaL_checkinteger (lua_State *L, int narg) { | ||
| 201 | lua_Integer d = lua_tointeger(L, narg); | ||
| 202 | if (d == 0 && !lua_isnumber(L, narg)) /* avoid extra test when d is not 0 */ | ||
| 203 | tag_error(L, narg, LUA_TNUMBER); | ||
| 204 | return d; | ||
| 205 | } | ||
| 206 | |||
| 207 | |||
| 208 | LUALIB_API lua_Integer luaL_optinteger (lua_State *L, int narg, | ||
| 209 | lua_Integer def) { | ||
| 210 | if (lua_isnoneornil(L, narg)) return def; | ||
| 211 | else return luaL_checkinteger(L, narg); | ||
| 212 | } | ||
| 213 | |||
| 214 | |||
| 200 | LUALIB_API int luaL_getmetafield (lua_State *L, int obj, const char *event) { | 215 | LUALIB_API int luaL_getmetafield (lua_State *L, int obj, const char *event) { |
| 201 | if (!lua_getmetatable(L, obj)) /* no metatable? */ | 216 | if (!lua_getmetatable(L, obj)) /* no metatable? */ |
| 202 | return 0; | 217 | return 0; |
| @@ -257,7 +272,7 @@ LUALIB_API void luaL_openlib (lua_State *L, const char *libname, | |||
| 257 | */ | 272 | */ |
| 258 | 273 | ||
| 259 | static int checkint (lua_State *L, int topop) { | 274 | static int checkint (lua_State *L, int topop) { |
| 260 | int n = (int)lua_tonumber(L, -1); | 275 | int n = (int)lua_tointeger(L, -1); |
| 261 | if (n == 0 && !lua_isnumber(L, -1)) n = -1; | 276 | if (n == 0 && !lua_isnumber(L, -1)) n = -1; |
| 262 | lua_pop(L, topop); | 277 | lua_pop(L, topop); |
| 263 | return n; | 278 | return n; |
| @@ -286,13 +301,13 @@ void luaL_setn (lua_State *L, int t, int n) { | |||
| 286 | lua_rawget(L, t); | 301 | lua_rawget(L, t); |
| 287 | if (checkint(L, 1) >= 0) { /* is there a numeric field `n'? */ | 302 | if (checkint(L, 1) >= 0) { /* is there a numeric field `n'? */ |
| 288 | lua_pushliteral(L, "n"); /* use it */ | 303 | lua_pushliteral(L, "n"); /* use it */ |
| 289 | lua_pushnumber(L, (lua_Number)n); | 304 | lua_pushinteger(L, n); |
| 290 | lua_rawset(L, t); | 305 | lua_rawset(L, t); |
| 291 | } | 306 | } |
| 292 | else { /* use `sizes' */ | 307 | else { /* use `sizes' */ |
| 293 | getsizes(L); | 308 | getsizes(L); |
| 294 | lua_pushvalue(L, t); | 309 | lua_pushvalue(L, t); |
| 295 | lua_pushnumber(L, (lua_Number)n); | 310 | lua_pushinteger(L, n); |
| 296 | lua_rawset(L, -3); /* sizes[t] = n */ | 311 | lua_rawset(L, -3); /* sizes[t] = n */ |
| 297 | lua_pop(L, 1); /* remove `sizes' */ | 312 | lua_pop(L, 1); /* remove `sizes' */ |
| 298 | } | 313 | } |
| @@ -425,7 +440,7 @@ LUALIB_API int luaL_ref (lua_State *L, int t) { | |||
| 425 | return LUA_REFNIL; /* `nil' has a unique fixed reference */ | 440 | return LUA_REFNIL; /* `nil' has a unique fixed reference */ |
| 426 | } | 441 | } |
| 427 | lua_rawgeti(L, t, FREELIST_REF); /* get first free element */ | 442 | lua_rawgeti(L, t, FREELIST_REF); /* get first free element */ |
| 428 | ref = (int)lua_tonumber(L, -1); /* ref = t[FREELIST_REF] */ | 443 | ref = (int)lua_tointeger(L, -1); /* ref = t[FREELIST_REF] */ |
| 429 | lua_pop(L, 1); /* remove it from stack */ | 444 | lua_pop(L, 1); /* remove it from stack */ |
| 430 | if (ref != 0) { /* any free element? */ | 445 | if (ref != 0) { /* any free element? */ |
| 431 | lua_rawgeti(L, t, ref); /* remove it from list */ | 446 | lua_rawgeti(L, t, ref); /* remove it from list */ |
| @@ -448,7 +463,7 @@ LUALIB_API void luaL_unref (lua_State *L, int t, int ref) { | |||
| 448 | t = abs_index(L, t); | 463 | t = abs_index(L, t); |
| 449 | lua_rawgeti(L, t, FREELIST_REF); | 464 | lua_rawgeti(L, t, FREELIST_REF); |
| 450 | lua_rawseti(L, t, ref); /* t[ref] = t[FREELIST_REF] */ | 465 | lua_rawseti(L, t, ref); /* t[ref] = t[FREELIST_REF] */ |
| 451 | lua_pushnumber(L, (lua_Number)ref); | 466 | lua_pushinteger(L, ref); |
| 452 | lua_rawseti(L, t, FREELIST_REF); /* t[FREELIST_REF] = ref */ | 467 | lua_rawseti(L, t, FREELIST_REF); /* t[FREELIST_REF] = ref */ |
| 453 | } | 468 | } |
| 454 | } | 469 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lauxlib.h,v 1.60 2003/04/03 13:35:34 roberto Exp roberto $ | 2 | ** $Id: lauxlib.h,v 1.61 2003/10/02 20:31:17 roberto Exp roberto $ |
| 3 | ** Auxiliary functions for building Lua libraries | 3 | ** Auxiliary functions for building Lua libraries |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -39,6 +39,10 @@ LUALIB_API const char *luaL_optlstring (lua_State *L, int numArg, | |||
| 39 | LUALIB_API lua_Number luaL_checknumber (lua_State *L, int numArg); | 39 | LUALIB_API lua_Number luaL_checknumber (lua_State *L, int numArg); |
| 40 | LUALIB_API lua_Number luaL_optnumber (lua_State *L, int nArg, lua_Number def); | 40 | LUALIB_API lua_Number luaL_optnumber (lua_State *L, int nArg, lua_Number def); |
| 41 | 41 | ||
| 42 | LUALIB_API lua_Integer luaL_checkinteger (lua_State *L, int numArg); | ||
| 43 | LUALIB_API lua_Integer luaL_optinteger (lua_State *L, int nArg, | ||
| 44 | lua_Integer def); | ||
| 45 | |||
| 42 | LUALIB_API void luaL_checkstack (lua_State *L, int sz, const char *msg); | 46 | LUALIB_API void luaL_checkstack (lua_State *L, int sz, const char *msg); |
| 43 | LUALIB_API void luaL_checktype (lua_State *L, int narg, int t); | 47 | LUALIB_API void luaL_checktype (lua_State *L, int narg, int t); |
| 44 | LUALIB_API void luaL_checkany (lua_State *L, int narg); | 48 | LUALIB_API void luaL_checkany (lua_State *L, int narg); |
| @@ -76,10 +80,10 @@ LUALIB_API lua_State *(luaL_newstate) (void); | |||
| 76 | luaL_argerror(L, numarg,extramsg) | 80 | luaL_argerror(L, numarg,extramsg) |
| 77 | #define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) | 81 | #define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) |
| 78 | #define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) | 82 | #define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) |
| 79 | #define luaL_checkint(L,n) ((int)luaL_checknumber(L, n)) | 83 | #define luaL_checkint(L,n) ((int)luaL_checkinteger(L, n)) |
| 80 | #define luaL_checklong(L,n) ((long)luaL_checknumber(L, n)) | 84 | #define luaL_optint(L,n,d) ((int)luaL_optinteger(L, n,d)) |
| 81 | #define luaL_optint(L,n,d) ((int)luaL_optnumber(L, n,(lua_Number)(d))) | 85 | #define luaL_checklong(L,n) ((long)luaL_checkinteger(L, n)) |
| 82 | #define luaL_optlong(L,n,d) ((long)luaL_optnumber(L, n,(lua_Number)(d))) | 86 | #define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, n,d)) |
| 83 | 87 | ||
| 84 | 88 | ||
| 85 | /* | 89 | /* |
| @@ -129,19 +133,6 @@ LUALIB_API int lua_dobuffer (lua_State *L, const char *buff, size_t sz, | |||
| 129 | const char *n); | 133 | const char *n); |
| 130 | 134 | ||
| 131 | 135 | ||
| 132 | #define luaL_check_lstr luaL_checklstring | ||
| 133 | #define luaL_opt_lstr luaL_optlstring | ||
| 134 | #define luaL_check_number luaL_checknumber | ||
| 135 | #define luaL_opt_number luaL_optnumber | ||
| 136 | #define luaL_arg_check luaL_argcheck | ||
| 137 | #define luaL_check_string luaL_checkstring | ||
| 138 | #define luaL_opt_string luaL_optstring | ||
| 139 | #define luaL_check_int luaL_checkint | ||
| 140 | #define luaL_check_long luaL_checklong | ||
| 141 | #define luaL_opt_int luaL_optint | ||
| 142 | #define luaL_opt_long luaL_optlong | ||
| 143 | |||
| 144 | |||
| 145 | #endif | 136 | #endif |
| 146 | 137 | ||
| 147 | 138 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lbaselib.c,v 1.132 2003/08/25 19:49:47 roberto Exp roberto $ | 2 | ** $Id: lbaselib.c,v 1.133 2003/08/27 21:02:08 roberto Exp roberto $ |
| 3 | ** Basic library | 3 | ** Basic library |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -187,8 +187,8 @@ static int luaB_rawset (lua_State *L) { | |||
| 187 | 187 | ||
| 188 | 188 | ||
| 189 | static int luaB_gcinfo (lua_State *L) { | 189 | static int luaB_gcinfo (lua_State *L) { |
| 190 | lua_pushnumber(L, (lua_Number)lua_getgccount(L)); | 190 | lua_pushinteger(L, lua_getgccount(L)); |
| 191 | lua_pushnumber(L, (lua_Number)lua_getgcthreshold(L)); | 191 | lua_pushinteger(L, lua_getgcthreshold(L)); |
| 192 | return 2; | 192 | return 2; |
| 193 | } | 193 | } |
| 194 | 194 | ||
| @@ -229,19 +229,19 @@ static int luaB_pairs (lua_State *L) { | |||
| 229 | 229 | ||
| 230 | 230 | ||
| 231 | static int luaB_ipairs (lua_State *L) { | 231 | static int luaB_ipairs (lua_State *L) { |
| 232 | lua_Number i = lua_tonumber(L, 2); | 232 | int i = (int)lua_tointeger(L, 2); |
| 233 | luaL_checktype(L, 1, LUA_TTABLE); | 233 | luaL_checktype(L, 1, LUA_TTABLE); |
| 234 | if (i == 0 && lua_isnone(L, 2)) { /* `for' start? */ | 234 | if (i == 0 && lua_isnone(L, 2)) { /* `for' start? */ |
| 235 | lua_pushliteral(L, "ipairs"); | 235 | lua_pushliteral(L, "ipairs"); |
| 236 | lua_rawget(L, LUA_GLOBALSINDEX); /* return generator, */ | 236 | lua_rawget(L, LUA_GLOBALSINDEX); /* return generator, */ |
| 237 | lua_pushvalue(L, 1); /* state, */ | 237 | lua_pushvalue(L, 1); /* state, */ |
| 238 | lua_pushnumber(L, 0); /* and initial value */ | 238 | lua_pushinteger(L, 0); /* and initial value */ |
| 239 | return 3; | 239 | return 3; |
| 240 | } | 240 | } |
| 241 | else { /* `for' step */ | 241 | else { /* `for' step */ |
| 242 | i++; /* next value */ | 242 | i++; /* next value */ |
| 243 | lua_pushnumber(L, i); | 243 | lua_pushinteger(L, i); |
| 244 | lua_rawgeti(L, 1, (int)i); | 244 | lua_rawgeti(L, 1, i); |
| 245 | return (lua_isnil(L, -1)) ? 0 : 2; | 245 | return (lua_isnil(L, -1)) ? 0 : 2; |
| 246 | } | 246 | } |
| 247 | } | 247 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ldblib.c,v 1.80 2003/04/03 13:35:34 roberto Exp roberto $ | 2 | ** $Id: ldblib.c,v 1.81 2003/07/07 13:37:08 roberto Exp roberto $ |
| 3 | ** Interface from Lua to its debug API | 3 | ** Interface from Lua to its debug API |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -27,7 +27,7 @@ static void settabss (lua_State *L, const char *i, const char *v) { | |||
| 27 | 27 | ||
| 28 | static void settabsi (lua_State *L, const char *i, int v) { | 28 | static void settabsi (lua_State *L, const char *i, int v) { |
| 29 | lua_pushstring(L, i); | 29 | lua_pushstring(L, i); |
| 30 | lua_pushnumber(L, (lua_Number)v); | 30 | lua_pushinteger(L, v); |
| 31 | lua_rawset(L, -3); | 31 | lua_rawset(L, -3); |
| 32 | } | 32 | } |
| 33 | 33 | ||
| @@ -50,7 +50,7 @@ static int getinfo (lua_State *L) { | |||
| 50 | lua_State *L1 = getthread(L, &arg); | 50 | lua_State *L1 = getthread(L, &arg); |
| 51 | const char *options = luaL_optstring(L, arg+2, "flnSu"); | 51 | const char *options = luaL_optstring(L, arg+2, "flnSu"); |
| 52 | if (lua_isnumber(L, arg+1)) { | 52 | if (lua_isnumber(L, arg+1)) { |
| 53 | if (!lua_getstack(L1, (int)(lua_tonumber(L, arg+1)), &ar)) { | 53 | if (!lua_getstack(L1, (int)lua_tointeger(L, arg+1), &ar)) { |
| 54 | lua_pushnil(L); /* level out of range */ | 54 | lua_pushnil(L); /* level out of range */ |
| 55 | return 1; | 55 | return 1; |
| 56 | } | 56 | } |
| @@ -171,7 +171,7 @@ static void hookf (lua_State *L, lua_Debug *ar) { | |||
| 171 | if (lua_isfunction(L, -1)) { | 171 | if (lua_isfunction(L, -1)) { |
| 172 | lua_pushstring(L, hooknames[(int)ar->event]); | 172 | lua_pushstring(L, hooknames[(int)ar->event]); |
| 173 | if (ar->currentline >= 0) | 173 | if (ar->currentline >= 0) |
| 174 | lua_pushnumber(L, (lua_Number)ar->currentline); | 174 | lua_pushinteger(L, ar->currentline); |
| 175 | else lua_pushnil(L); | 175 | else lua_pushnil(L); |
| 176 | lua_assert(lua_getinfo(L, "lS", ar)); | 176 | lua_assert(lua_getinfo(L, "lS", ar)); |
| 177 | lua_call(L, 2, 0); | 177 | lua_call(L, 2, 0); |
| @@ -251,7 +251,7 @@ static int gethook (lua_State *L) { | |||
| 251 | lua_xmove(L1, L, 1); | 251 | lua_xmove(L1, L, 1); |
| 252 | } | 252 | } |
| 253 | lua_pushstring(L, unmakemask(mask, buff)); | 253 | lua_pushstring(L, unmakemask(mask, buff)); |
| 254 | lua_pushnumber(L, (lua_Number)lua_gethookcount(L1)); | 254 | lua_pushinteger(L, lua_gethookcount(L1)); |
| 255 | return 3; | 255 | return 3; |
| 256 | } | 256 | } |
| 257 | 257 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: liolib.c,v 2.45 2003/07/09 12:08:43 roberto Exp roberto $ | 2 | ** $Id: liolib.c,v 2.46 2003/08/25 19:49:47 roberto Exp roberto $ |
| 3 | ** Standard I/O (and system) library | 3 | ** Standard I/O (and system) library |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -76,7 +76,7 @@ static int pushresult (lua_State *L, int i, const char *filename) { | |||
| 76 | lua_pushfstring(L, "%s: %s", filename, strerror(errno)); | 76 | lua_pushfstring(L, "%s: %s", filename, strerror(errno)); |
| 77 | else | 77 | else |
| 78 | lua_pushfstring(L, "%s", strerror(errno)); | 78 | lua_pushfstring(L, "%s", strerror(errno)); |
| 79 | lua_pushnumber(L, errno); | 79 | lua_pushinteger(L, errno); |
| 80 | return 3; | 80 | return 3; |
| 81 | } | 81 | } |
| 82 | } | 82 | } |
| @@ -346,7 +346,7 @@ static int g_read (lua_State *L, FILE *f, int first) { | |||
| 346 | success = 1; | 346 | success = 1; |
| 347 | for (n = first; nargs-- && success; n++) { | 347 | for (n = first; nargs-- && success; n++) { |
| 348 | if (lua_type(L, n) == LUA_TNUMBER) { | 348 | if (lua_type(L, n) == LUA_TNUMBER) { |
| 349 | size_t l = (size_t)lua_tonumber(L, n); | 349 | size_t l = (size_t)lua_tointeger(L, n); |
| 350 | success = (l == 0) ? test_eof(L, f) : read_chars(L, f, l); | 350 | success = (l == 0) ? test_eof(L, f) : read_chars(L, f, l); |
| 351 | } | 351 | } |
| 352 | else { | 352 | else { |
| @@ -441,13 +441,13 @@ static int f_seek (lua_State *L) { | |||
| 441 | static const char *const modenames[] = {"set", "cur", "end", NULL}; | 441 | static const char *const modenames[] = {"set", "cur", "end", NULL}; |
| 442 | FILE *f = tofile(L, 1); | 442 | FILE *f = tofile(L, 1); |
| 443 | int op = luaL_findstring(luaL_optstring(L, 2, "cur"), modenames); | 443 | int op = luaL_findstring(luaL_optstring(L, 2, "cur"), modenames); |
| 444 | long offset = luaL_optlong(L, 3, 0); | 444 | lua_Integer offset = luaL_optinteger(L, 3, 0); |
| 445 | luaL_argcheck(L, op != -1, 2, "invalid mode"); | 445 | luaL_argcheck(L, op != -1, 2, "invalid mode"); |
| 446 | op = fseek(f, offset, mode[op]); | 446 | op = fseek(f, offset, mode[op]); |
| 447 | if (op) | 447 | if (op) |
| 448 | return pushresult(L, 0, NULL); /* error */ | 448 | return pushresult(L, 0, NULL); /* error */ |
| 449 | else { | 449 | else { |
| 450 | lua_pushnumber(L, ftell(f)); | 450 | lua_pushinteger(L, ftell(f)); |
| 451 | return 1; | 451 | return 1; |
| 452 | } | 452 | } |
| 453 | } | 453 | } |
| @@ -528,7 +528,7 @@ static void createmeta (lua_State *L) { | |||
| 528 | */ | 528 | */ |
| 529 | 529 | ||
| 530 | static int io_execute (lua_State *L) { | 530 | static int io_execute (lua_State *L) { |
| 531 | lua_pushnumber(L, system(luaL_checkstring(L, 1))); | 531 | lua_pushinteger(L, system(luaL_checkstring(L, 1))); |
| 532 | return 1; | 532 | return 1; |
| 533 | } | 533 | } |
| 534 | 534 | ||
| @@ -582,7 +582,7 @@ static int io_clock (lua_State *L) { | |||
| 582 | 582 | ||
| 583 | static void setfield (lua_State *L, const char *key, int value) { | 583 | static void setfield (lua_State *L, const char *key, int value) { |
| 584 | lua_pushstring(L, key); | 584 | lua_pushstring(L, key); |
| 585 | lua_pushnumber(L, value); | 585 | lua_pushinteger(L, value); |
| 586 | lua_rawset(L, -3); | 586 | lua_rawset(L, -3); |
| 587 | } | 587 | } |
| 588 | 588 | ||
| @@ -607,9 +607,9 @@ static int getfield (lua_State *L, const char *key, int d) { | |||
| 607 | lua_pushstring(L, key); | 607 | lua_pushstring(L, key); |
| 608 | lua_gettable(L, -2); | 608 | lua_gettable(L, -2); |
| 609 | if (lua_isnumber(L, -1)) | 609 | if (lua_isnumber(L, -1)) |
| 610 | res = (int)(lua_tonumber(L, -1)); | 610 | res = (int)lua_tointeger(L, -1); |
| 611 | else { | 611 | else { |
| 612 | if (d == -2) | 612 | if (d < 0) |
| 613 | return luaL_error(L, "field `%s' missing in date table", key); | 613 | return luaL_error(L, "field `%s' missing in date table", key); |
| 614 | res = d; | 614 | res = d; |
| 615 | } | 615 | } |
| @@ -665,9 +665,9 @@ static int io_time (lua_State *L) { | |||
| 665 | ts.tm_sec = getfield(L, "sec", 0); | 665 | ts.tm_sec = getfield(L, "sec", 0); |
| 666 | ts.tm_min = getfield(L, "min", 0); | 666 | ts.tm_min = getfield(L, "min", 0); |
| 667 | ts.tm_hour = getfield(L, "hour", 12); | 667 | ts.tm_hour = getfield(L, "hour", 12); |
| 668 | ts.tm_mday = getfield(L, "day", -2); | 668 | ts.tm_mday = getfield(L, "day", -1); |
| 669 | ts.tm_mon = getfield(L, "month", -2) - 1; | 669 | ts.tm_mon = getfield(L, "month", -1) - 1; |
| 670 | ts.tm_year = getfield(L, "year", -2) - 1900; | 670 | ts.tm_year = getfield(L, "year", -1) - 1900; |
| 671 | ts.tm_isdst = getboolfield(L, "isdst"); | 671 | ts.tm_isdst = getboolfield(L, "isdst"); |
| 672 | t = mktime(&ts); | 672 | t = mktime(&ts); |
| 673 | if (t == (time_t)(-1)) | 673 | if (t == (time_t)(-1)) |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lmathlib.c,v 1.55 2003/03/11 12:24:34 roberto Exp roberto $ | 2 | ** $Id: lmathlib.c,v 1.56 2003/03/11 12:30:37 roberto Exp roberto $ |
| 3 | ** Standard mathematical library | 3 | ** Standard mathematical library |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -128,7 +128,7 @@ static int math_rad (lua_State *L) { | |||
| 128 | static int math_frexp (lua_State *L) { | 128 | static int math_frexp (lua_State *L) { |
| 129 | int e; | 129 | int e; |
| 130 | lua_pushnumber(L, frexp(luaL_checknumber(L, 1), &e)); | 130 | lua_pushnumber(L, frexp(luaL_checknumber(L, 1), &e)); |
| 131 | lua_pushnumber(L, e); | 131 | lua_pushinteger(L, e); |
| 132 | return 2; | 132 | return 2; |
| 133 | } | 133 | } |
| 134 | 134 | ||
| @@ -179,14 +179,14 @@ static int math_random (lua_State *L) { | |||
| 179 | case 1: { /* only upper limit */ | 179 | case 1: { /* only upper limit */ |
| 180 | int u = luaL_checkint(L, 1); | 180 | int u = luaL_checkint(L, 1); |
| 181 | luaL_argcheck(L, 1<=u, 1, "interval is empty"); | 181 | luaL_argcheck(L, 1<=u, 1, "interval is empty"); |
| 182 | lua_pushnumber(L, (int)floor(r*u)+1); /* int between 1 and `u' */ | 182 | lua_pushnumber(L, floor(r*u)+1); /* int between 1 and `u' */ |
| 183 | break; | 183 | break; |
| 184 | } | 184 | } |
| 185 | case 2: { /* lower and upper limits */ | 185 | case 2: { /* lower and upper limits */ |
| 186 | int l = luaL_checkint(L, 1); | 186 | int l = luaL_checkint(L, 1); |
| 187 | int u = luaL_checkint(L, 2); | 187 | int u = luaL_checkint(L, 2); |
| 188 | luaL_argcheck(L, l<=u, 2, "interval is empty"); | 188 | luaL_argcheck(L, l<=u, 2, "interval is empty"); |
| 189 | lua_pushnumber(L, (int)floor(r*(u-l+1))+l); /* int between `l' and `u' */ | 189 | lua_pushnumber(L, floor(r*(u-l+1))+l); /* int between `l' and `u' */ |
| 190 | break; | 190 | break; |
| 191 | } | 191 | } |
| 192 | default: return luaL_error(L, "wrong number of arguments"); | 192 | default: return luaL_error(L, "wrong number of arguments"); |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lstrlib.c,v 1.98 2003/04/03 13:35:34 roberto Exp roberto $ | 2 | ** $Id: lstrlib.c,v 1.99 2003/05/14 14:35:54 roberto Exp roberto $ |
| 3 | ** Standard library for string operations and pattern-matching | 3 | ** Standard library for string operations and pattern-matching |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -25,13 +25,13 @@ | |||
| 25 | #endif | 25 | #endif |
| 26 | 26 | ||
| 27 | 27 | ||
| 28 | typedef long sint32; /* a signed version for size_t */ | 28 | typedef lua_Integer sint32; /* a signed version for size_t */ |
| 29 | 29 | ||
| 30 | 30 | ||
| 31 | static int str_len (lua_State *L) { | 31 | static int str_len (lua_State *L) { |
| 32 | size_t l; | 32 | size_t l; |
| 33 | luaL_checklstring(L, 1, &l); | 33 | luaL_checklstring(L, 1, &l); |
| 34 | lua_pushnumber(L, (lua_Number)l); | 34 | lua_pushinteger(L, l); |
| 35 | return 1; | 35 | return 1; |
| 36 | } | 36 | } |
| 37 | 37 | ||
| @@ -45,8 +45,8 @@ static sint32 posrelat (sint32 pos, size_t len) { | |||
| 45 | static int str_sub (lua_State *L) { | 45 | static int str_sub (lua_State *L) { |
| 46 | size_t l; | 46 | size_t l; |
| 47 | const char *s = luaL_checklstring(L, 1, &l); | 47 | const char *s = luaL_checklstring(L, 1, &l); |
| 48 | sint32 start = posrelat(luaL_checklong(L, 2), l); | 48 | sint32 start = posrelat(luaL_checkinteger(L, 2), l); |
| 49 | sint32 end = posrelat(luaL_optlong(L, 3, -1), l); | 49 | sint32 end = posrelat(luaL_optinteger(L, 3, -1), l); |
| 50 | if (start < 1) start = 1; | 50 | if (start < 1) start = 1; |
| 51 | if (end > (sint32)l) end = (sint32)l; | 51 | if (end > (sint32)l) end = (sint32)l; |
| 52 | if (start <= end) | 52 | if (start <= end) |
| @@ -108,10 +108,10 @@ static int str_rep (lua_State *L) { | |||
| 108 | static int str_byte (lua_State *L) { | 108 | static int str_byte (lua_State *L) { |
| 109 | size_t l; | 109 | size_t l; |
| 110 | const char *s = luaL_checklstring(L, 1, &l); | 110 | const char *s = luaL_checklstring(L, 1, &l); |
| 111 | sint32 pos = posrelat(luaL_optlong(L, 2, 1), l); | 111 | sint32 pos = posrelat(luaL_optinteger(L, 2, 1), l); |
| 112 | if (pos <= 0 || (size_t)(pos) > l) /* index out of range? */ | 112 | if (pos <= 0 || (size_t)(pos) > l) /* index out of range? */ |
| 113 | return 0; /* no answer */ | 113 | return 0; /* no answer */ |
| 114 | lua_pushnumber(L, uchar(s[pos-1])); | 114 | lua_pushinteger(L, uchar(s[pos-1])); |
| 115 | return 1; | 115 | return 1; |
| 116 | } | 116 | } |
| 117 | 117 | ||
| @@ -463,7 +463,7 @@ static void push_onecapture (MatchState *ms, int i) { | |||
| 463 | int l = ms->capture[i].len; | 463 | int l = ms->capture[i].len; |
| 464 | if (l == CAP_UNFINISHED) luaL_error(ms->L, "unfinished capture"); | 464 | if (l == CAP_UNFINISHED) luaL_error(ms->L, "unfinished capture"); |
| 465 | if (l == CAP_POSITION) | 465 | if (l == CAP_POSITION) |
| 466 | lua_pushnumber(ms->L, (lua_Number)(ms->capture[i].init - ms->src_init + 1)); | 466 | lua_pushinteger(ms->L, ms->capture[i].init - ms->src_init + 1); |
| 467 | else | 467 | else |
| 468 | lua_pushlstring(ms->L, ms->capture[i].init, l); | 468 | lua_pushlstring(ms->L, ms->capture[i].init, l); |
| 469 | } | 469 | } |
| @@ -488,7 +488,7 @@ static int str_find (lua_State *L) { | |||
| 488 | size_t l1, l2; | 488 | size_t l1, l2; |
| 489 | const char *s = luaL_checklstring(L, 1, &l1); | 489 | const char *s = luaL_checklstring(L, 1, &l1); |
| 490 | const char *p = luaL_checklstring(L, 2, &l2); | 490 | const char *p = luaL_checklstring(L, 2, &l2); |
| 491 | sint32 init = posrelat(luaL_optlong(L, 3, 1), l1) - 1; | 491 | sint32 init = posrelat(luaL_optinteger(L, 3, 1), l1) - 1; |
| 492 | if (init < 0) init = 0; | 492 | if (init < 0) init = 0; |
| 493 | else if ((size_t)(init) > l1) init = (sint32)l1; | 493 | else if ((size_t)(init) > l1) init = (sint32)l1; |
| 494 | if (lua_toboolean(L, 4) || /* explicit request? */ | 494 | if (lua_toboolean(L, 4) || /* explicit request? */ |
| @@ -496,8 +496,8 @@ static int str_find (lua_State *L) { | |||
| 496 | /* do a plain search */ | 496 | /* do a plain search */ |
| 497 | const char *s2 = lmemfind(s+init, l1-init, p, l2); | 497 | const char *s2 = lmemfind(s+init, l1-init, p, l2); |
| 498 | if (s2) { | 498 | if (s2) { |
| 499 | lua_pushnumber(L, (lua_Number)(s2-s+1)); | 499 | lua_pushinteger(L, s2-s+1); |
| 500 | lua_pushnumber(L, (lua_Number)(s2-s+l2)); | 500 | lua_pushinteger(L, s2-s+l2); |
| 501 | return 2; | 501 | return 2; |
| 502 | } | 502 | } |
| 503 | } | 503 | } |
| @@ -512,8 +512,8 @@ static int str_find (lua_State *L) { | |||
| 512 | const char *res; | 512 | const char *res; |
| 513 | ms.level = 0; | 513 | ms.level = 0; |
| 514 | if ((res=match(&ms, s1, p)) != NULL) { | 514 | if ((res=match(&ms, s1, p)) != NULL) { |
| 515 | lua_pushnumber(L, (lua_Number)(s1-s+1)); /* start */ | 515 | lua_pushinteger(L, s1-s+1); /* start */ |
| 516 | lua_pushnumber(L, (lua_Number)(res-s)); /* end */ | 516 | lua_pushinteger(L, res-s); /* end */ |
| 517 | return push_captures(&ms, NULL, 0) + 2; | 517 | return push_captures(&ms, NULL, 0) + 2; |
| 518 | } | 518 | } |
| 519 | } while (s1++<ms.src_end && !anchor); | 519 | } while (s1++<ms.src_end && !anchor); |
| @@ -532,7 +532,7 @@ static int gfind_aux (lua_State *L) { | |||
| 532 | ms.L = L; | 532 | ms.L = L; |
| 533 | ms.src_init = s; | 533 | ms.src_init = s; |
| 534 | ms.src_end = s+ls; | 534 | ms.src_end = s+ls; |
| 535 | for (src = s + (size_t)lua_tonumber(L, lua_upvalueindex(3)); | 535 | for (src = s + (size_t)lua_tointeger(L, lua_upvalueindex(3)); |
| 536 | src <= ms.src_end; | 536 | src <= ms.src_end; |
| 537 | src++) { | 537 | src++) { |
| 538 | const char *e; | 538 | const char *e; |
| @@ -540,7 +540,7 @@ static int gfind_aux (lua_State *L) { | |||
| 540 | if ((e = match(&ms, src, p)) != NULL) { | 540 | if ((e = match(&ms, src, p)) != NULL) { |
| 541 | int newstart = e-s; | 541 | int newstart = e-s; |
| 542 | if (e == src) newstart++; /* empty match? go at least one position */ | 542 | if (e == src) newstart++; /* empty match? go at least one position */ |
| 543 | lua_pushnumber(L, (lua_Number)newstart); | 543 | lua_pushinteger(L, newstart); |
| 544 | lua_replace(L, lua_upvalueindex(3)); | 544 | lua_replace(L, lua_upvalueindex(3)); |
| 545 | return push_captures(&ms, src, e); | 545 | return push_captures(&ms, src, e); |
| 546 | } | 546 | } |
| @@ -553,7 +553,7 @@ static int gfind (lua_State *L) { | |||
| 553 | luaL_checkstring(L, 1); | 553 | luaL_checkstring(L, 1); |
| 554 | luaL_checkstring(L, 2); | 554 | luaL_checkstring(L, 2); |
| 555 | lua_settop(L, 2); | 555 | lua_settop(L, 2); |
| 556 | lua_pushnumber(L, 0); | 556 | lua_pushinteger(L, 0); |
| 557 | lua_pushcclosure(L, gfind_aux, 3); | 557 | lua_pushcclosure(L, gfind_aux, 3); |
| 558 | return 1; | 558 | return 1; |
| 559 | } | 559 | } |
| @@ -627,7 +627,7 @@ static int str_gsub (lua_State *L) { | |||
| 627 | } | 627 | } |
| 628 | luaL_addlstring(&b, src, ms.src_end-src); | 628 | luaL_addlstring(&b, src, ms.src_end-src); |
| 629 | luaL_pushresult(&b); | 629 | luaL_pushresult(&b); |
| 630 | lua_pushnumber(L, (lua_Number)n); /* number of substitutions */ | 630 | lua_pushinteger(L, n); /* number of substitutions */ |
| 631 | return 2; | 631 | return 2; |
| 632 | } | 632 | } |
| 633 | 633 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ltablib.c,v 1.20 2003/03/11 12:24:34 roberto Exp roberto $ | 2 | ** $Id: ltablib.c,v 1.21 2003/04/03 13:35:34 roberto Exp roberto $ |
| 3 | ** Library for Table Manipulation | 3 | ** Library for Table Manipulation |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -24,7 +24,7 @@ static int luaB_foreachi (lua_State *L) { | |||
| 24 | luaL_checktype(L, 2, LUA_TFUNCTION); | 24 | luaL_checktype(L, 2, LUA_TFUNCTION); |
| 25 | for (i=1; i<=n; i++) { | 25 | for (i=1; i<=n; i++) { |
| 26 | lua_pushvalue(L, 2); /* function */ | 26 | lua_pushvalue(L, 2); /* function */ |
| 27 | lua_pushnumber(L, (lua_Number)i); /* 1st argument */ | 27 | lua_pushinteger(L, i); /* 1st argument */ |
| 28 | lua_rawgeti(L, 1, i); /* 2nd argument */ | 28 | lua_rawgeti(L, 1, i); /* 2nd argument */ |
| 29 | lua_call(L, 2, 1); | 29 | lua_call(L, 2, 1); |
| 30 | if (!lua_isnil(L, -1)) | 30 | if (!lua_isnil(L, -1)) |
| @@ -54,7 +54,7 @@ static int luaB_foreach (lua_State *L) { | |||
| 54 | 54 | ||
| 55 | 55 | ||
| 56 | static int luaB_getn (lua_State *L) { | 56 | static int luaB_getn (lua_State *L) { |
| 57 | lua_pushnumber(L, (lua_Number)aux_getn(L, 1)); | 57 | lua_pushinteger(L, aux_getn(L, 1)); |
| 58 | return 1; | 58 | return 1; |
| 59 | } | 59 | } |
| 60 | 60 | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ltests.c,v 1.163 2003/07/29 19:26:34 roberto Exp roberto $ | 2 | ** $Id: ltests.c,v 1.164 2003/10/02 20:31:17 roberto Exp roberto $ |
| 3 | ** Internal Module for Debugging of the Lua Implementation | 3 | ** Internal Module for Debugging of the Lua Implementation |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -36,9 +36,6 @@ | |||
| 36 | #ifdef LUA_DEBUG | 36 | #ifdef LUA_DEBUG |
| 37 | 37 | ||
| 38 | 38 | ||
| 39 | #define lua_pushintegral(L,i) lua_pushnumber(L, cast(lua_Number, (i))) | ||
| 40 | |||
| 41 | |||
| 42 | static lua_State *lua_state = NULL; | 39 | static lua_State *lua_state = NULL; |
| 43 | 40 | ||
| 44 | int islocked = 0; | 41 | int islocked = 0; |
| @@ -49,7 +46,7 @@ int islocked = 0; | |||
| 49 | 46 | ||
| 50 | static void setnameval (lua_State *L, const char *name, int val) { | 47 | static void setnameval (lua_State *L, const char *name, int val) { |
| 51 | lua_pushstring(L, name); | 48 | lua_pushstring(L, name); |
| 52 | lua_pushintegral(L, val); | 49 | lua_pushinteger(L, val); |
| 53 | lua_settable(L, -3); | 50 | lua_settable(L, -3); |
| 54 | } | 51 | } |
| 55 | 52 | ||
| @@ -196,7 +193,7 @@ static int listcode (lua_State *L) { | |||
| 196 | setnameval(L, "numparams", p->numparams); | 193 | setnameval(L, "numparams", p->numparams); |
| 197 | for (pc=0; pc<p->sizecode; pc++) { | 194 | for (pc=0; pc<p->sizecode; pc++) { |
| 198 | char buff[100]; | 195 | char buff[100]; |
| 199 | lua_pushintegral(L, pc+1); | 196 | lua_pushinteger(L, pc+1); |
| 200 | lua_pushstring(L, buildop(p, pc, buff)); | 197 | lua_pushstring(L, buildop(p, pc, buff)); |
| 201 | lua_settable(L, -3); | 198 | lua_settable(L, -3); |
| 202 | } | 199 | } |
| @@ -212,7 +209,7 @@ static int listk (lua_State *L) { | |||
| 212 | p = clvalue(func_at(L, 1))->l.p; | 209 | p = clvalue(func_at(L, 1))->l.p; |
| 213 | lua_newtable(L); | 210 | lua_newtable(L); |
| 214 | for (i=0; i<p->sizek; i++) { | 211 | for (i=0; i<p->sizek; i++) { |
| 215 | lua_pushintegral(L, i+1); | 212 | lua_pushinteger(L, i+1); |
| 216 | luaA_pushobject(L, p->k+i); | 213 | luaA_pushobject(L, p->k+i); |
| 217 | lua_settable(L, -3); | 214 | lua_settable(L, -3); |
| 218 | } | 215 | } |
| @@ -257,9 +254,9 @@ static int setgcthreshold (lua_State *L) { | |||
| 257 | 254 | ||
| 258 | static int mem_query (lua_State *L) { | 255 | static int mem_query (lua_State *L) { |
| 259 | if (lua_isnone(L, 1)) { | 256 | if (lua_isnone(L, 1)) { |
| 260 | lua_pushintegral(L, memcontrol.total); | 257 | lua_pushinteger(L, memcontrol.total); |
| 261 | lua_pushintegral(L, memcontrol.numblocks); | 258 | lua_pushinteger(L, memcontrol.numblocks); |
| 262 | lua_pushintegral(L, memcontrol.maxmem); | 259 | lua_pushinteger(L, memcontrol.maxmem); |
| 263 | return 3; | 260 | return 3; |
| 264 | } | 261 | } |
| 265 | else { | 262 | else { |
| @@ -272,14 +269,14 @@ static int mem_query (lua_State *L) { | |||
| 272 | static int hash_query (lua_State *L) { | 269 | static int hash_query (lua_State *L) { |
| 273 | if (lua_isnone(L, 2)) { | 270 | if (lua_isnone(L, 2)) { |
| 274 | luaL_argcheck(L, lua_type(L, 1) == LUA_TSTRING, 1, "string expected"); | 271 | luaL_argcheck(L, lua_type(L, 1) == LUA_TSTRING, 1, "string expected"); |
| 275 | lua_pushintegral(L, tsvalue(func_at(L, 1))->tsv.hash); | 272 | lua_pushinteger(L, tsvalue(func_at(L, 1))->tsv.hash); |
| 276 | } | 273 | } |
| 277 | else { | 274 | else { |
| 278 | TObject *o = func_at(L, 1); | 275 | TObject *o = func_at(L, 1); |
| 279 | Table *t; | 276 | Table *t; |
| 280 | luaL_checktype(L, 2, LUA_TTABLE); | 277 | luaL_checktype(L, 2, LUA_TTABLE); |
| 281 | t = hvalue(func_at(L, 2)); | 278 | t = hvalue(func_at(L, 2)); |
| 282 | lua_pushintegral(L, luaH_mainposition(t, o) - t->node); | 279 | lua_pushinteger(L, luaH_mainposition(t, o) - t->node); |
| 283 | } | 280 | } |
| 284 | return 1; | 281 | return 1; |
| 285 | } | 282 | } |
| @@ -287,11 +284,11 @@ static int hash_query (lua_State *L) { | |||
| 287 | 284 | ||
| 288 | static int stacklevel (lua_State *L) { | 285 | static int stacklevel (lua_State *L) { |
| 289 | unsigned long a = 0; | 286 | unsigned long a = 0; |
| 290 | lua_pushintegral(L, (int)(L->top - L->stack)); | 287 | lua_pushinteger(L, (L->top - L->stack)); |
| 291 | lua_pushintegral(L, (int)(L->stack_last - L->stack)); | 288 | lua_pushinteger(L, (L->stack_last - L->stack)); |
| 292 | lua_pushintegral(L, (int)(L->ci - L->base_ci)); | 289 | lua_pushinteger(L, (L->ci - L->base_ci)); |
| 293 | lua_pushintegral(L, (int)(L->end_ci - L->base_ci)); | 290 | lua_pushinteger(L, (L->end_ci - L->base_ci)); |
| 294 | lua_pushintegral(L, (unsigned long)&a); | 291 | lua_pushinteger(L, (unsigned long)&a); |
| 295 | return 5; | 292 | return 5; |
| 296 | } | 293 | } |
| 297 | 294 | ||
| @@ -302,12 +299,12 @@ static int table_query (lua_State *L) { | |||
| 302 | luaL_checktype(L, 1, LUA_TTABLE); | 299 | luaL_checktype(L, 1, LUA_TTABLE); |
| 303 | t = hvalue(func_at(L, 1)); | 300 | t = hvalue(func_at(L, 1)); |
| 304 | if (i == -1) { | 301 | if (i == -1) { |
| 305 | lua_pushintegral(L, t->sizearray); | 302 | lua_pushinteger(L, t->sizearray); |
| 306 | lua_pushintegral(L, sizenode(t)); | 303 | lua_pushinteger(L, sizenode(t)); |
| 307 | lua_pushintegral(L, t->firstfree - t->node); | 304 | lua_pushinteger(L, t->firstfree - t->node); |
| 308 | } | 305 | } |
| 309 | else if (i < t->sizearray) { | 306 | else if (i < t->sizearray) { |
| 310 | lua_pushintegral(L, i); | 307 | lua_pushinteger(L, i); |
| 311 | luaA_pushobject(L, &t->array[i]); | 308 | luaA_pushobject(L, &t->array[i]); |
| 312 | lua_pushnil(L); | 309 | lua_pushnil(L); |
| 313 | } | 310 | } |
| @@ -321,7 +318,7 @@ static int table_query (lua_State *L) { | |||
| 321 | lua_pushliteral(L, "<undef>"); | 318 | lua_pushliteral(L, "<undef>"); |
| 322 | luaA_pushobject(L, gval(gnode(t, i))); | 319 | luaA_pushobject(L, gval(gnode(t, i))); |
| 323 | if (t->node[i].next) | 320 | if (t->node[i].next) |
| 324 | lua_pushintegral(L, t->node[i].next - t->node); | 321 | lua_pushinteger(L, t->node[i].next - t->node); |
| 325 | else | 322 | else |
| 326 | lua_pushnil(L); | 323 | lua_pushnil(L); |
| 327 | } | 324 | } |
| @@ -333,8 +330,8 @@ static int string_query (lua_State *L) { | |||
| 333 | stringtable *tb = &G(L)->strt; | 330 | stringtable *tb = &G(L)->strt; |
| 334 | int s = luaL_optint(L, 2, 0) - 1; | 331 | int s = luaL_optint(L, 2, 0) - 1; |
| 335 | if (s==-1) { | 332 | if (s==-1) { |
| 336 | lua_pushintegral(L ,tb->nuse); | 333 | lua_pushinteger(L ,tb->nuse); |
| 337 | lua_pushintegral(L ,tb->size); | 334 | lua_pushinteger(L ,tb->size); |
| 338 | return 2; | 335 | return 2; |
| 339 | } | 336 | } |
| 340 | else if (s < tb->size) { | 337 | else if (s < tb->size) { |
| @@ -356,7 +353,7 @@ static int tref (lua_State *L) { | |||
| 356 | int lock = luaL_optint(L, 2, 1); | 353 | int lock = luaL_optint(L, 2, 1); |
| 357 | luaL_checkany(L, 1); | 354 | luaL_checkany(L, 1); |
| 358 | lua_pushvalue(L, 1); | 355 | lua_pushvalue(L, 1); |
| 359 | lua_pushintegral(L, lua_ref(L, lock)); | 356 | lua_pushinteger(L, lua_ref(L, lock)); |
| 360 | assert(lua_gettop(L) == level+1); /* +1 for result */ | 357 | assert(lua_gettop(L) == level+1); /* +1 for result */ |
| 361 | return 1; | 358 | return 1; |
| 362 | } | 359 | } |
| @@ -422,7 +419,7 @@ static int pushuserdata (lua_State *L) { | |||
| 422 | 419 | ||
| 423 | 420 | ||
| 424 | static int udataval (lua_State *L) { | 421 | static int udataval (lua_State *L) { |
| 425 | lua_pushintegral(L, cast(int, lua_touserdata(L, 1))); | 422 | lua_pushinteger(L, cast(long, lua_touserdata(L, 1))); |
| 426 | return 1; | 423 | return 1; |
| 427 | } | 424 | } |
| 428 | 425 | ||
| @@ -434,7 +431,7 @@ static int doonnewstack (lua_State *L) { | |||
| 434 | int status = luaL_loadbuffer(L1, s, l, s); | 431 | int status = luaL_loadbuffer(L1, s, l, s); |
| 435 | if (status == 0) | 432 | if (status == 0) |
| 436 | status = lua_pcall(L1, 0, 0, 0); | 433 | status = lua_pcall(L1, 0, 0, 0); |
| 437 | lua_pushintegral(L, status); | 434 | lua_pushinteger(L, status); |
| 438 | return 1; | 435 | return 1; |
| 439 | } | 436 | } |
| 440 | 437 | ||
| @@ -455,7 +452,7 @@ static int newstate (lua_State *L) { | |||
| 455 | lua_State *L1 = lua_open(); | 452 | lua_State *L1 = lua_open(); |
| 456 | if (L1) { | 453 | if (L1) { |
| 457 | lua_userstateopen(L1); /* init lock */ | 454 | lua_userstateopen(L1); /* init lock */ |
| 458 | lua_pushintegral(L, (unsigned long)L1); | 455 | lua_pushinteger(L, (unsigned long)L1); |
| 459 | } | 456 | } |
| 460 | else | 457 | else |
| 461 | lua_pushnil(L); | 458 | lua_pushnil(L); |
| @@ -498,7 +495,7 @@ static int doremote (lua_State *L) { | |||
| 498 | status = lua_pcall(L1, 0, LUA_MULTRET, 0); | 495 | status = lua_pcall(L1, 0, LUA_MULTRET, 0); |
| 499 | if (status != 0) { | 496 | if (status != 0) { |
| 500 | lua_pushnil(L); | 497 | lua_pushnil(L); |
| 501 | lua_pushintegral(L, status); | 498 | lua_pushinteger(L, status); |
| 502 | lua_pushstring(L, lua_tostring(L1, -1)); | 499 | lua_pushstring(L, lua_tostring(L1, -1)); |
| 503 | return 3; | 500 | return 3; |
| 504 | } | 501 | } |
| @@ -513,14 +510,14 @@ static int doremote (lua_State *L) { | |||
| 513 | 510 | ||
| 514 | 511 | ||
| 515 | static int log2_aux (lua_State *L) { | 512 | static int log2_aux (lua_State *L) { |
| 516 | lua_pushintegral(L, luaO_log2(luaL_checkint(L, 1))); | 513 | lua_pushinteger(L, luaO_log2(luaL_checkint(L, 1))); |
| 517 | return 1; | 514 | return 1; |
| 518 | } | 515 | } |
| 519 | 516 | ||
| 520 | static int int2fb_aux (lua_State *L) { | 517 | static int int2fb_aux (lua_State *L) { |
| 521 | int b = luaO_int2fb(luaL_checkint(L, 1)); | 518 | int b = luaO_int2fb(luaL_checkint(L, 1)); |
| 522 | lua_pushintegral(L, b); | 519 | lua_pushinteger(L, b); |
| 523 | lua_pushintegral(L, fb2int(b)); | 520 | lua_pushinteger(L, fb2int(b)); |
| 524 | return 2; | 521 | return 2; |
| 525 | } | 522 | } |
| 526 | 523 | ||
| @@ -590,31 +587,31 @@ static int testC (lua_State *L) { | |||
| 590 | const char *inst = getname; | 587 | const char *inst = getname; |
| 591 | if EQ("") return 0; | 588 | if EQ("") return 0; |
| 592 | else if EQ("isnumber") { | 589 | else if EQ("isnumber") { |
| 593 | lua_pushintegral(L, lua_isnumber(L, getnum)); | 590 | lua_pushinteger(L, lua_isnumber(L, getnum)); |
| 594 | } | 591 | } |
| 595 | else if EQ("isstring") { | 592 | else if EQ("isstring") { |
| 596 | lua_pushintegral(L, lua_isstring(L, getnum)); | 593 | lua_pushinteger(L, lua_isstring(L, getnum)); |
| 597 | } | 594 | } |
| 598 | else if EQ("istable") { | 595 | else if EQ("istable") { |
| 599 | lua_pushintegral(L, lua_istable(L, getnum)); | 596 | lua_pushinteger(L, lua_istable(L, getnum)); |
| 600 | } | 597 | } |
| 601 | else if EQ("iscfunction") { | 598 | else if EQ("iscfunction") { |
| 602 | lua_pushintegral(L, lua_iscfunction(L, getnum)); | 599 | lua_pushinteger(L, lua_iscfunction(L, getnum)); |
| 603 | } | 600 | } |
| 604 | else if EQ("isfunction") { | 601 | else if EQ("isfunction") { |
| 605 | lua_pushintegral(L, lua_isfunction(L, getnum)); | 602 | lua_pushinteger(L, lua_isfunction(L, getnum)); |
| 606 | } | 603 | } |
| 607 | else if EQ("isuserdata") { | 604 | else if EQ("isuserdata") { |
| 608 | lua_pushintegral(L, lua_isuserdata(L, getnum)); | 605 | lua_pushinteger(L, lua_isuserdata(L, getnum)); |
| 609 | } | 606 | } |
| 610 | else if EQ("isudataval") { | 607 | else if EQ("isudataval") { |
| 611 | lua_pushintegral(L, lua_islightuserdata(L, getnum)); | 608 | lua_pushinteger(L, lua_islightuserdata(L, getnum)); |
| 612 | } | 609 | } |
| 613 | else if EQ("isnil") { | 610 | else if EQ("isnil") { |
| 614 | lua_pushintegral(L, lua_isnil(L, getnum)); | 611 | lua_pushinteger(L, lua_isnil(L, getnum)); |
| 615 | } | 612 | } |
| 616 | else if EQ("isnull") { | 613 | else if EQ("isnull") { |
| 617 | lua_pushintegral(L, lua_isnone(L, getnum)); | 614 | lua_pushinteger(L, lua_isnone(L, getnum)); |
| 618 | } | 615 | } |
| 619 | else if EQ("tonumber") { | 616 | else if EQ("tonumber") { |
| 620 | lua_pushnumber(L, lua_tonumber(L, getnum)); | 617 | lua_pushnumber(L, lua_tonumber(L, getnum)); |
| @@ -624,7 +621,7 @@ static int testC (lua_State *L) { | |||
| 624 | lua_pushstring(L, s); | 621 | lua_pushstring(L, s); |
| 625 | } | 622 | } |
| 626 | else if EQ("strlen") { | 623 | else if EQ("strlen") { |
| 627 | lua_pushintegral(L, lua_strlen(L, getnum)); | 624 | lua_pushinteger(L, lua_strlen(L, getnum)); |
| 628 | } | 625 | } |
| 629 | else if EQ("tocfunction") { | 626 | else if EQ("tocfunction") { |
| 630 | lua_pushcfunction(L, lua_tocfunction(L, getnum)); | 627 | lua_pushcfunction(L, lua_tocfunction(L, getnum)); |
| @@ -633,7 +630,7 @@ static int testC (lua_State *L) { | |||
| 633 | return getnum; | 630 | return getnum; |
| 634 | } | 631 | } |
| 635 | else if EQ("gettop") { | 632 | else if EQ("gettop") { |
| 636 | lua_pushintegral(L, lua_gettop(L)); | 633 | lua_pushinteger(L, lua_gettop(L)); |
| 637 | } | 634 | } |
| 638 | else if EQ("settop") { | 635 | else if EQ("settop") { |
| 639 | lua_settop(L, getnum); | 636 | lua_settop(L, getnum); |
| @@ -642,7 +639,7 @@ static int testC (lua_State *L) { | |||
| 642 | lua_pop(L, getnum); | 639 | lua_pop(L, getnum); |
| 643 | } | 640 | } |
| 644 | else if EQ("pushnum") { | 641 | else if EQ("pushnum") { |
| 645 | lua_pushintegral(L, getnum); | 642 | lua_pushinteger(L, getnum); |
| 646 | } | 643 | } |
| 647 | else if EQ("pushnil") { | 644 | else if EQ("pushnil") { |
| 648 | lua_pushnil(L); | 645 | lua_pushnil(L); |
| @@ -651,7 +648,7 @@ static int testC (lua_State *L) { | |||
| 651 | lua_pushboolean(L, getnum); | 648 | lua_pushboolean(L, getnum); |
| 652 | } | 649 | } |
| 653 | else if EQ("tobool") { | 650 | else if EQ("tobool") { |
| 654 | lua_pushintegral(L, lua_toboolean(L, getnum)); | 651 | lua_pushinteger(L, lua_toboolean(L, getnum)); |
| 655 | } | 652 | } |
| 656 | else if EQ("pushvalue") { | 653 | else if EQ("pushvalue") { |
| 657 | lua_pushvalue(L, getnum); | 654 | lua_pushvalue(L, getnum); |
| @@ -718,7 +715,7 @@ static int testC (lua_State *L) { | |||
| 718 | } | 715 | } |
| 719 | else if EQ("getn") { | 716 | else if EQ("getn") { |
| 720 | int i = getnum; | 717 | int i = getnum; |
| 721 | lua_pushintegral(L, luaL_getn(L, i)); | 718 | lua_pushinteger(L, luaL_getn(L, i)); |
| 722 | } | 719 | } |
| 723 | else if EQ("setn") { | 720 | else if EQ("setn") { |
| 724 | int i = getnum; | 721 | int i = getnum; |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lua.h,v 1.178 2003/07/07 13:30:57 roberto Exp roberto $ | 2 | ** $Id: lua.h,v 1.179 2003/10/02 20:31:17 roberto Exp roberto $ |
| 3 | ** Lua - An Extensible Extension Language | 3 | ** Lua - An Extensible Extension Language |
| 4 | ** Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil | 4 | ** Tecgraf: Computer Graphics Technology Group, PUC-Rio, Brazil |
| 5 | ** http://www.lua.org mailto:info@lua.org | 5 | ** http://www.lua.org mailto:info@lua.org |
| @@ -98,6 +98,14 @@ typedef LUA_NUMBER lua_Number; | |||
| 98 | #endif | 98 | #endif |
| 99 | 99 | ||
| 100 | 100 | ||
| 101 | /* type for integer functions */ | ||
| 102 | #ifndef LUA_INTEGER | ||
| 103 | typedef long lua_Integer; | ||
| 104 | #else | ||
| 105 | typedef LUA_INTEGER lua_Integer; | ||
| 106 | #endif | ||
| 107 | |||
| 108 | |||
| 101 | /* mark for all API functions */ | 109 | /* mark for all API functions */ |
| 102 | #ifndef LUA_API | 110 | #ifndef LUA_API |
| 103 | #define LUA_API extern | 111 | #define LUA_API extern |
| @@ -144,6 +152,7 @@ LUA_API int lua_rawequal (lua_State *L, int idx1, int idx2); | |||
| 144 | LUA_API int lua_lessthan (lua_State *L, int idx1, int idx2); | 152 | LUA_API int lua_lessthan (lua_State *L, int idx1, int idx2); |
| 145 | 153 | ||
| 146 | LUA_API lua_Number lua_tonumber (lua_State *L, int idx); | 154 | LUA_API lua_Number lua_tonumber (lua_State *L, int idx); |
| 155 | LUA_API lua_Integer lua_tointeger (lua_State *L, int idx); | ||
| 147 | LUA_API int lua_toboolean (lua_State *L, int idx); | 156 | LUA_API int lua_toboolean (lua_State *L, int idx); |
| 148 | LUA_API const char *lua_tostring (lua_State *L, int idx); | 157 | LUA_API const char *lua_tostring (lua_State *L, int idx); |
| 149 | LUA_API size_t lua_strlen (lua_State *L, int idx); | 158 | LUA_API size_t lua_strlen (lua_State *L, int idx); |
| @@ -158,6 +167,7 @@ LUA_API const void *lua_topointer (lua_State *L, int idx); | |||
| 158 | */ | 167 | */ |
| 159 | LUA_API void lua_pushnil (lua_State *L); | 168 | LUA_API void lua_pushnil (lua_State *L); |
| 160 | LUA_API void lua_pushnumber (lua_State *L, lua_Number n); | 169 | LUA_API void lua_pushnumber (lua_State *L, lua_Number n); |
| 170 | LUA_API void lua_pushinteger (lua_State *L, lua_Integer n); | ||
| 161 | LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t l); | 171 | LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t l); |
| 162 | LUA_API void lua_pushstring (lua_State *L, const char *s); | 172 | LUA_API void lua_pushstring (lua_State *L, const char *s); |
| 163 | LUA_API const char *lua_pushvfstring (lua_State *L, const char *fmt, | 173 | LUA_API const char *lua_pushvfstring (lua_State *L, const char *fmt, |
