Lines Matching refs:L

19 static int auxresume (lua_State *L, lua_State *co, int narg) {  in auxresume()  argument
22 lua_pushliteral(L, "too many arguments to resume"); in auxresume()
26 lua_pushliteral(L, "cannot resume dead coroutine"); in auxresume()
29 lua_xmove(L, co, narg); in auxresume()
30 status = lua_resume(co, L, narg); in auxresume()
33 if (!lua_checkstack(L, nres + 1)) { in auxresume()
35 lua_pushliteral(L, "too many results to resume"); in auxresume()
38 lua_xmove(co, L, nres); /* move yielded values */ in auxresume()
42 lua_xmove(co, L, 1); /* move error message */ in auxresume()
48 static int luaB_coresume (lua_State *L) { in luaB_coresume() argument
49 lua_State *co = lua_tothread(L, 1); in luaB_coresume()
51 luaL_argcheck(L, co, 1, "coroutine expected"); in luaB_coresume()
52 r = auxresume(L, co, lua_gettop(L) - 1); in luaB_coresume()
54 lua_pushboolean(L, 0); in luaB_coresume()
55 lua_insert(L, -2); in luaB_coresume()
59 lua_pushboolean(L, 1); in luaB_coresume()
60 lua_insert(L, -(r + 1)); in luaB_coresume()
66 static int luaB_auxwrap (lua_State *L) { in luaB_auxwrap() argument
67 lua_State *co = lua_tothread(L, lua_upvalueindex(1)); in luaB_auxwrap()
68 int r = auxresume(L, co, lua_gettop(L)); in luaB_auxwrap()
70 if (lua_isstring(L, -1)) { /* error object is a string? */ in luaB_auxwrap()
71 luaL_where(L, 1); /* add extra info */ in luaB_auxwrap()
72 lua_insert(L, -2); in luaB_auxwrap()
73 lua_concat(L, 2); in luaB_auxwrap()
75 return lua_error(L); /* propagate error */ in luaB_auxwrap()
81 static int luaB_cocreate (lua_State *L) { in luaB_cocreate() argument
83 luaL_checktype(L, 1, LUA_TFUNCTION); in luaB_cocreate()
84 NL = lua_newthread(L); in luaB_cocreate()
85 lua_pushvalue(L, 1); /* move function to top */ in luaB_cocreate()
86 lua_xmove(L, NL, 1); /* move function from L to NL */ in luaB_cocreate()
91 static int luaB_cowrap (lua_State *L) { in luaB_cowrap() argument
92 luaB_cocreate(L); in luaB_cowrap()
93 lua_pushcclosure(L, luaB_auxwrap, 1); in luaB_cowrap()
98 static int luaB_yield (lua_State *L) { in luaB_yield() argument
99 return lua_yield(L, lua_gettop(L)); in luaB_yield()
103 static int luaB_costatus (lua_State *L) { in luaB_costatus() argument
104 lua_State *co = lua_tothread(L, 1); in luaB_costatus()
105 luaL_argcheck(L, co, 1, "coroutine expected"); in luaB_costatus()
106 if (L == co) lua_pushliteral(L, "running"); in luaB_costatus()
110 lua_pushliteral(L, "suspended"); in luaB_costatus()
115 lua_pushliteral(L, "normal"); /* it is running */ in luaB_costatus()
117 lua_pushliteral(L, "dead"); in luaB_costatus()
119 lua_pushliteral(L, "suspended"); /* initial state */ in luaB_costatus()
123 lua_pushliteral(L, "dead"); in luaB_costatus()
131 static int luaB_corunning (lua_State *L) { in luaB_corunning() argument
132 int ismain = lua_pushthread(L); in luaB_corunning()
133 lua_pushboolean(L, ismain); in luaB_corunning()
150 LUAMOD_API int luaopen_coroutine (lua_State *L) { in luaopen_coroutine() argument
151 luaL_newlib(L, co_funcs); in luaopen_coroutine()