rendered paste body#include "lua.hpp"
class lua
{
private:
lua_State* L;
public:
lua()
{
L = lua_open();
luaL_openlibs(L);
};
lua(lua_State* P)
{
L = P;
};
~lua()
{
lua_close(L);
};
void dofile(const char* fn);
void dostring(const char* str);
//stack queriers
const char* getstring(int idx);
double getnumber(int idx);
//stack pushers
void pushnumber(double i);
void pushstring(const char* str);
void register_func(const char* name, int ptr(lua_State*));
//stack etc.
void pop(int i);
//debug
const char* getError();
};
using namespace std;
void lua::dofile(const char* fn)
{
cout<<"Opening: "<<fn<<endl;
if (luaL_dofile(L,fn))
cout<<"Error: ("<<this->getError()<<")"<<endl;
}
void lua::dostring(const char* str)
{
if (luaL_loadstring(L,str) != 0 )
{
cout<<"Error: ("<<this->getError()<<") in string: ("<<str<<")"<<std::endl;
}else{
if (lua_pcall(L,0,0,0) != 0 )
{
cout<<"Error: ("<<this->getError()<<") while running string: ("<<str<<")"<<std::endl;
}
}
}
const char* lua::getError()
{
const char* err = "";
//this->stackDump();
err = lua_tostring(L,-1);
lua_pop(L,1);
return err;
}
double lua::getnumber(int idx)
{
return lua_tonumber(L,idx);
}
const char* lua::getstring(int idx)
{
return lua_tostring(L,idx);
}
void lua::pushstring(const char* str)
{
lua_pushstring(L,str);
}
void lua::pushnumber(double i)
{
lua_pushnumber(L,i);
}
void lua::register_func(const char* name, int ptr(lua_State*))
{
lua_register(L,name,ptr);
}
void lua::pop(int i)
{
lua_pop(L,i);
}