diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-04-05 15:54:31 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-04-05 15:54:31 -0300 |
commit | 237969724f54eeefee057ae382237c8db54af44e (patch) | |
tree | fc4abd54f7cac0749023f1c021e7d86e3ee4f273 /lbaselib.c | |
parent | f438d00ef31e3aea54023602f529b68834ffb80a (diff) | |
download | lua-237969724f54eeefee057ae382237c8db54af44e.tar.gz lua-237969724f54eeefee057ae382237c8db54af44e.tar.bz2 lua-237969724f54eeefee057ae382237c8db54af44e.zip |
support for `light' userdata + simpler support for `boxed' udata
Diffstat (limited to 'lbaselib.c')
-rw-r--r-- | lbaselib.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lbaselib.c,v 1.62 2002/03/27 15:30:41 roberto Exp roberto $ | 2 | ** $Id: lbaselib.c,v 1.63 2002/04/02 20:42:20 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 | */ |
@@ -206,7 +206,7 @@ static int passresults (lua_State *L, int status, int oldtop) { | |||
206 | if (nresults > 0) | 206 | if (nresults > 0) |
207 | return nresults; /* results are already on the stack */ | 207 | return nresults; /* results are already on the stack */ |
208 | else { | 208 | else { |
209 | lua_newuserdatabox(L, NULL); /* at least one result to signal no errors */ | 209 | lua_pushboolean(L, 1); /* at least one result to signal no errors */ |
210 | return 1; | 210 | return 1; |
211 | } | 211 | } |
212 | } | 212 | } |
@@ -383,6 +383,7 @@ static int luaB_tostring (lua_State *L) { | |||
383 | sprintf(buff, "function: %p", lua_topointer(L, 1)); | 383 | sprintf(buff, "function: %p", lua_topointer(L, 1)); |
384 | break; | 384 | break; |
385 | case LUA_TUSERDATA: | 385 | case LUA_TUSERDATA: |
386 | case LUA_TUDATAVAL: | ||
386 | sprintf(buff, "userdata: %p", lua_touserdata(L, 1)); | 387 | sprintf(buff, "userdata: %p", lua_touserdata(L, 1)); |
387 | break; | 388 | break; |
388 | case LUA_TNIL: | 389 | case LUA_TNIL: |
@@ -439,7 +440,7 @@ static void base_open (lua_State *L) { | |||
439 | 440 | ||
440 | 441 | ||
441 | static int luaB_resume (lua_State *L) { | 442 | static int luaB_resume (lua_State *L) { |
442 | lua_State *co = (lua_State *)lua_touserdata(L, lua_upvalueindex(1)); | 443 | lua_State *co = (lua_State *)lua_getfrombox(L, lua_upvalueindex(1)); |
443 | if (lua_resume(L, co) != 0) | 444 | if (lua_resume(L, co) != 0) |
444 | lua_error(L, "error running co-routine"); | 445 | lua_error(L, "error running co-routine"); |
445 | return lua_gettop(L); | 446 | return lua_gettop(L); |
@@ -448,7 +449,7 @@ static int luaB_resume (lua_State *L) { | |||
448 | 449 | ||
449 | 450 | ||
450 | static int gc_coroutine (lua_State *L) { | 451 | static int gc_coroutine (lua_State *L) { |
451 | lua_State *co = (lua_State *)lua_touserdata(L, 1); | 452 | lua_State *co = (lua_State *)lua_getfrombox(L, 1); |
452 | lua_closethread(L, co); | 453 | lua_closethread(L, co); |
453 | return 0; | 454 | return 0; |
454 | } | 455 | } |
@@ -471,7 +472,7 @@ static int luaB_coroutine (lua_State *L) { | |||
471 | lua_unref(L, ref); | 472 | lua_unref(L, ref); |
472 | } | 473 | } |
473 | lua_cobegin(NL, n-1); | 474 | lua_cobegin(NL, n-1); |
474 | lua_newuserdatabox(L, NL); | 475 | lua_newpointerbox(L, NL); |
475 | lua_pushliteral(L, "Coroutine"); | 476 | lua_pushliteral(L, "Coroutine"); |
476 | lua_rawget(L, LUA_REGISTRYINDEX); | 477 | lua_rawget(L, LUA_REGISTRYINDEX); |
477 | lua_setmetatable(L, -2); | 478 | lua_setmetatable(L, -2); |