GLuint LoadCompileAndLinkShaders(char *vs, char *fs){ // Compile Vertex Shader LoadCode(vs, 0); LoadCode(fs, 1); return CompileAndLinkShaders(&shader_code[0][0], &shader_code[1][0]); }
static Proto * LoadFunction(LoadState * S, TString * p) { Proto* f; if(++S->L->nCcalls > LUAI_MAXCCALLS) error(S,"code too deep"); f=luaF_newproto(S->L); setptvalue2s(S->L,S->L->top,f); incr_top(S->L); f->source=LoadString(S); if(f->source==NULL) f->source=p; f->linedefined=LoadInt(S); f->lastlinedefined=LoadInt(S); f->nups=LoadByte(S); f->numparams=LoadByte(S); f->is_vararg=LoadByte(S); f->maxstacksize=LoadByte(S); LoadCode(S,f); LoadConstants(S,f); LoadDebug(S,f); IF (!luaG_checkcode(f), "bad code"); S->L->top--; S->L->nCcalls--; return f; }
void _reentrant OverlayManager(void) { TaskEntry * Save_Task; if(g_pCurrentTask) { MemoryRegion **pRegionTable= g_RegionTable; WORD *wRequiredResource = g_pCurrentTask->m_wRegionResources; while(*pRegionTable) { if(*wRequiredResource) { if(*wRequiredResource != (*pRegionTable)->m_wResourceLoaded) { Save_Task = g_pCurrentTask; g_pCurrentTask = NULL; LoadCode(*wRequiredResource, *pRegionTable); g_pCurrentTask = Save_Task; } } pRegionTable++; wRequiredResource ++; } } }
bool CKeyAutoBinder::LoadCompareFunc() { string code = endlStr; // handy sorting comparison routine code += "function Compare(a, b)" + endlStr; code += " if (type(a) == \"number\") then" + endlStr; code += " if (a > b) then return 1.0; end" + endlStr; code += " if (a < b) then return -1.0; end" + endlStr; code += " elseif (type(a) == \"boolean\") then" + endlStr; code += " if (a and not b) then return 1.0; end" + endlStr; code += " if (not a and b) then return -1.0; end" + endlStr; code += " elseif (type(a) == \"string\") then" + endlStr; code += " if (a > b) then return 1.0; end" + endlStr; code += " if (a < b) then return -1.0; end" + endlStr; code += " end" + endlStr; code += " return 0.0" + endlStr; code += "end" + endlStr; if (keyBindings->GetDebug() > 1) { logOutput.Print(code); } if (!LoadCode(code, "Compare()")) { return false; } return true; }
bool CLuaHandleSynced::SetupSynced(const string& code, const string& filename) { if ((L == NULL) || code.empty()) { return false; } lua_pushvalue(L, LUA_GLOBALSINDEX); AddBasicCalls(); // into Global lua_pushstring(L, "Script"); lua_rawget(L, -2); LuaPushNamedCFunc(L, "AddActionFallback", AddSyncedActionFallback); LuaPushNamedCFunc(L, "RemoveActionFallback", RemoveSyncedActionFallback); LuaPushNamedCFunc(L, "UpdateCallIn", CallOutSyncedUpdateCallIn); LuaPushNamedCFunc(L, "GetWatchWeapon", GetWatchWeapon); LuaPushNamedCFunc(L, "SetWatchWeapon", SetWatchWeapon); lua_pop(L, 1); // add the custom file loader LuaPushNamedCFunc(L, "SendToUnsynced", SendToUnsynced); LuaPushNamedCFunc(L, "loadstring", LoadStringData); LuaPushNamedCFunc(L, "CallAsTeam", CallAsTeam); LuaPushNamedCFunc(L, "AllowUnsafeChanges", AllowUnsafeChanges); LuaPushNamedNumber(L, "COBSCALE", COBSCALE); // load our libraries (LuaSyncedCtrl overrides some LuaUnsyncedCtrl entries) if (!AddEntriesToTable(L, "VFS", LuaVFS::PushSynced) || !AddEntriesToTable(L, "UnitDefs", LuaUnitDefs::PushEntries) || !AddEntriesToTable(L, "WeaponDefs", LuaWeaponDefs::PushEntries) || !AddEntriesToTable(L, "FeatureDefs", LuaFeatureDefs::PushEntries) || !AddEntriesToTable(L, "Script", LuaSyncedCall::PushEntries) || !AddEntriesToTable(L, "Spring", LuaUnsyncedCtrl::PushEntries) || !AddEntriesToTable(L, "Spring", LuaSyncedCtrl::PushEntries) || !AddEntriesToTable(L, "Spring", LuaSyncedRead::PushEntries) || !AddEntriesToTable(L, "Game", LuaConstGame::PushEntries) || !AddEntriesToTable(L, "CMD", LuaConstCMD::PushEntries) || !AddEntriesToTable(L, "CMDTYPE", LuaConstCMDTYPE::PushEntries)) { KillLua(); return false; } // add code from the sub-class if (!AddSyncedCode()) { KillLua(); return false; } lua_settop(L, 0); if (!LoadCode(code, filename)) { KillLua(); return false; } return true; }
void CCheats::LoadCheats(bool DisableSelected, CPlugins * Plugins) { m_Codes.clear(); LoadPermCheats(Plugins); for (int CheatNo = 0; CheatNo < MaxCheats; CheatNo++) { stdstr LineEntry = g_Settings->LoadStringIndex(Cheat_Entry, CheatNo); if (LineEntry.empty()) { break; } if (!g_Settings->LoadBoolIndex(Cheat_Active, CheatNo)) { continue; } if (DisableSelected) { g_Settings->SaveBoolIndex(Cheat_Active, CheatNo, false); continue; } //Find the start and end of the name which is surrounded in "" int StartOfName = LineEntry.find("\""); if (StartOfName == -1) { continue; } int EndOfName = LineEntry.find("\"", StartOfName + 1); if (EndOfName == -1) { continue; } LoadCode(CheatNo, &LineEntry.c_str()[EndOfName + 2]); } }
void _reentrant OverlayManagerTask(void) { while(1) { SysWaitOnSignal(-1,&g_OverlaySignal,1); if(g_pTaskToLoad) { MemoryRegion **pRegionTable= g_RegionTable; WORD *wRequiredResource = g_pTaskToLoad->m_wRegionResources; while(*pRegionTable) { if(*wRequiredResource) { if(*wRequiredResource != (*pRegionTable)->m_wResourceLoaded) { glb_iLoadCount++; LoadCode(*wRequiredResource, *pRegionTable); } } pRegionTable++; wRequiredResource ++; } g_pTaskToLoad = NULL; glb_iLoadCount = 0; } } }
void MainWindow::on_actionLoadCode_triggered() { QString filename = QFileDialog::getOpenFileName(this,"Select the byte code to run"); if (filename.isEmpty() || filename.isNull()) return; if (!_recentCodeFiles.contains(filename)) _recentCodeFiles.push_front(filename); LoadCode(filename); }
static void LoadFunction(LoadState* S, Proto* f) { f->linedefined=LoadInt(S); f->lastlinedefined=LoadInt(S); f->numparams=LoadByte(S); f->is_vararg=LoadByte(S); f->maxstacksize=LoadByte(S); LoadCode(S,f); LoadConstants(S,f); LoadUpvalues(S,f); LoadDebug(S,f); }
void CCheats::LoadPermCheats(CPlugins * Plugins) { if (g_Settings->LoadBool(Debugger_DisableGameFixes)) { return; } for (int CheatNo = 0; CheatNo < MaxCheats; CheatNo++) { stdstr LineEntry; if (!g_Settings->LoadStringIndex(Rdb_GameCheatFix, CheatNo, LineEntry) || LineEntry.empty()) { break; } stdstr CheatPlugins; bool LoadEntry = true; if (g_Settings->LoadStringIndex(Rdb_GameCheatFixPlugin, CheatNo, CheatPlugins) && !CheatPlugins.empty()) { LoadEntry = false; strvector PluginList = CheatPlugins.Tokenize(','); for (size_t i = 0, n = PluginList.size(); i < n; i++) { stdstr PluginName = PluginList[i].Trim(); if (strstr(Plugins->Gfx()->PluginName(), PluginName.c_str()) != NULL) { LoadEntry = true; break; } if (strstr(Plugins->Audio()->PluginName(), PluginName.c_str()) != NULL) { LoadEntry = true; break; } if (strstr(Plugins->RSP()->PluginName(), PluginName.c_str()) != NULL) { LoadEntry = true; break; } if (strstr(Plugins->Control()->PluginName(), PluginName.c_str()) != NULL) { LoadEntry = true; break; } } } if (LoadEntry) { LoadCode(-1, LineEntry.c_str()); } } }
static Proto* LoadFunction (lua_State* L, ZIO* Z, int swap) { Proto* tf=luaF_newproto(L); tf->source=LoadString(L,Z,swap); tf->lineDefined=LoadInt(L,Z,swap); tf->numparams=LoadInt(L,Z,swap); tf->is_vararg=LoadByte(L,Z); tf->maxstacksize=LoadInt(L,Z,swap); LoadLocals(L,tf,Z,swap); LoadLines(L,tf,Z,swap); LoadConstants(L,tf,Z,swap); LoadCode(L,tf,Z,swap); return tf; }
static void LoadFunction (LoadState *S, Proto *f, TString *psource) { f->source = LoadString(S); if (f->source == NULL) /* no source in dump? */ f->source = psource; /* reuse parent's source */ f->linedefined = LoadInt(S); f->lastlinedefined = LoadInt(S); f->numparams = LoadByte(S); f->is_vararg = LoadByte(S); f->maxstacksize = LoadByte(S); LoadCode(S, f); LoadConstants(S, f); LoadUpvalues(S, f); LoadProtos(S, f); LoadDebug(S, f); }
static Proto* LoadFunction(LoadState* S) { Proto* f=luaF_newproto(S->L); setptvalue2s(S->L,S->L->top,f); incr_top(S->L); f->linedefined=LoadInt(S); f->lastlinedefined=LoadInt(S); f->numparams=LoadByte(S); f->is_vararg=LoadByte(S); f->maxstacksize=LoadByte(S); LoadCode(S,f); LoadConstants(S,f); LoadUpvalues(S,f); LoadDebug(S,f); S->L->top--; return f; }
// ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ // ¥ SetProgram /*e*/ // ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ // Takes a moan program, compiles it and installs it into the vm void CProgMoanChannel::SetProgram( const CCString &inString) { CVMCodeChunk *code=new CVMCodeChunk; ThrowIfMemFull_(code); Try_ { UMoanCompiler::CompileMoanProgram(inString.mString,code,mId); } Catch_(err) { delete code; throw; } LoadCode(code); }
static Proto* LoadFunction (LoadState* S, TString* p) { Proto* f=luaF_newproto(S->L); f->source=LoadString(S); if (f->source==NULL) f->source=p; f->lineDefined=LoadInt(S); f->nups=LoadByte(S); f->numparams=LoadByte(S); f->is_vararg=LoadByte(S); f->maxstacksize=LoadByte(S); LoadLines(S,f); LoadLocals(S,f); LoadUpvalues(S,f); LoadConstants(S,f); LoadCode(S,f); #ifndef TRUST_BINARIES if (!luaG_checkcode(f)) luaG_runerror(S->L,"bad code in %s",S->name); #endif return f; }
static Proto* LoadFunction(LoadState* S, TString* p) { Proto* f=luaF_newproto(S->L); setptvalue2s(S->L,S->L->top,f); incr_top(S->L); f->source=LoadString(S); if (f->source==NULL) f->source=p; f->linedefined=LoadInt(S); f->lastlinedefined=LoadInt(S); f->nups=LoadByte(S); f->numparams=LoadByte(S); f->is_vararg=LoadByte(S); f->maxstacksize=LoadByte(S); LoadLines(S,f); LoadLocals(S,f); LoadUpvalues(S,f); LoadConstants(S,f); LoadCode(S,f); IF (!luaG_checkcode(f), "bad code"); S->L->top--; return f; }
bool CLuaHandleSynced::SetupSynced(lua_State *L, const string& code, const string& filename) { if (!IsValid() || code.empty()) { return false; } lua_pushvalue(L, LUA_GLOBALSINDEX); HSTR_PUSH(L, "EXPORT"); lua_newtable(L); lua_rawset(L, -3); AddBasicCalls(L); // into Global lua_pushliteral(L, "Script"); lua_rawget(L, -2); LuaPushNamedCFunc(L, "AddActionFallback", AddSyncedActionFallback); LuaPushNamedCFunc(L, "RemoveActionFallback", RemoveSyncedActionFallback); LuaPushNamedCFunc(L, "UpdateCallIn", CallOutSyncedUpdateCallIn); LuaPushNamedCFunc(L, "GetWatchUnit", GetWatchUnitDef); LuaPushNamedCFunc(L, "SetWatchUnit", SetWatchUnitDef); LuaPushNamedCFunc(L, "GetWatchFeature", GetWatchFeatureDef); LuaPushNamedCFunc(L, "SetWatchFeature", SetWatchFeatureDef); LuaPushNamedCFunc(L, "GetWatchWeapon", GetWatchWeaponDef); LuaPushNamedCFunc(L, "SetWatchWeapon", SetWatchWeaponDef); lua_pop(L, 1); // add the custom file loader LuaPushNamedCFunc(L, "SendToUnsynced", SendToUnsynced); LuaPushNamedCFunc(L, "loadstring", LoadStringData); LuaPushNamedCFunc(L, "CallAsTeam", CallAsTeam); LuaPushNamedNumber(L, "COBSCALE", COBSCALE); // load our libraries (LuaSyncedCtrl overrides some LuaUnsyncedCtrl entries) if (!AddEntriesToTable(L, "VFS", LuaVFS::PushSynced) || !AddEntriesToTable(L, "VFS", LuaZipFileReader::PushSynced) || !AddEntriesToTable(L, "VFS", LuaZipFileWriter::PushSynced) || !AddEntriesToTable(L, "UnitDefs", LuaUnitDefs::PushEntries) || !AddEntriesToTable(L, "WeaponDefs", LuaWeaponDefs::PushEntries) || !AddEntriesToTable(L, "FeatureDefs", LuaFeatureDefs::PushEntries) || !AddEntriesToTable(L, "Script", LuaSyncedCall::PushEntries) || !AddEntriesToTable(L, "Spring", LuaUnsyncedCtrl::PushEntries) || !AddEntriesToTable(L, "Spring", LuaSyncedCtrl::PushEntries) || !AddEntriesToTable(L, "Spring", LuaSyncedRead::PushEntries) || !AddEntriesToTable(L, "Game", LuaConstGame::PushEntries) || !AddEntriesToTable(L, "CMD", LuaConstCMD::PushEntries) || !AddEntriesToTable(L, "CMDTYPE", LuaConstCMDTYPE::PushEntries) || !AddEntriesToTable(L, "COB", LuaConstCOB::PushEntries) || !AddEntriesToTable(L, "SFX", LuaConstSFX::PushEntries) || !AddEntriesToTable(L, "LOG", LuaUtils::PushLogEntries) ) { KillLua(); return false; } // add code from the sub-class if (!AddSyncedCode(L)) { KillLua(); return false; } lua_settop(L, 0); if (!LoadCode(L, code, filename)) { KillLua(); return false; } return true; }
bool CSyncedLuaHandle::Init(const string& code, const string& file) { if (!IsValid()) return false; watchUnitDefs.resize(unitDefHandler->unitDefs.size() + 1, false); watchFeatureDefs.resize(featureHandler->GetFeatureDefs().size(), false); watchWeaponDefs.resize(weaponDefHandler->weaponDefs.size(), false); // load the standard libraries LUA_OPEN_LIB(L, luaopen_base); LUA_OPEN_LIB(L, luaopen_math); LUA_OPEN_LIB(L, luaopen_table); LUA_OPEN_LIB(L, luaopen_string); //LUA_OPEN_LIB(L, luaopen_io); //LUA_OPEN_LIB(L, luaopen_os); //LUA_OPEN_LIB(L, luaopen_package); //LUA_OPEN_LIB(L, luaopen_debug); lua_getglobal(L, "next"); origNextRef = luaL_ref(L, LUA_REGISTRYINDEX); // delete/replace some dangerous functions lua_pushnil(L); lua_setglobal(L, "dofile"); lua_pushnil(L); lua_setglobal(L, "loadfile"); lua_pushnil(L); lua_setglobal(L, "loadlib"); lua_pushnil(L); lua_setglobal(L, "require"); lua_pushnil(L); lua_setglobal(L, "rawequal"); //FIXME not unsafe anymore since split? lua_pushnil(L); lua_setglobal(L, "rawget"); //FIXME not unsafe anymore since split? lua_pushnil(L); lua_setglobal(L, "rawset"); //FIXME not unsafe anymore since split? // lua_pushnil(L); lua_setglobal(L, "getfenv"); // lua_pushnil(L); lua_setglobal(L, "setfenv"); lua_pushnil(L); lua_setglobal(L, "newproxy"); // sync unsafe cause of __gc lua_pushnil(L); lua_setglobal(L, "gcinfo"); lua_pushnil(L); lua_setglobal(L, "collectgarbage"); lua_pushvalue(L, LUA_GLOBALSINDEX); LuaPushNamedCFunc(L, "loadstring", CLuaHandleSynced::LoadStringData); LuaPushNamedCFunc(L, "pairs", SyncedPairs); LuaPushNamedCFunc(L, "next", SyncedNext); lua_pop(L, 1); lua_pushvalue(L, LUA_GLOBALSINDEX); AddBasicCalls(L); // into Global // adjust the math.random() and math.randomseed() calls lua_getglobal(L, "math"); LuaPushNamedCFunc(L, "random", SyncedRandom); LuaPushNamedCFunc(L, "randomseed", SyncedRandomSeed); lua_pop(L, 1); // pop the global math table lua_getglobal(L, "Script"); LuaPushNamedCFunc(L, "AddActionFallback", AddSyncedActionFallback); LuaPushNamedCFunc(L, "RemoveActionFallback", RemoveSyncedActionFallback); LuaPushNamedCFunc(L, "GetWatchUnit", GetWatchUnitDef); LuaPushNamedCFunc(L, "SetWatchUnit", SetWatchUnitDef); LuaPushNamedCFunc(L, "GetWatchFeature", GetWatchFeatureDef); LuaPushNamedCFunc(L, "SetWatchFeature", SetWatchFeatureDef); LuaPushNamedCFunc(L, "GetWatchWeapon", GetWatchWeaponDef); LuaPushNamedCFunc(L, "SetWatchWeapon", SetWatchWeaponDef); lua_pop(L, 1); // add the custom file loader LuaPushNamedCFunc(L, "SendToUnsynced", SendToUnsynced); LuaPushNamedCFunc(L, "CallAsTeam", CLuaHandleSynced::CallAsTeam); LuaPushNamedNumber(L, "COBSCALE", COBSCALE); // load our libraries (LuaSyncedCtrl overrides some LuaUnsyncedCtrl entries) if ( !AddEntriesToTable(L, "VFS", LuaVFS::PushSynced) || !AddEntriesToTable(L, "VFS", LuaZipFileReader::PushSynced) || !AddEntriesToTable(L, "VFS", LuaZipFileWriter::PushSynced) || !AddEntriesToTable(L, "UnitDefs", LuaUnitDefs::PushEntries) || !AddEntriesToTable(L, "WeaponDefs", LuaWeaponDefs::PushEntries) || !AddEntriesToTable(L, "FeatureDefs", LuaFeatureDefs::PushEntries) || !AddEntriesToTable(L, "Script", LuaInterCall::PushEntriesSynced) || !AddEntriesToTable(L, "Spring", LuaUnsyncedCtrl::PushEntries) || !AddEntriesToTable(L, "Spring", LuaSyncedCtrl::PushEntries) || !AddEntriesToTable(L, "Spring", LuaSyncedRead::PushEntries) || !AddEntriesToTable(L, "Game", LuaConstGame::PushEntries) || !AddEntriesToTable(L, "CMD", LuaConstCMD::PushEntries) || !AddEntriesToTable(L, "CMDTYPE", LuaConstCMDTYPE::PushEntries) || !AddEntriesToTable(L, "COB", LuaConstCOB::PushEntries) || !AddEntriesToTable(L, "SFX", LuaConstSFX::PushEntries) || !AddEntriesToTable(L, "LOG", LuaUtils::PushLogEntries) ) { KillLua(); return false; } // add code from the sub-class if (!base.AddSyncedCode(L)) { KillLua(); return false; } lua_settop(L, 0); if (!LoadCode(L, code, file)) { KillLua(); return false; } lua_settop(L, 0); eventHandler.AddClient(this); return true; }
bool CUnsyncedLuaHandle::Init(const string& code, const string& file) { if (!IsValid()) { return false; } // load the standard libraries LUA_OPEN_LIB(L, luaopen_base); LUA_OPEN_LIB(L, luaopen_math); LUA_OPEN_LIB(L, luaopen_table); LUA_OPEN_LIB(L, luaopen_string); //LUA_OPEN_LIB(L, luaopen_io); //LUA_OPEN_LIB(L, luaopen_os); //LUA_OPEN_LIB(L, luaopen_package); //LUA_OPEN_LIB(L, luaopen_debug); // delete some dangerous functions lua_pushnil(L); lua_setglobal(L, "dofile"); lua_pushnil(L); lua_setglobal(L, "loadfile"); lua_pushnil(L); lua_setglobal(L, "loadlib"); lua_pushnil(L); lua_setglobal(L, "loadstring"); // replaced lua_pushnil(L); lua_setglobal(L, "require"); lua_pushvalue(L, LUA_GLOBALSINDEX); AddBasicCalls(L); // remove Script.Kill() lua_getglobal(L, "Script"); LuaPushNamedNil(L, "Kill"); lua_pop(L, 1); LuaPushNamedCFunc(L, "loadstring", CLuaHandleSynced::LoadStringData); LuaPushNamedCFunc(L, "CallAsTeam", CLuaHandleSynced::CallAsTeam); LuaPushNamedNumber(L, "COBSCALE", COBSCALE); // load our libraries if (!LuaSyncedTable::PushEntries(L) || !AddEntriesToTable(L, "VFS", LuaVFS::PushUnsynced) || !AddEntriesToTable(L, "VFS", LuaZipFileReader::PushUnsynced) || !AddEntriesToTable(L, "VFS", LuaZipFileWriter::PushUnsynced) || !AddEntriesToTable(L, "UnitDefs", LuaUnitDefs::PushEntries) || !AddEntriesToTable(L, "WeaponDefs", LuaWeaponDefs::PushEntries) || !AddEntriesToTable(L, "FeatureDefs", LuaFeatureDefs::PushEntries) || !AddEntriesToTable(L, "Script", LuaInterCall::PushEntriesUnsynced) || !AddEntriesToTable(L, "Script", LuaScream::PushEntries) || !AddEntriesToTable(L, "Spring", LuaSyncedRead::PushEntries) || !AddEntriesToTable(L, "Spring", LuaUnsyncedCtrl::PushEntries) || !AddEntriesToTable(L, "Spring", LuaUnsyncedRead::PushEntries) || !AddEntriesToTable(L, "gl", LuaOpenGL::PushEntries) || !AddEntriesToTable(L, "GL", LuaConstGL::PushEntries) || !AddEntriesToTable(L, "Game", LuaConstGame::PushEntries) || !AddEntriesToTable(L, "CMD", LuaConstCMD::PushEntries) || !AddEntriesToTable(L, "CMDTYPE", LuaConstCMDTYPE::PushEntries) || !AddEntriesToTable(L, "LOG", LuaUtils::PushLogEntries) ) { KillLua(); return false; } lua_settop(L, 0); // add code from the sub-class if (!base.AddUnsyncedCode(L)) { KillLua(); return false; } lua_settop(L, 0); if (!LoadCode(L, code, file)) { KillLua(); return false; } lua_settop(L, 0); eventHandler.AddClient(this); return true; }
bool CKeyAutoBinder::BindBuildType(const string& keystr, const vector<string>& requirements, const vector<string>& sortCriteria, const vector<string>& chords) { if (L == NULL) { return false; } lua_settop(L, 0); const string reqCall = MakeRequirementCall(requirements); const string sortCall = MakeSortCriteriaCall(sortCriteria); if (keyBindings->GetDebug() > 1) { logOutput.Print("--reqCall(%s):\n", keystr.c_str()); logOutput.Print(reqCall); logOutput.Print("--sortCall(%s):\n", keystr.c_str()); logOutput.Print(sortCall); } if (!LoadCode(reqCall, keystr + ":HasReqs()") || !LoadCode(sortCall, keystr + ":IsBetter()")) { return false; } vector<UnitDefHolder> defs; const std::map<std::string, int>& udMap = unitDefHandler->unitID; std::map<std::string, int>::const_iterator udIt; for (udIt = udMap.begin(); udIt != udMap.end(); udIt++) { const UnitDef* ud = unitDefHandler->GetUnitByID(udIt->second); if (ud == NULL) { continue; } if (HasRequirements(L, ud->id)) { UnitDefHolder udh; udh.ud = ud; udh.udID = ud->id; defs.push_back(udh); } } // sort the results tmpLuaState = L; thisBinder = this; sort(defs.begin(), defs.end()); // add the bindings for (unsigned int i = 0; i < defs.size(); i++) { const string bindStr = "bind"; const string lowerName = StringToLower(defs[i].ud->name); const string action = string("buildunit_") + lowerName; keyBindings->Command(bindStr + " " + keystr + " " + action); if ((i < chords.size()) && (StringToLower(chords[i]) != "none")) { keyBindings->Command(bindStr + " " + chords[i] + " " + action); } if (keyBindings->GetDebug() > 0) { string msg = "auto-"; msg += bindStr + " " + keystr + " " + action; logOutput.Print(msg); } } return true; }
CLuaIntro::CLuaIntro() : CLuaHandle("LuaIntro", LUA_HANDLE_ORDER_INTRO, true) { LuaIntro = this; if (!IsValid()) { return; } const std::string file = "LuaIntro/main.lua"; const string code = LoadFile(file); if (code.empty()) { KillLua(); return; } // load the standard libraries LUA_OPEN_LIB(L, luaopen_base); LUA_OPEN_LIB(L, luaopen_io); LUA_OPEN_LIB(L, luaopen_os); LUA_OPEN_LIB(L, luaopen_math); LUA_OPEN_LIB(L, luaopen_table); LUA_OPEN_LIB(L, luaopen_string); LUA_OPEN_LIB(L, luaopen_debug); // setup the lua IO access check functions lua_set_fopen(L, LuaIO::fopen); lua_set_popen(L, LuaIO::popen, LuaIO::pclose); lua_set_system(L, LuaIO::system); lua_set_remove(L, LuaIO::remove); lua_set_rename(L, LuaIO::rename); // remove a few dangerous calls lua_getglobal(L, "io"); lua_pushstring(L, "popen"); lua_pushnil(L); lua_rawset(L, -3); lua_pop(L, 1); lua_getglobal(L, "os"); { lua_pushliteral(L, "exit"); lua_pushnil(L); lua_rawset(L, -3); lua_pushliteral(L, "execute"); lua_pushnil(L); lua_rawset(L, -3); //lua_pushliteral(L, "remove"); lua_pushnil(L); lua_rawset(L, -3); //lua_pushliteral(L, "rename"); lua_pushnil(L); lua_rawset(L, -3); lua_pushliteral(L, "tmpname"); lua_pushnil(L); lua_rawset(L, -3); lua_pushliteral(L, "getenv"); lua_pushnil(L); lua_rawset(L, -3); //lua_pushliteral(L, "setlocale"); lua_pushnil(L); lua_rawset(L, -3); } lua_pop(L, 1); // os lua_pushvalue(L, LUA_GLOBALSINDEX); AddBasicCalls(L); // into Global // load the spring libraries if ( !AddEntriesToTable(L, "Spring", LoadUnsyncedCtrlFunctions) || !AddEntriesToTable(L, "Spring", LoadUnsyncedReadFunctions) || !AddEntriesToTable(L, "Spring", LoadSyncedReadFunctions) || !AddEntriesToTable(L, "VFS", LuaVFS::PushUnsynced) || !AddEntriesToTable(L, "VFS", LuaZipFileReader::PushUnsynced) || !AddEntriesToTable(L, "VFS", LuaZipFileWriter::PushUnsynced) || !AddEntriesToTable(L, "Script", LuaScream::PushEntries) || //!AddEntriesToTable(L, "Script", LuaInterCall::PushEntriesUnsynced) || //!AddEntriesToTable(L, "Script", LuaLobby::PushEntries) || !AddEntriesToTable(L, "gl", LuaOpenGL::PushEntries) || !AddEntriesToTable(L, "GL", LuaConstGL::PushEntries) || !AddEntriesToTable(L, "Game", LuaConstGame::PushEntries) || !AddEntriesToTable(L, "CMD", LuaConstCMD::PushEntries) || !AddEntriesToTable(L, "CMDTYPE", LuaConstCMDTYPE::PushEntries) || !AddEntriesToTable(L, "LOG", LuaUtils::PushLogEntries) ) { KillLua(); return; } RemoveSomeOpenGLFunctions(L); lua_settop(L, 0); if (!LoadCode(L, code, file)) { KillLua(); return; } lua_settop(L, 0); // register for call-ins eventHandler.AddClient(this); }
void MainWindow::slotRecentCodeTriggered() { QAction* sndr = reinterpret_cast<QAction*>(sender()); LoadCode(sndr->text()); }