LuaStackObject LuaState::PushVFString(const char *fmt, va_list argp) { lua_State* L = LuaState_to_lua_State(this); lua_lock(L); luaC_checkGC(L); luaO_pushvfstring(L, fmt, argp); lua_unlock(L); return LuaStackObject(this, lua_gettop(LuaState_to_lua_State(this))); }
LuaStackObject LuaState::PushCClosure(int (*f)(LuaState*), int n) { unsigned char* buffer = (unsigned char*)lua_newuserdata(LuaState_to_lua_State(this), sizeof(f)); memcpy(buffer, &f, sizeof(f)); Insert(-n-1); lua_pushcclosure(LuaState_to_lua_State(this), LPCD::LuaStateFunctionDispatcher, n + 1); return LuaStackObject(this, lua_gettop(LuaState_to_lua_State(this))); }
void LuaState::OpenLibs() { #if LUAPLUS_INCLUDE_STANDARD_LIBRARY LuaAutoBlock autoBlock(this); lua_cpcall(LuaState_to_lua_State(this), &pmain, NULL); #endif // LUAPLUS_INCLUDE_STANDARD_LIBRARY }
LuaObject LuaState::CreateThread(LuaState* parentState) { lua_State* L1 = lua_newthread(LuaState_to_lua_State(parentState)); lua_TValue tobject; #if LUA_REFCOUNT setnilvalue2n(L1, &tobject); #else setnilvalue(&tobject); #endif /* LUA_REFCOUNT */ setthvalue(parentState->GetCState(), &tobject, L1); LuaObject retObj = LuaObject(lua_State_To_LuaState(L1), &tobject); setnilvalue(&tobject); lua_pop(LuaState_to_lua_State(parentState), 1); return retObj; }
int LuaState::DoBuffer( const char *buff, size_t size, const char *name, LuaObject& fenvObj ) { lua_State* L = LuaState_to_lua_State(this); int status = luaL_loadbuffer(L, buff, size, name); if (status != 0) return status; fenvObj.Push(); SetFEnv(-2); return lua_pcall(L, 0, LUA_MULTRET, 0); }
int LuaState::DoFile( const char *filename, LuaObject& fenvObj ) { lua_State* L = LuaState_to_lua_State(this); int status = luaL_loadfile(L, filename); if (status != 0) return status; fenvObj.Push(); SetFEnv(-2); return lua_pcall(L, 0, LUA_MULTRET, 0); }
int LuaState::DoString( const char *str, LuaObject& fenvObj ) { lua_State* L = LuaState_to_lua_State(this); int status = luaL_loadbuffer(L, str, strlen(str), str); if (status != 0) return status; fenvObj.Push(); SetFEnv(-2); return lua_pcall(L, 0, LUA_MULTRET, 0); }
/*static*/ void LuaState::Destroy( LuaState* state ) { lua_State* L = LuaState_to_lua_State(state); if (G(L)->mainthread == L) lua_close(L); }
LuaObject LuaState::GetGlobals() throw() { return LuaObject( this, gt(LuaState_to_lua_State(this)) ); }