diff options
Diffstat (limited to 'lapi.c')
| -rw-r--r-- | lapi.c | 29 |
1 files changed, 28 insertions, 1 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lapi.c,v 2.137 2010/09/07 19:35:04 roberto Exp roberto $ | 2 | ** $Id: lapi.c,v 2.138 2010/10/25 19:01:37 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 | */ |
| @@ -347,6 +347,23 @@ LUA_API lua_Integer lua_tointegerx (lua_State *L, int idx, int *isnum) { | |||
| 347 | } | 347 | } |
| 348 | 348 | ||
| 349 | 349 | ||
| 350 | LUA_API lua_Unsigned lua_tounsignedx (lua_State *L, int idx, int *isnum) { | ||
| 351 | TValue n; | ||
| 352 | const TValue *o = index2addr(L, idx); | ||
| 353 | if (tonumber(o, &n)) { | ||
| 354 | lua_Unsigned res; | ||
| 355 | lua_Number num = nvalue(o); | ||
| 356 | lua_number2uint(res, num); | ||
| 357 | if (isnum) *isnum = 1; | ||
| 358 | return res; | ||
| 359 | } | ||
| 360 | else { | ||
| 361 | if (isnum) *isnum = 0; | ||
| 362 | return 0; | ||
| 363 | } | ||
| 364 | } | ||
| 365 | |||
| 366 | |||
| 350 | LUA_API int lua_toboolean (lua_State *L, int idx) { | 367 | LUA_API int lua_toboolean (lua_State *L, int idx) { |
| 351 | const TValue *o = index2addr(L, idx); | 368 | const TValue *o = index2addr(L, idx); |
| 352 | return !l_isfalse(o); | 369 | return !l_isfalse(o); |
| @@ -452,6 +469,16 @@ LUA_API void lua_pushinteger (lua_State *L, lua_Integer n) { | |||
| 452 | } | 469 | } |
| 453 | 470 | ||
| 454 | 471 | ||
| 472 | LUA_API void lua_pushunsigned (lua_State *L, lua_Unsigned u) { | ||
| 473 | lua_Number n; | ||
| 474 | lua_lock(L); | ||
| 475 | n = lua_uint2number(u); | ||
| 476 | setnvalue(L->top, n); | ||
| 477 | api_incr_top(L); | ||
| 478 | lua_unlock(L); | ||
| 479 | } | ||
| 480 | |||
| 481 | |||
| 455 | LUA_API const char *lua_pushlstring (lua_State *L, const char *s, size_t len) { | 482 | LUA_API const char *lua_pushlstring (lua_State *L, const char *s, size_t len) { |
| 456 | TString *ts; | 483 | TString *ts; |
| 457 | lua_lock(L); | 484 | lua_lock(L); |
