Performs an unprotected Lua call.
#include <iostream>
int main(int argc, char *argv[])
{
lua_State *lua = luaL_newstate();
luaL_checkversion(lua);
lua_gc(lua, LUA_GCSTOP, 0);
luaL_openlibs(lua);
lua_gc(lua, LUA_GCRESTART, 0);
luaL_dofile(lua, "main.lua");
std::cout << "---- Initialized Lua " << std::endl;
const unsigned int returnCount = EasyLua::call(lua, "easyLuaMultiParamMultiReturnTest", 1, "Two", 3.14f);
std::cout << "Return Count: " << returnCount << std::endl;
int integerReturnOne = -1;
float floatReturn = -1;
std::string stringReturnThree;
int integerReturnTwo = -1;
char *stringReturnOne = (char*)malloc(256);
memset(stringReturnOne, 0x00, 256);
char stringReturnTwo[256];
memset(stringReturnTwo, 0x00, 256);
EasyLua::Utilities::readStack<false>(lua, &integerReturnOne, &floatReturn,
stringReturnOne, 256,
stringReturnTwo, 256,
&stringReturnThree, &integerReturnTwo);
std::cout << "Got Int: " << integerReturnOne << std::endl;
std::cout << "Got Float: " << floatReturn << std::endl;
std::cout << "Got String: " << stringReturnOne << std::endl;
std::cout << "Got String: " << stringReturnTwo << std::endl;
std::cout << "Got String: " << stringReturnThree << std::endl;
std::cout << "Got Int: " << integerReturnTwo << std::endl;
const int stackError = EasyLua::Utilities::readStack<false>(lua, &integerReturnOne, stringReturnOne, 256);
std::cout << "Stack Error Index: " << stackError << std::endl;
try
{
EasyLua::Utilities::readStack<true>(lua, stringReturnOne, 256);
}
catch (std::runtime_error &e)
{
std::cout << "Caught Runtime Exception: " << e.what() << std::endl;
}
lua_close(lua);
std::cout << "---- Deinitialized Lua" << std::endl;
free(stringReturnOne);
return 0;
}