LUA: Huge warning cleanup (no more warnings)

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4503 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
XTra.KrazzY 2009-11-06 22:15:06 +00:00
parent 9f97b26332
commit 5579a9169d
1 changed files with 113 additions and 134 deletions

View File

@ -15,7 +15,6 @@
// Official SVN repository and contact information can be found at // Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/ // http://code.google.com/p/dolphin-emu/
#include <cstring>
#include <vector> #include <vector>
#include <map> #include <map>
#include <algorithm> #include <algorithm>
@ -35,7 +34,7 @@ extern "C" {
#include "lstate.h" #include "lstate.h"
}; };
// TODO: This code is RIDDEN with warnings. NEEDS FIXING URGENTLY. Item Count: 20 // TODO Count: 22
// TODO: GUI // TODO: GUI
@ -142,9 +141,6 @@ bool g_stopAllScriptsEnabled = true;
#define GetCurrentInfo() *luaStateToContextMap[L] // should always work but might be slower #define GetCurrentInfo() *luaStateToContextMap[L] // should always work but might be slower
#endif #endif
//#define ASK_USER_ON_FREEZE // dialog on freeze is disabled now because it seems to be unnecessary, but this can be re-defined to enable it
static std::map<lua_CFunction, const char*> s_cFuncInfoMap; static std::map<lua_CFunction, const char*> s_cFuncInfoMap;
// using this macro you can define a callable-from-Lua function // using this macro you can define a callable-from-Lua function
@ -162,8 +158,6 @@ static std::map<lua_CFunction, const char*> s_cFuncInfoMap;
#define snprintf _snprintf #define snprintf _snprintf
#define vscprintf _vscprintf #define vscprintf _vscprintf
#else #else
#define stricmp strcasecmp
#define strnicmp strncasecmp
#define __forceinline __attribute__((always_inline)) #define __forceinline __attribute__((always_inline))
#endif #endif
@ -232,7 +226,7 @@ static int memory_registerHook(lua_State* L, LuaMemHookType hookType, int defaul
int funcIdx = 2; int funcIdx = 2;
if(lua_isnumber(L,2)) if(lua_isnumber(L,2))
{ {
size = luaL_checkinteger(L,2); size = (int)luaL_checkinteger(L,2);
if(size < 0) if(size < 0)
{ {
size = -size; size = -size;
@ -292,7 +286,7 @@ LuaMemHookType MatchHookTypeToCPU(lua_State* L, LuaMemHookType hookType)
if(cpunameIndex) if(cpunameIndex)
{ {
const char* cpuName = lua_tostring(L, cpunameIndex); const char* cpuName = lua_tostring(L, cpunameIndex);
if(!stricmp(cpuName, "sub") || !stricmp(cpuName, "s68k")) if(!strcasecmp(cpuName, "sub") || !strcasecmp(cpuName, "s68k"))
cpuID = 1; cpuID = 1;
lua_remove(L, cpunameIndex); lua_remove(L, cpunameIndex);
} }
@ -414,7 +408,7 @@ DEFINE_LUA_FUNCTION(state_registerload, "func[,loadkey]")
DEFINE_LUA_FUNCTION(input_registerhotkey, "keynum,func") DEFINE_LUA_FUNCTION(input_registerhotkey, "keynum,func")
{ {
int hotkeyNumber = luaL_checkinteger(L,1); int hotkeyNumber = (int)luaL_checkinteger(L,1);
if(hotkeyNumber < 1 || hotkeyNumber > 16) if(hotkeyNumber < 1 || hotkeyNumber > 16)
{ {
luaL_error(L, "input.registerhotkey(n,func) requires 1 <= n <= 16, but got n = %d.", hotkeyNumber); luaL_error(L, "input.registerhotkey(n,func) requires 1 <= n <= 16, but got n = %d.", hotkeyNumber);
@ -443,8 +437,8 @@ static int doPopup(lua_State* L, const char* deftype, const char* deficon)
int itype = -1, iters = 0; int itype = -1, iters = 0;
while(itype == -1 && iters++ < 2) while(itype == -1 && iters++ < 2)
{ {
if(!stricmp(type, "ok")) itype = 0; if(!strcasecmp(type, "ok")) itype = 0;
else if(!stricmp(type, "yesno")) itype = 1; else if(!strcasecmp(type, "yesno")) itype = 1;
else type = deftype; else type = deftype;
} }
assert(itype >= 0 && itype <= 4); assert(itype >= 0 && itype <= 4);
@ -453,8 +447,8 @@ static int doPopup(lua_State* L, const char* deftype, const char* deficon)
int iicon = -1; iters = 0; int iicon = -1; iters = 0;
while(iicon == -1 && iters++ < 2) while(iicon == -1 && iters++ < 2)
{ {
if(!stricmp(icon, "message") || !stricmp(icon, "notice")) iicon = 0; if(!strcasecmp(icon, "message") || !strcasecmp(icon, "notice")) iicon = 0;
else if(!stricmp(icon, "warning") || !stricmp(icon, "error")) iicon = 1; else if(!strcasecmp(icon, "warning") || !strcasecmp(icon, "error")) iicon = 1;
else icon = deficon; else icon = deficon;
} }
assert(iicon >= 0 && iicon <= 3); assert(iicon >= 0 && iicon <= 3);
@ -628,7 +622,7 @@ DEFINE_LUA_FUNCTION(emulua_persistglobalvariables, "variabletable")
// keep track of the variable name for later // keep track of the variable name for later
const char* varName = lua_tostring(L, varNameIndex); const char* varName = lua_tostring(L, varNameIndex);
info.persistVars.push_back(varName); info.persistVars.push_back(varName);
unsigned int varNameCRC = crc32(0, (const unsigned char*)varName, strlen(varName)); unsigned int varNameCRC = crc32(0, (const unsigned char*)varName, (int)strlen(varName));
info.newDefaultData.SaveRecordPartial(uid, varNameCRC, defaultIndex); info.newDefaultData.SaveRecordPartial(uid, varNameCRC, defaultIndex);
// load the previous default value for this variable if it exists. // load the previous default value for this variable if it exists.
@ -686,7 +680,7 @@ void DeferFunctionCall(lua_State* L, const char* idstring)
// put the list into a global array // put the list into a global array
lua_getfield(L, LUA_REGISTRYINDEX, idstring); lua_getfield(L, LUA_REGISTRYINDEX, idstring);
lua_insert(L, 1); lua_insert(L, 1);
int curSize = lua_objlen(L, 1); int curSize = (int)lua_objlen(L, 1);
lua_rawseti(L, 1, curSize+1); lua_rawseti(L, 1, curSize+1);
// clean the stack // clean the stack
@ -696,11 +690,11 @@ void CallDeferredFunctions(lua_State* L, const char* idstring)
{ {
lua_settop(L, 0); lua_settop(L, 0);
lua_getfield(L, LUA_REGISTRYINDEX, idstring); lua_getfield(L, LUA_REGISTRYINDEX, idstring);
int numCalls = lua_objlen(L, 1); int numCalls = (int)lua_objlen(L, 1);
for(int i = 1; i <= numCalls; i++) for(int i = 1; i <= numCalls; i++)
{ {
lua_rawgeti(L, 1, i); // get the function+arguments list lua_rawgeti(L, 1, i); // get the function+arguments list
int listSize = lua_objlen(L, 2); int listSize = (int)lua_objlen(L, 2);
// push the arguments and the function // push the arguments and the function
for(int j = 1; j <= listSize; j++) for(int j = 1; j <= listSize; j++)
@ -848,9 +842,8 @@ defcase:default: APPENDPRINT "%s:%p",luaL_typename(L,i),lua_topointer(L,i) END b
std::vector<const void*>::const_iterator foundCycleIter = std::find(s_tableAddressStack.begin(), s_tableAddressStack.end(), lua_topointer(L,i)); std::vector<const void*>::const_iterator foundCycleIter = std::find(s_tableAddressStack.begin(), s_tableAddressStack.end(), lua_topointer(L,i));
if(foundCycleIter != s_tableAddressStack.end()) if(foundCycleIter != s_tableAddressStack.end())
{ {
int parentNum = s_tableAddressStack.end() - foundCycleIter; if((s_tableAddressStack.end() - foundCycleIter) > 1)
if(parentNum > 1) APPENDPRINT "%s:parent^%d",luaL_typename(L,i),(s_tableAddressStack.end() - foundCycleIter) END
APPENDPRINT "%s:parent^%d",luaL_typename(L,i),parentNum END
else else
APPENDPRINT "%s:parent",luaL_typename(L,i) END APPENDPRINT "%s:parent",luaL_typename(L,i) END
} }
@ -1054,7 +1047,7 @@ DEFINE_LUA_FUNCTION(copytable, "origtable")
return 1; return 1;
} }
lua_createtable(L, lua_objlen(L,1), 0); lua_createtable(L, (int)lua_objlen(L,1), 0);
int copyIndex = lua_gettop(L); int copyIndex = lua_gettop(L);
lua_pushnil(L); // first key lua_pushnil(L); // first key
@ -1092,7 +1085,7 @@ DEFINE_LUA_FUNCTION(bitand, "...[integers]")
int rv = ~0; int rv = ~0;
int numArgs = lua_gettop(L); int numArgs = lua_gettop(L);
for(int i = 1; i <= numArgs; i++) for(int i = 1; i <= numArgs; i++)
rv &= luaL_checkinteger(L,i); rv &= (int)luaL_checkinteger(L,i);
lua_settop(L,0); lua_settop(L,0);
lua_pushinteger(L,rv); lua_pushinteger(L,rv);
return 1; return 1;
@ -1102,7 +1095,7 @@ DEFINE_LUA_FUNCTION(bitor, "...[integers]")
int rv = 0; int rv = 0;
int numArgs = lua_gettop(L); int numArgs = lua_gettop(L);
for(int i = 1; i <= numArgs; i++) for(int i = 1; i <= numArgs; i++)
rv |= luaL_checkinteger(L,i); rv |= (int)luaL_checkinteger(L,i);
lua_settop(L,0); lua_settop(L,0);
lua_pushinteger(L,rv); lua_pushinteger(L,rv);
return 1; return 1;
@ -1112,15 +1105,15 @@ DEFINE_LUA_FUNCTION(bitxor, "...[integers]")
int rv = 0; int rv = 0;
int numArgs = lua_gettop(L); int numArgs = lua_gettop(L);
for(int i = 1; i <= numArgs; i++) for(int i = 1; i <= numArgs; i++)
rv ^= luaL_checkinteger(L,i); rv ^= (int)luaL_checkinteger(L,i);
lua_settop(L,0); lua_settop(L,0);
lua_pushinteger(L,rv); lua_pushinteger(L,rv);
return 1; return 1;
} }
DEFINE_LUA_FUNCTION(bitshift, "num,shift") DEFINE_LUA_FUNCTION(bitshift, "num,shift")
{ {
int num = luaL_checkinteger(L,1); int num = (int)luaL_checkinteger(L,1);
int shift = luaL_checkinteger(L,2); int shift = (int)luaL_checkinteger(L,2);
if(shift < 0) if(shift < 0)
num <<= -shift; num <<= -shift;
else else
@ -1134,7 +1127,7 @@ DEFINE_LUA_FUNCTION(bitbit, "whichbit")
int rv = 0; int rv = 0;
int numArgs = lua_gettop(L); int numArgs = lua_gettop(L);
for(int i = 1; i <= numArgs; i++) for(int i = 1; i <= numArgs; i++)
rv |= (1 << luaL_checkinteger(L,i)); rv |= (1 << (int)luaL_checkinteger(L,i));
lua_settop(L,0); lua_settop(L,0);
lua_pushinteger(L,rv); lua_pushinteger(L,rv);
return 1; return 1;
@ -1224,30 +1217,9 @@ void printfToOutput(const char* fmt, ...)
delete[] str; delete[] str;
} }
// What is THAT?
bool FailVerifyAtFrameBoundary(lua_State* L, const char* funcName, int unstartedSeverity=2, int inframeSeverity=2) bool FailVerifyAtFrameBoundary(lua_State* L, const char* funcName, int unstartedSeverity=2, int inframeSeverity=2)
{// TODO {
/*if (!Core::isRunning())
{
static const char* msg = "cannot call %s() when emulation has not started.";
switch(unstartedSeverity)
{
case 0: break;
case 1: printfToOutput(msg, funcName); break;
default: case 2: luaL_error(L, msg, funcName); break;
}
return true;
}
if(Inside_Frame)
{
static const char* msg = "cannot call %s() inside an emulation frame.";
switch(inframeSeverity)
{
case 0: break;
case 1: printfToOutput(msg, funcName); break;
default: case 2: luaL_error(L, msg, funcName); break;
}
return true;
}*/
return false; return false;
} }
@ -1354,13 +1326,13 @@ DEFINE_LUA_FUNCTION(emulua_speedmode, "mode")
else else
{ {
const char* str = luaL_checkstring(L,1); const char* str = luaL_checkstring(L,1);
if(!stricmp(str, "normal")) if(!strcasecmp(str, "normal"))
newSpeedMode = SPEEDMODE_NORMAL; newSpeedMode = SPEEDMODE_NORMAL;
else if(!stricmp(str, "nothrottle")) else if(!strcasecmp(str, "nothrottle"))
newSpeedMode = SPEEDMODE_NOTHROTTLE; newSpeedMode = SPEEDMODE_NOTHROTTLE;
else if(!stricmp(str, "turbo")) else if(!strcasecmp(str, "turbo"))
newSpeedMode = SPEEDMODE_TURBO; newSpeedMode = SPEEDMODE_TURBO;
else if(!stricmp(str, "maximum")) else if(!strcasecmp(str, "maximum"))
newSpeedMode = SPEEDMODE_MAXIMUM; newSpeedMode = SPEEDMODE_MAXIMUM;
} }
@ -1472,7 +1444,7 @@ DEFINE_LUA_FUNCTION(emulua_redraw, "")
DEFINE_LUA_FUNCTION(memory_readbyte, "address") DEFINE_LUA_FUNCTION(memory_readbyte, "address")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
unsigned char value = (unsigned char)(ReadValueAtHardwareAddress(address, 1) & 0xFF); unsigned char value = (unsigned char)(ReadValueAtHardwareAddress(address, 1) & 0xFF);
lua_settop(L,0); lua_settop(L,0);
lua_pushinteger(L, value); lua_pushinteger(L, value);
@ -1480,7 +1452,7 @@ DEFINE_LUA_FUNCTION(memory_readbyte, "address")
} }
DEFINE_LUA_FUNCTION(memory_readbytesigned, "address") DEFINE_LUA_FUNCTION(memory_readbytesigned, "address")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
signed char value = (signed char)(ReadValueAtHardwareAddress(address, 1) & 0xFF); signed char value = (signed char)(ReadValueAtHardwareAddress(address, 1) & 0xFF);
lua_settop(L,0); lua_settop(L,0);
lua_pushinteger(L, value); lua_pushinteger(L, value);
@ -1488,7 +1460,7 @@ DEFINE_LUA_FUNCTION(memory_readbytesigned, "address")
} }
DEFINE_LUA_FUNCTION(memory_readword, "address") DEFINE_LUA_FUNCTION(memory_readword, "address")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
unsigned short value = (unsigned short)(ReadValueAtHardwareAddress(address, 2) & 0xFFFF); unsigned short value = (unsigned short)(ReadValueAtHardwareAddress(address, 2) & 0xFFFF);
lua_settop(L,0); lua_settop(L,0);
lua_pushinteger(L, value); lua_pushinteger(L, value);
@ -1496,7 +1468,7 @@ DEFINE_LUA_FUNCTION(memory_readword, "address")
} }
DEFINE_LUA_FUNCTION(memory_readwordsigned, "address") DEFINE_LUA_FUNCTION(memory_readwordsigned, "address")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
signed short value = (signed short)(ReadValueAtHardwareAddress(address, 2) & 0xFFFF); signed short value = (signed short)(ReadValueAtHardwareAddress(address, 2) & 0xFFFF);
lua_settop(L,0); lua_settop(L,0);
lua_pushinteger(L, value); lua_pushinteger(L, value);
@ -1504,7 +1476,7 @@ DEFINE_LUA_FUNCTION(memory_readwordsigned, "address")
} }
DEFINE_LUA_FUNCTION(memory_readdword, "address") DEFINE_LUA_FUNCTION(memory_readdword, "address")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
unsigned long value = (unsigned long)(ReadValueAtHardwareAddress(address, 4)); unsigned long value = (unsigned long)(ReadValueAtHardwareAddress(address, 4));
lua_settop(L,0); lua_settop(L,0);
lua_pushinteger(L, value); lua_pushinteger(L, value);
@ -1512,7 +1484,7 @@ DEFINE_LUA_FUNCTION(memory_readdword, "address")
} }
DEFINE_LUA_FUNCTION(memory_readdwordsigned, "address") DEFINE_LUA_FUNCTION(memory_readdwordsigned, "address")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
signed long value = (signed long)(ReadValueAtHardwareAddress(address, 4)); signed long value = (signed long)(ReadValueAtHardwareAddress(address, 4));
lua_settop(L,0); lua_settop(L,0);
lua_pushinteger(L, value); lua_pushinteger(L, value);
@ -1521,21 +1493,21 @@ DEFINE_LUA_FUNCTION(memory_readdwordsigned, "address")
DEFINE_LUA_FUNCTION(memory_writebyte, "address,value") DEFINE_LUA_FUNCTION(memory_writebyte, "address,value")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
unsigned char value = (unsigned char)(luaL_checkinteger(L,2) & 0xFF); unsigned char value = (unsigned char)(luaL_checkinteger(L,2) & 0xFF);
WriteValueAtHardwareRAMAddress(address, value, 1); WriteValueAtHardwareRAMAddress(address, value, 1);
return 0; return 0;
} }
DEFINE_LUA_FUNCTION(memory_writeword, "address,value") DEFINE_LUA_FUNCTION(memory_writeword, "address,value")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
unsigned short value = (unsigned short)(luaL_checkinteger(L,2) & 0xFFFF); unsigned short value = (unsigned short)(luaL_checkinteger(L,2) & 0xFFFF);
WriteValueAtHardwareRAMAddress(address, value, 2); WriteValueAtHardwareRAMAddress(address, value, 2);
return 0; return 0;
} }
DEFINE_LUA_FUNCTION(memory_writedword, "address,value") DEFINE_LUA_FUNCTION(memory_writedword, "address,value")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
unsigned long value = (unsigned long)(luaL_checkinteger(L,2)); unsigned long value = (unsigned long)(luaL_checkinteger(L,2));
WriteValueAtHardwareRAMAddress(address, value, 4); WriteValueAtHardwareRAMAddress(address, value, 4);
return 0; return 0;
@ -1543,8 +1515,8 @@ DEFINE_LUA_FUNCTION(memory_writedword, "address,value")
DEFINE_LUA_FUNCTION(memory_readbyterange, "address,length") DEFINE_LUA_FUNCTION(memory_readbyterange, "address,length")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
int length = luaL_checkinteger(L,2); int length = (int)luaL_checkinteger(L,2);
if(length < 0) if(length < 0)
{ {
@ -1572,7 +1544,7 @@ DEFINE_LUA_FUNCTION(memory_readbyterange, "address,length")
DEFINE_LUA_FUNCTION(memory_isvalid, "address") DEFINE_LUA_FUNCTION(memory_isvalid, "address")
{ {
int address = luaL_checkinteger(L,1); int address = (int)luaL_checkinteger(L,1);
lua_settop(L,0); lua_settop(L,0);
lua_pushboolean(L, IsHardwareAddressValid(address)); lua_pushboolean(L, IsHardwareAddressValid(address));
return 1; return 1;
@ -1653,14 +1625,14 @@ DEFINE_LUA_FUNCTION(memory_getregister, "cpu_dot_registername_string")
for(int cpu = 0; cpu < sizeof(cpuToRegisterMaps)/sizeof(*cpuToRegisterMaps); cpu++) for(int cpu = 0; cpu < sizeof(cpuToRegisterMaps)/sizeof(*cpuToRegisterMaps); cpu++)
{ {
cpuToRegisterMap ctrm = cpuToRegisterMaps[cpu]; cpuToRegisterMap ctrm = cpuToRegisterMaps[cpu];
int cpuNameLen = strlen(ctrm.cpuName); int cpuNameLen = (int)strlen(ctrm.cpuName);
if(!strnicmp(qualifiedRegisterName, ctrm.cpuName, cpuNameLen)) if(!strncasecmp(qualifiedRegisterName, ctrm.cpuName, cpuNameLen))
{ {
qualifiedRegisterName += cpuNameLen; qualifiedRegisterName += cpuNameLen;
for(int reg = 0; ctrm.rpmap[reg].dataSize; reg++) for(int reg = 0; ctrm.rpmap[reg].dataSize; reg++)
{ {
registerPointerMap rpm = ctrm.rpmap[reg]; registerPointerMap rpm = ctrm.rpmap[reg];
if(!stricmp(qualifiedRegisterName, rpm.registerName)) if(!strcasecmp(qualifiedRegisterName, rpm.registerName))
{ {
switch(rpm.dataSize) switch(rpm.dataSize)
{ default: { default:
@ -1686,14 +1658,14 @@ DEFINE_LUA_FUNCTION(memory_setregister, "cpu_dot_registername_string,value")
for(int cpu = 0; cpu < sizeof(cpuToRegisterMaps)/sizeof(*cpuToRegisterMaps); cpu++) for(int cpu = 0; cpu < sizeof(cpuToRegisterMaps)/sizeof(*cpuToRegisterMaps); cpu++)
{ {
cpuToRegisterMap ctrm = cpuToRegisterMaps[cpu]; cpuToRegisterMap ctrm = cpuToRegisterMaps[cpu];
int cpuNameLen = strlen(ctrm.cpuName); int cpuNameLen = (int)strlen(ctrm.cpuName);
if(!strnicmp(qualifiedRegisterName, ctrm.cpuName, cpuNameLen)) if(!strncasecmp(qualifiedRegisterName, ctrm.cpuName, cpuNameLen))
{ {
qualifiedRegisterName += cpuNameLen; qualifiedRegisterName += cpuNameLen;
for(int reg = 0; ctrm.rpmap[reg].dataSize; reg++) for(int reg = 0; ctrm.rpmap[reg].dataSize; reg++)
{ {
registerPointerMap rpm = ctrm.rpmap[reg]; registerPointerMap rpm = ctrm.rpmap[reg];
if(!stricmp(qualifiedRegisterName, rpm.registerName)) if(!strcasecmp(qualifiedRegisterName, rpm.registerName))
{ {
switch(rpm.dataSize) switch(rpm.dataSize)
{ default: { default:
@ -1734,7 +1706,7 @@ DEFINE_LUA_FUNCTION(state_create, "[location]")
return 1; return 1;
} }
*/
// savestate.save(location [, option]) // savestate.save(location [, option])
// saves the current emulation state to the given location // saves the current emulation state to the given location
// you can pass in either a savestate file number (an integer), // you can pass in either a savestate file number (an integer),
@ -1743,12 +1715,14 @@ DEFINE_LUA_FUNCTION(state_create, "[location]")
// if option is "scriptdataonly" then the state will not actually be saved, but any save callbacks will still get called and their results will be saved (see savestate.registerload()/savestate.registersave()) // if option is "scriptdataonly" then the state will not actually be saved, but any save callbacks will still get called and their results will be saved (see savestate.registerload()/savestate.registersave())
DEFINE_LUA_FUNCTION(state_save, "location[,option]") DEFINE_LUA_FUNCTION(state_save, "location[,option]")
{ {
// TODO
/*
const char* option = (lua_type(L,2) == LUA_TSTRING) ? lua_tostring(L,2) : NULL; const char* option = (lua_type(L,2) == LUA_TSTRING) ? lua_tostring(L,2) : NULL;
if(option) if(option)
{ {
if(!stricmp(option, "quiet")) // I'm not sure if saving can generate warning messages, but we might as well support suppressing them should they turn out to exist if(!strcasecmp(option, "quiet")) // I'm not sure if saving can generate warning messages, but we might as well support suppressing them should they turn out to exist
g_disableStatestateWarnings = true; g_disableStatestateWarnings = true;
else if(!stricmp(option, "scriptdataonly")) else if(!strcasecmp(option, "scriptdataonly"))
g_onlyCallSavestateCallbacks = true; g_onlyCallSavestateCallbacks = true;
} }
struct Scope { ~Scope(){ g_disableStatestateWarnings = false; g_onlyCallSavestateCallbacks = false; } } scope; // needs to run even if the following code throws an exception... maybe I should have put this in a "finally" block instead, but this project seems to have something against using the "try" statement struct Scope { ~Scope(){ g_disableStatestateWarnings = false; g_onlyCallSavestateCallbacks = false; } } scope; // needs to run even if the following code throws an exception... maybe I should have put this in a "finally" block instead, but this project seems to have something against using the "try" statement
@ -1762,7 +1736,7 @@ DEFINE_LUA_FUNCTION(state_save, "location[,option]")
case LUA_TNUMBER: // numbered save file case LUA_TNUMBER: // numbered save file
default: default:
{ {
int stateNumber = luaL_checkinteger(L,1); int stateNumber = (int)luaL_checkinteger(L,1);
Set_Current_State(stateNumber, false,false); Set_Current_State(stateNumber, false,false);
char Name [1024] = {0}; char Name [1024] = {0};
Get_State_File_Name(Name); Get_State_File_Name(Name);
@ -1778,6 +1752,8 @@ DEFINE_LUA_FUNCTION(state_save, "location[,option]")
} }
} return 0; } return 0;
} }
*/
return 0;
} }
// savestate.load(location [, option]) // savestate.load(location [, option])
@ -1791,9 +1767,9 @@ DEFINE_LUA_FUNCTION(state_load, "location[,option]")
const char* option = (lua_type(L,2) == LUA_TSTRING) ? lua_tostring(L,2) : NULL; const char* option = (lua_type(L,2) == LUA_TSTRING) ? lua_tostring(L,2) : NULL;
if(option) if(option)
{ {
if(!stricmp(option, "quiet")) if(!strcasecmp(option, "quiet"))
g_disableStatestateWarnings = true; g_disableStatestateWarnings = true;
else if(!stricmp(option, "scriptdataonly")) else if(!strcasecmp(option, "scriptdataonly"))
g_onlyCallSavestateCallbacks = true; g_onlyCallSavestateCallbacks = true;
} }
struct Scope { ~Scope(){ g_disableStatestateWarnings = false; g_onlyCallSavestateCallbacks = false; } } scope; // needs to run even if the following code throws an exception... maybe I should have put this in a "finally" block instead, but this project seems to have something against using the "try" statement struct Scope { ~Scope(){ g_disableStatestateWarnings = false; g_onlyCallSavestateCallbacks = false; } } scope; // needs to run even if the following code throws an exception... maybe I should have put this in a "finally" block instead, but this project seems to have something against using the "try" statement
@ -1812,11 +1788,13 @@ DEFINE_LUA_FUNCTION(state_load, "location[,option]")
LuaContextInfo& info = GetCurrentInfo(); LuaContextInfo& info = GetCurrentInfo();
if(info.rerecordCountingDisabled) if(info.rerecordCountingDisabled)
SkipNextRerecordIncrement = true; SkipNextRerecordIncrement = true;
int stateNumber = luaL_checkinteger(L,1); int stateNumber = (int)luaL_checkinteger(L,1);
Set_Current_State(stateNumber, false,!g_disableStatestateWarnings); Set_Current_State(stateNumber, false,!g_disableStatestateWarnings);
char Name [1024] = {0}; char Name [1024] = {0};
Get_State_File_Name(Name);
Load_State(Name); //TODO
//Get_State_File_Name(Name);
//Load_State(Name);
} return 0; } return 0;
case LUA_TUSERDATA: // in-memory save slot case LUA_TUSERDATA: // in-memory save slot
{ {
@ -1825,7 +1803,7 @@ DEFINE_LUA_FUNCTION(state_load, "location[,option]")
{ {
stateBuffer += ((16 - (int)stateBuffer) & 15); // for performance alignment reasons stateBuffer += ((16 - (int)stateBuffer) & 15); // for performance alignment reasons
if(stateBuffer[0]) if(stateBuffer[0])
Load_State_From_Buffer(stateBuffer); ;// Load_State_From_Buffer(stateBuffer); TODO
else // the first byte of a valid savestate is never 0 else // the first byte of a valid savestate is never 0
luaL_error(L, "attempted to load an anonymous savestate before saving it"); luaL_error(L, "attempted to load an anonymous savestate before saving it");
} }
@ -1854,10 +1832,10 @@ DEFINE_LUA_FUNCTION(state_loadscriptdata, "location")
case LUA_TNUMBER: // numbered save file case LUA_TNUMBER: // numbered save file
default: default:
{ {
int stateNumber = luaL_checkinteger(L,1); int stateNumber = (int)luaL_checkinteger(L,1);
Set_Current_State(stateNumber, false,false); Set_Current_State(stateNumber, false,false);
char Name [1024] = {0}; char Name [1024] = {0};
Get_State_File_Name(Name); //Get_State_File_Name(Name); TODO
{ {
LuaSaveData saveData; LuaSaveData saveData;
@ -1894,9 +1872,10 @@ DEFINE_LUA_FUNCTION(state_savescriptdata, "location")
lua_settop(L, 1); lua_settop(L, 1);
lua_pushstring(L, "scriptdataonly"); lua_pushstring(L, "scriptdataonly");
return state_save(L); return state_save(L);
}*/ }
// TODO: Convert to Dolphin?
static const struct ButtonDesc static const struct ButtonDesc
{ {
unsigned short controllerNum; unsigned short controllerNum;
@ -1957,15 +1936,15 @@ int joy_getArgControllerNum(lua_State* L, int& index)
if(type == LUA_TSTRING) if(type == LUA_TSTRING)
{ {
const char* str = lua_tostring(L,index); const char* str = lua_tostring(L,index);
if(!stricmp(str, "1C")) if(!strcasecmp(str, "1C"))
controllerNumber = 0x1C; controllerNumber = 0x1C;
else if(!stricmp(str, "1B")) else if(!strcasecmp(str, "1B"))
controllerNumber = 0x1B; controllerNumber = 0x1B;
else if(!stricmp(str, "1A")) else if(!strcasecmp(str, "1A"))
controllerNumber = 0x1A; controllerNumber = 0x1A;
} }
if(!controllerNumber) if(!controllerNumber)
controllerNumber = luaL_checkinteger(L,index); controllerNumber = (int)luaL_checkinteger(L,index);
index++; index++;
} }
else else
@ -2149,7 +2128,7 @@ inline int getcolor_unmodified(lua_State *L, int idx, int defaultColor)
{ {
case LUA_TNUMBER: case LUA_TNUMBER:
{ {
return lua_tointeger(L,idx); return (int)lua_tointeger(L,idx);
} break; } break;
case LUA_TSTRING: case LUA_TSTRING:
{ {
@ -2158,7 +2137,7 @@ inline int getcolor_unmodified(lua_State *L, int idx, int defaultColor)
{ {
int color; int color;
sscanf(str+1, "%X", &color); sscanf(str+1, "%X", &color);
int len = strlen(str+1); int len = (int)strlen(str+1);
int missing = max(0, 8-len); int missing = max(0, 8-len);
color <<= missing << 2; color <<= missing << 2;
if(missing >= 2) color |= 0xFF; if(missing >= 2) color |= 0xFF;
@ -2166,10 +2145,10 @@ inline int getcolor_unmodified(lua_State *L, int idx, int defaultColor)
} }
else for(int i = 0; i<sizeof(s_colorMapping)/sizeof(*s_colorMapping); i++) else for(int i = 0; i<sizeof(s_colorMapping)/sizeof(*s_colorMapping); i++)
{ {
if(!stricmp(str,s_colorMapping[i].name)) if(!strcasecmp(str,s_colorMapping[i].name))
return s_colorMapping[i].value; return s_colorMapping[i].value;
} }
if(!strnicmp(str, "rand", 4)) if(!strncasecmp(str, "rand", 4))
return ((rand()*255/RAND_MAX) << 8) | ((rand()*255/RAND_MAX) << 16) | ((rand()*255/RAND_MAX) << 24) | 0xFF; return ((rand()*255/RAND_MAX) << 8) | ((rand()*255/RAND_MAX) << 16) | ((rand()*255/RAND_MAX) << 24) | 0xFF;
} break; } break;
case LUA_TTABLE: case LUA_TTABLE:
@ -2183,8 +2162,8 @@ inline int getcolor_unmodified(lua_State *L, int idx, int defaultColor)
{ {
bool keyIsString = (lua_type(L, keyIndex) == LUA_TSTRING); bool keyIsString = (lua_type(L, keyIndex) == LUA_TSTRING);
bool keyIsNumber = (lua_type(L, keyIndex) == LUA_TNUMBER); bool keyIsNumber = (lua_type(L, keyIndex) == LUA_TNUMBER);
int key = keyIsString ? tolower(*lua_tostring(L, keyIndex)) : (keyIsNumber ? lua_tointeger(L, keyIndex) : 0); int key = keyIsString ? tolower(*lua_tostring(L, keyIndex)) : (keyIsNumber ? (int)lua_tointeger(L, keyIndex) : 0);
int value = lua_tointeger(L, valueIndex); int value = (int)lua_tointeger(L, valueIndex);
if(value < 0) value = 0; if(value < 0) value = 0;
if(value > 255) value = 255; if(value > 255) value = 255;
switch(key) switch(key)
@ -2242,8 +2221,8 @@ DEFINE_LUA_FUNCTION(gui_text, "x,y,str[,color=\"white\"[,outline=\"black\"]]")
return 0; // we have to wait until later to call this function because emulua hasn't emulated the next frame yet return 0; // we have to wait until later to call this function because emulua hasn't emulated the next frame yet
// (the only way to avoid this deferring is to be in a gui.register or emulua.registerafter callback) // (the only way to avoid this deferring is to be in a gui.register or emulua.registerafter callback)
int x = luaL_checkinteger(L,1) & 0xFFFF; int x = (int)luaL_checkinteger(L,1) & 0xFFFF;
int y = luaL_checkinteger(L,2) & 0xFFFF; int y = (int)luaL_checkinteger(L,2) & 0xFFFF;
const char* str = toCString(L,3); // better than using luaL_checkstring here (more permissive) const char* str = toCString(L,3); // better than using luaL_checkstring here (more permissive)
if(str && *str) if(str && *str)
@ -2283,9 +2262,9 @@ static inline void ApplyShaderToPixel(int off, std::map<int,int>& cachedShaderRe
lua_call(L, 3, 3); lua_call(L, 3, 3);
int rout = lua_tointeger(L, -3); int rout = (int)lua_tointeger(L, -3);
int gout = lua_tointeger(L, -2); int gout = (int)lua_tointeger(L, -2);
int bout = lua_tointeger(L, -1); int bout = (int)lua_tointeger(L, -1);
lua_pop(L,3); lua_pop(L,3);
if(rout < 0) rout = 0; if(rout > 255) rout = 255; if(rout < 0) rout = 0; if(rout > 255) rout = 255;
if(gout < 0) gout = 0; if(gout > 255) gout = 255; if(gout < 0) gout = 0; if(gout > 255) gout = 255;
@ -2369,15 +2348,15 @@ void ApplyShaderToBoxOutline(int x1, int y1, int x2, int y2, lua_State* L, int i
int amplifyShader(lua_State* L) int amplifyShader(lua_State* L)
{ {
int rin = lua_tointeger(L, 1); int rin = (int)lua_tointeger(L, 1);
int gin = lua_tointeger(L, 2); int gin = (int)lua_tointeger(L, 2);
int bin = lua_tointeger(L, 3); int bin = (int)lua_tointeger(L, 3);
lua_pushvalue(L, lua_upvalueindex(1)); lua_pushvalue(L, lua_upvalueindex(1));
lua_insert(L, 1); lua_insert(L, 1);
lua_call(L, 3, 3); lua_call(L, 3, 3);
int rout = lua_tointeger(L, 1); int rout = (int)lua_tointeger(L, 1);
int gout = lua_tointeger(L, 2); int gout = (int)lua_tointeger(L, 2);
int bout = lua_tointeger(L, 3); int bout = (int)lua_tointeger(L, 3);
lua_settop(L, 0); lua_settop(L, 0);
lua_pushinteger(L, rout*4 - rin*3); lua_pushinteger(L, rout*4 - rin*3);
lua_pushinteger(L, gout*4 - gin*3); lua_pushinteger(L, gout*4 - gin*3);
@ -2390,10 +2369,10 @@ DEFINE_LUA_FUNCTION(gui_box, "x1,y1,x2,y2[,fill[,outline]]")
if(DeferGUIFuncIfNeeded(L)) if(DeferGUIFuncIfNeeded(L))
return 0; return 0;
int x1 = luaL_checkinteger(L,1); // & 0xFFFF removed because it was turning -1 into 65535 which screwed up the out-of-bounds checking in ApplyShaderToBox int x1 = (int)luaL_checkinteger(L,1); // & 0xFFFF removed because it was turning -1 into 65535 which screwed up the out-of-bounds checking in ApplyShaderToBox
int y1 = luaL_checkinteger(L,2); int y1 = (int)luaL_checkinteger(L,2);
int x2 = luaL_checkinteger(L,3); int x2 = (int)luaL_checkinteger(L,3);
int y2 = luaL_checkinteger(L,4); int y2 = (int)luaL_checkinteger(L,4);
int fillcolor = getcolor(L,5,0xFFFFFF3F); int fillcolor = getcolor(L,5,0xFFFFFF3F);
int outlinecolor = getcolor(L,6,fillcolor|0xFF); int outlinecolor = getcolor(L,6,fillcolor|0xFF);
if(!lua_isfunction(L,5) || !lua_isnoneornil(L,6)) if(!lua_isfunction(L,5) || !lua_isnoneornil(L,6))
@ -2424,8 +2403,8 @@ DEFINE_LUA_FUNCTION(gui_pixel, "x,y[,color=\"white\"]")
if(DeferGUIFuncIfNeeded(L)) if(DeferGUIFuncIfNeeded(L))
return 0; return 0;
int x = luaL_checkinteger(L,1) & 0xFFFF; int x = (int)luaL_checkinteger(L,1) & 0xFFFF;
int y = luaL_checkinteger(L,2) & 0xFFFF; int y = (int)luaL_checkinteger(L,2) & 0xFFFF;
int color = getcolor(L,3,0xFFFFFFFF); int color = getcolor(L,3,0xFFFFFFFF);
int color32 = color>>8; int color32 = color>>8;
int color16 = DrawUtil::Pix32To16(color32); int color16 = DrawUtil::Pix32To16(color32);
@ -2439,8 +2418,8 @@ DEFINE_LUA_FUNCTION(gui_pixel, "x,y[,color=\"white\"]")
// r,g,b = gui.getpixel(x,y) // r,g,b = gui.getpixel(x,y)
DEFINE_LUA_FUNCTION(gui_getpixel, "x,y") DEFINE_LUA_FUNCTION(gui_getpixel, "x,y")
{ {
int x = luaL_checkinteger(L,1); int x = (int)luaL_checkinteger(L,1);
int y = luaL_checkinteger(L,2); int y = (int)luaL_checkinteger(L,2);
int xres = ((VDP_Reg.Set4 & 0x1) || Debug || !Game || !FrameCount) ? 320 : 256; int xres = ((VDP_Reg.Set4 & 0x1) || Debug || !Game || !FrameCount) ? 320 : 256;
int yres = ((VDP_Reg.Set2 & 0x8) && !(Debug || !Game || !FrameCount)) ? 240 : 224; int yres = ((VDP_Reg.Set2 & 0x8) && !(Debug || !Game || !FrameCount)) ? 240 : 224;
@ -2471,10 +2450,10 @@ DEFINE_LUA_FUNCTION(gui_line, "x1,y1,x2,y2[,color=\"white\"[,skipfirst=false]]")
if(DeferGUIFuncIfNeeded(L)) if(DeferGUIFuncIfNeeded(L))
return 0; return 0;
int x1 = luaL_checkinteger(L,1) & 0xFFFF; int x1 = (int)luaL_checkinteger(L,1) & 0xFFFF;
int y1 = luaL_checkinteger(L,2) & 0xFFFF; int y1 = (int)luaL_checkinteger(L,2) & 0xFFFF;
int x2 = luaL_checkinteger(L,3) & 0xFFFF; int x2 = (int)luaL_checkinteger(L,3) & 0xFFFF;
int y2 = luaL_checkinteger(L,4) & 0xFFFF; int y2 = (int)luaL_checkinteger(L,4) & 0xFFFF;
int color = getcolor(L,5,0xFFFFFFFF); int color = getcolor(L,5,0xFFFFFFFF);
int color32 = color>>8; int color32 = color>>8;
int color16 = DrawUtil::Pix32To16(color32); int color16 = DrawUtil::Pix32To16(color32);
@ -2614,9 +2593,9 @@ DEFINE_LUA_FUNCTION(gui_gdoverlay, "[x=0,y=0,]gdimage[,alphamul]")
int index = 1; int index = 1;
if(lua_type(L,index) == LUA_TNUMBER) if(lua_type(L,index) == LUA_TNUMBER)
{ {
xStart = lua_tointeger(L,index++); xStart = (int)lua_tointeger(L,index++);
if(lua_type(L,index) == LUA_TNUMBER) if(lua_type(L,index) == LUA_TNUMBER)
yStart = lua_tointeger(L,index++); yStart = (int)lua_tointeger(L,index++);
} }
luaL_checktype(L,index,LUA_TSTRING); luaL_checktype(L,index,LUA_TSTRING);
@ -2825,7 +2804,7 @@ DEFINE_LUA_FUNCTION(movie_rerecordcount, "")
} }
DEFINE_LUA_FUNCTION(movie_setrerecordcount, "") DEFINE_LUA_FUNCTION(movie_setrerecordcount, "")
{ {
//TODO: MainMovie.NbRerecords = luaL_checkinteger(L, 1); //TODO: MainMovie.NbRerecords = (int)luaL_checkinteger(L, 1);
return 0; return 0;
} }
DEFINE_LUA_FUNCTION(emulua_rerecordcounting, "[enabled]") DEFINE_LUA_FUNCTION(emulua_rerecordcounting, "[enabled]")
@ -3629,7 +3608,7 @@ void RequestAbortLuaScript(int uid, const char* message)
void SetSaveKey(LuaContextInfo& info, const char* key) void SetSaveKey(LuaContextInfo& info, const char* key)
{ {
info.dataSaveKey = crc32(0, (const unsigned char*)key, strlen(key)); info.dataSaveKey = crc32(0, (const unsigned char*)key, (int)strlen(key));
if(!info.dataSaveLoadKeySet) if(!info.dataSaveLoadKeySet)
{ {
@ -3639,7 +3618,7 @@ void SetSaveKey(LuaContextInfo& info, const char* key)
} }
void SetLoadKey(LuaContextInfo& info, const char* key) void SetLoadKey(LuaContextInfo& info, const char* key)
{ {
info.dataLoadKey = crc32(0, (const unsigned char*)key, strlen(key)); info.dataLoadKey = crc32(0, (const unsigned char*)key, (int)strlen(key));
if(!info.dataSaveLoadKeySet) if(!info.dataSaveLoadKeySet)
{ {
@ -3715,13 +3694,13 @@ void CallExitFunction(int uid)
// gather the final value of the variables we're supposed to persist // gather the final value of the variables we're supposed to persist
LuaSaveData newExitData; LuaSaveData newExitData;
{ {
int numPersistVars = info.persistVars.size(); int numPersistVars = (int)info.persistVars.size();
for(int i = 0; i < numPersistVars; i++) for(int i = 0; i < numPersistVars; i++)
{ {
const char* varName = info.persistVars[i].c_str(); const char* varName = info.persistVars[i].c_str();
lua_getfield(L, LUA_GLOBALSINDEX, varName); lua_getfield(L, LUA_GLOBALSINDEX, varName);
int type = lua_type(L,-1); int type = lua_type(L,-1);
unsigned int varNameCRC = crc32(0, (const unsigned char*)varName, strlen(varName)); unsigned int varNameCRC = crc32(0, (const unsigned char*)varName, (int)strlen(varName));
newExitData.SaveRecordPartial(uid, varNameCRC, -1); newExitData.SaveRecordPartial(uid, varNameCRC, -1);
lua_pop(L,1); lua_pop(L,1);
} }
@ -3886,7 +3865,7 @@ struct TieredRegion
__forceinline int NotEmpty() __forceinline int NotEmpty()
{ {
return broad.islands.size(); return (int)broad.islands.size();
} }
// note: it is illegal to call this if NotEmpty() returns 0 // note: it is illegal to call this if NotEmpty() returns 0
@ -3920,7 +3899,7 @@ static void CalculateMemHookRegions(LuaMemHookType hookType)
{ {
if(lua_isfunction(L, -1)) if(lua_isfunction(L, -1))
{ {
unsigned int addr = lua_tointeger(L, -2); unsigned int addr = (int)lua_tointeger(L, -2);
hookedBytes.push_back(addr); hookedBytes.push_back(addr);
} }
lua_pop(L, 1); lua_pop(L, 1);
@ -4183,7 +4162,7 @@ void PushBinaryItem(T item, std::vector<unsigned char>& output)
for(int i = sizeof(T); i; i--) for(int i = sizeof(T); i; i--)
output.push_back(*buf++); output.push_back(*buf++);
#else #else
int vecsize = output.size(); int vecsize = (int)output.size();
for(int i = sizeof(T); i; i--) for(int i = sizeof(T); i; i--)
output.insert(output.begin() + vecsize, *buf++); output.insert(output.begin() + vecsize, *buf++);
#endif #endif
@ -4330,7 +4309,7 @@ static void LuaStackToBinaryConverter(lua_State* L, int i, std::vector<unsigned
// then a Lua value per array entry, then a (key,value) pair of Lua values per hashed entry // then a Lua value per array entry, then a (key,value) pair of Lua values per hashed entry
// note that the structure of table references are not faithfully serialized (yet) // note that the structure of table references are not faithfully serialized (yet)
{ {
int outputTypeIndex = output.size() - 1; int outputTypeIndex = (int)output.size() - 1;
int arraySize = 0; int arraySize = 0;
int hashSize = 0; int hashSize = 0;
@ -4341,7 +4320,7 @@ static void LuaStackToBinaryConverter(lua_State* L, int i, std::vector<unsigned
bool wasnil = false; bool wasnil = false;
int nilcount = 0; int nilcount = 0;
arraySize = lua_objlen(L, i); arraySize = (int)lua_objlen(L, i);
int arrayValIndex = lua_gettop(L) + 1; int arrayValIndex = lua_gettop(L) + 1;
for(int j = 1; j <= arraySize; j++) for(int j = 1; j <= arraySize; j++)
{ {
@ -4456,7 +4435,7 @@ void BinaryToLuaStackConverter(lua_State* L, const unsigned char*& data, unsigne
break; break;
case LUA_TSTRING: case LUA_TSTRING:
lua_pushstring(L, (const char*)data); lua_pushstring(L, (const char*)data);
AdvanceByteStream(data, remaining, strlen((const char*)data) + 1); AdvanceByteStream(data, remaining, (int)strlen((const char*)data) + 1);
break; break;
case LUA_TNUMBER: case LUA_TNUMBER:
lua_pushnumber(L, AdvanceByteStream<double>(data, remaining)); lua_pushnumber(L, AdvanceByteStream<double>(data, remaining));
@ -4555,7 +4534,7 @@ unsigned char* LuaStackToBinary(lua_State* L, unsigned int& size)
unsigned char* rv = new unsigned char [output.size()]; unsigned char* rv = new unsigned char [output.size()];
memcpy(rv, &output.front(), output.size()); memcpy(rv, &output.front(), output.size());
size = output.size(); size = (int)output.size();
return rv; return rv;
} }
@ -4651,7 +4630,7 @@ void LuaSaveData::SaveRecordPartial(int uid, unsigned int key, int idx)
unsigned char* rv = new unsigned char [output.size()]; unsigned char* rv = new unsigned char [output.size()];
memcpy(rv, &output.front(), output.size()); memcpy(rv, &output.front(), output.size());
cur->size = output.size(); cur->size = (int)output.size();
cur->data = rv; cur->data = rv;
} }