Lua53
来源:互联网 发布:安心贷网络借贷平台 编辑:程序博客网 时间:2024/06/03 16:32
简单包装,未测试.如果inline报错.可以修改项目配置或者加__forceinline
// lua.hpp// Lua header files for C++// <<extern "C">> not supplied automatically because Lua also compiles as C++extern "C" {#include "lua.h"#include "lualib.h"#include "lauxlib.h"}#ifdef __cplusplus/** \brief lua * * lua */ #ifndef nullptr #define nullptr 0 #endif // nullptrclass LUA_API Lua{public: lua_State *L; /* ** state manipulation */public: Lua(lua_Alloc f, void *ud):L(nullptr) { L = lua_newstate(f,ud); } Lua():L(NULL){ L = luaL_newstate(); } ~Lua() { if (L) { lua_close(L); L = nullptr; } } // inline lua_State *NewThread(){ return lua_newthread(L); } // inline lua_CFunction atpanic(lua_CFunction panicf){ return lua_atpanic(L, panicf); } // inline const lua_Number *verson(){ return lua_version(L); } /* ** basic stack manipulation */public: inline int absindex(int idx){ return lua_absindex(L,idx); } inline int gettop(){ return lua_gettop(L); } inline void settop( int idx){ return lua_settop(L, idx); } inline void pushvalue( int idx){ return lua_pushvalue(L,idx); } inline void rotate( int idx, int n){ return lua_rotate(L,idx,n); } inline void copy( int fromidx, int toidx){ return lua_copy(L, fromidx, toidx); } inline int checkstack( int n){ return lua_checkstack(L,n); } inline void xmove(lua_State *to, int n){ return lua_xmove(L, to,n); } /* ** access functions (stack -> C) */ inline int isnumber( int idx){ return lua_isnumber(L, idx); } inline int isstring( int idx){ return lua_isstring(L, idx); } inline int iscfunction( int idx){ return lua_isfunction(L,idx); } inline int isinteger( int idx){ return lua_isinteger(L,idx); } inline int isuserdata( int idx){ return lua_isuserdata(L,idx); } inline int type( int idx){ return lua_type(L,idx); } inline const char *typename( int tp){ return lua_typename(L,tp); } inline lua_Number tonumberx( int idx, int *isnum){ return lua_tonumberx(L,idx, isnum); } inline lua_Integer tointegerx( int idx, int *isnum){ return lua_tointeger(L, idx, isnum); } inline int toboolean( int idx){ return lua_toboolean(L, idx); } inline const char *tolstring( int idx, size_t *len){ return lua_tolstring(L,idx, len); } inline size_t rawlen( int idx){ return lua_rawlen(L,idx); } inline lua_CFunction tocfunction( int idx){ return lua_tocfunction(L,idx); } inline void *touserdata( int idx){ return lua_touserdata(L,idx); } inline lua_State *tothread( int idx){ return lua_tothread(L,idx); } inline const void *topointer( int idx){ return lua_topointer(L,idx); } /* ** Comparison and arithmetic functions */ inline void arith( int op){ lua_arith(L,op); } inline int rawequal( int idx1, int idx2){ return lua_rawequal(L, idx1, idx2); } inline int compare( int idx1, int idx2, int op){ return lua_compare(L, idx1, idx2, op); } /* ** push functions (C -> stack) */ inline void pushnil(){ lua_pushnil(L); } inline void pushnumber( lua_Number n){ lua_pushnumber(L, n); } inline void pushinteger( lua_Integer n){ lua_pushinteger(L, n); } inline const char *pushlstring( const char *s, size_t len){ return lua_pushlstring(L,s,len); } inline const char *pushstring( const char *s){ return lua_pushstring(L, s); } inline const char *pushvfstring( const char *fmt,va_list argp){ return lua_pushvfstring(L, ftm, argp); } //check lua_pushfstring //implete no same const char *pushfstring( const char *fmt, ...){ const char *ret; va_list argp; va_start(argp, fmt); ret = pushvfstring(L, fmt, argp); va_end(argp); return ret; } inline void pushcclosure( lua_CFunction fn, int n){ lua_pushcclosure(L,fn,n); } inline void pushboolean( int b){ lua_pushboolean(L,b); } inline void pushlightuserdata( void *p){ lua_pushlightuserdata(L,p); } inline int pushthread(){ return lua_pushthread(L); } /* ** get functions (Lua -> stack) */ inline int getglobal( const char *name){ return lua_getglobal(L, name); } inline int gettable( int idx){ return lua_gettable(L, idx); } inline int getfield( int idx, const char *k){ return lua_getfield(L,idx,k); } inline int geti( int idx, lua_Integer n){ return lua_geti(L,idx,n); } inline int rawget( int idx){ return lua_rawget(L,idx); } inline int rawgeti( int idx, lua_Integer n){ return lua_rawgeti(L,idx,n); } inline int rawgetp( int idx, const void *p){ return lua_rawgetp(L,idx,p); } inline void createtable( int narry, int nrec){ return lua_createtable(L,narry,nrec); } inline void *newuserdata( size_t sz){ return lua_newuserdata(L,sz); } inline int getmetatable( int objindex){ return lua_getmetatable(L,objindex); } inline int getuservalue( int idx){ return lua_getuservalue(L,idx); } /* ** set functions (stack -> Lua) */ inline void setglobal( const char *name){ lua_setglobal(L,name); } inline void settable( int idx){ lua_settable(L,idx); } inline void setfield( int idx, const char *k){ lua_setfield(L,idx,k); } inline void seti( int idx, lua_Integer n){ lua_seti(L,idx,n); } inline void rawset( int idx){ lua_rawset(L,idx); } inline void rawseti( int idx, lua_Integer n){ lua_rawseti(L,idx,n); } inline void rawsetp( int idx, const void *p){ lua_rawsetp(L,idx,p); } inline int setmetatable( int objindex){ return lua_setmetatable(L,objindex); } inline void setuservalue( int idx){ lua_setuservalue(L,idx); } /* ** 'load' and 'call' functions (load and run Lua code) */ inline void callk( int nargs, int nresults,lua_KContext ctx, lua_KFunction k){ lua_callk(L,nargs,nresults, ctx,k); } //#define lua_call(L,n,r) lua_callk(L, (n), (r), 0, NULL) inline void call(int nargs,int nresults){ lua_call(L,nargs,nresults,0,NULL) } inline int pcallk( int nargs, int nresults, int errfunc,lua_KContext ctx, lua_KFunction k){ return lua_pcallk(L,nargs, nresults, errfunc, ctx,k); } //#define lua_pcall(L,n,r,f) lua_pcallk(L, (n), (r), (f), 0, NULL) inline void pcall( int nargs, int nresults int errfunc){ lua_pcallk(L,nargs,nresults,errfuc,0,NULL); } inline int load( lua_Reader reader, void *dt,const char *chunkname, const char *mode ){ return lua_load(L,reader,data,chunkname,mode); } inline int dump( lua_Writer writer, void *data, int strip){ return lua_dump(L,writer,data,strip); } /* ** coroutine functions */ inline int yieldk( int nresults, lua_KContext ctx,lua_KFunction k){ return lua_yieldk(L,nresults, ctx,k); } inline int resume( lua_State *from, int narg){ return lua_resume(L,from,narg); } inline int status(){ return lua_status(L); } inline int isyieldable(){ return lua_isyieldable(L); } //#define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL) inline int yield(int nresults){ return lua_yieldk(L,nresults,0,NULL); } /* ** garbage-collection function and options */ inline int gc( int what, int data){ return lua_gc(L,what,data); } /* ** miscellaneous functions */ inline int error(){ return lua_error(L); } inline int next( int idx){ return lua_next(L,idx); } inline void concat( int n){ lua_concat(L,n); } inline void len( int idx){ lua_len(L,idx); } inline size_t stringtonumber( const char *s){ return lua_stringtonumber(L,s); } inline lua_Alloc getallocf( void **ud){ return lua_getallocf(L,ud); } inline void setallocf( lua_Alloc f, void *ud){ lua_setallocf(L,f,ud); } /* ** {============================================================== ** some useful macros ** =============================================================== */ //#define lua_getextraspace(L) ((void *)((char *)(L) - LUA_EXTRASPACE)) inline void * getextraspace(){ return ((void *)((char *)(L) - LUA_EXTRASPACE)); } //#define lua_tonumber(L,i) lua_tonumberx(L,(i),NULL) inline lua_Number tonumber(int idx){ return lua_tonumberx(L,idx,NULL); } //#define lua_tointeger(L,i) lua_tointegerx(L,(i),NULL) inline lua_Integer tointeger(ind idx){ return lua_tointegerx(L,idx,NULL); } //#define lua_pop(L,n) lua_settop(L, -(n)-1) inline void pop(int idx){ lua_settop(L,idx); } //#define lua_newtable(L) lua_createtable(L, 0, 0) inline void newtable(){ lua_createtable(L,0,0); }//#define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) inline void pushcfunction(lua_CFunction f){ lua_pushcclosure(L,f,0); }//#define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n))) inline void register(lua_CFunction f, const char *name){ pushcfunction(f); setglobal(n); }// #define lua_isfunction(L,n) lua_type(L, (n)) == LUA_TFUNCTION)// #define lua_istable(L,n) lua_type(L, (n)) == LUA_TTABLE)// #define lua_islightuserdata(L,n) vtype(L, (n)) == LUA_TLIGHTUSERDATA)// #define lua_isnil(L,n) lua_type(L, (n)) == LUA_TNIL)// #define lua_isboolean(L,n) lua_type(L, (n)) == LUA_TBOOLEAN)// #define lua_isthread(L,n) lua_type(L, (n)) == LUA_TTHREAD)// #define lua_isnone(L,n) lua_type(L, (n)) == LUA_TNONE)// #define lua_isnoneornil(L, n) lua_type(L, (n)) <= 0) inline bool isfunction(int n) { return (lua_type(L, n) ==LUA_TFUNCTION);} inline bool istable(int n){ return (lua_type(L, n) == LUA_TTABLE);} inline bool islightuserdata(int n) { return (lua_type(L, n)== LUA_TLIGHTUSERDATA);} inline bool isnil(int n) { return (lua_type(L, n) == LUA_TNIL);} inline bool isboolean(int n) { return (lua_type(L, n) == LUA_TBOOLEAN);} inline bool isthread(int n) { return (lua_type(L, n) == LUA_TTHREAD);} inline bool isnone(int n) { return (lua_type(L, n) == LUA_TNONE);} inline bool isnoneornil(int n) { return (lua_type(L, n) <= 0);} //#define lua_pushliteral(L, s) lua_pushstring(L, "" s) inline const char *pushliteral(const char *s){ return lua_pushstring(L,""s); } //#define lua_pushglobaltable(L) \ lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS) inline int pushglobaltable(){ return lua_rawgeti(L,LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS); } //#define lua_tostring(L,i) lua_tolstring(L, (i), NULL) inline int tostring(int idx){ return lua_tolstring(L,idx,NULL); } //#define lua_insert(L,idx) lua_rotate(L, (idx), 1) inline void insert(int idx){ lua_rotate(L,idx,1); } //#define lua_remove(L,idx) lua_rotate(L, (idx), -1), lua_pop(L, 1)) inline void remove(int idx){ lua_rotate(L,idx,-1); //lua_pop(L,1);//pop(1) lua_settop(L,1); } //#define lua_replace(L,idx) lua_copy(L, -1, (idx)), lua_pop(L, 1)) inline void replace(int idx){ lua_copy(L,-1,idx); lua_settop(L,1); } /* }============================================================== */ /* ** {============================================================== ** compatibility macros for unsigned conversions ** =============================================================== */#if defined(LUA_COMPAT_APIINTCASTS)//#define lua_pushunsigned(L,n) lua_pushinteger(L, Integer)(n)) inline void pushnsigned(lua_Integer n){ lua_pushinteger(L,n); }//#define lua_tounsignedx(L,i,is) (Unsigned)lua_tointegerx(L,i,is)) inline Unsigned tounsignedx(int idx, int *pisnum){ return (Unsigned)lua_tointegerx(L,idx, pisnum); }//#define lua_tounsigned(L,i) lua_tounsignedx(L,(i),NULL) inline Unsigned tounsigned(int idx){ return (Unsigned)lua_tointegerx(L,idx, NULL); }#endif /* }============================================================== */ /* ** {====================================================================== ** Debug API ** ======================================================================= */ /* activation record */ /* Functions to be called by the debugger in specific events */ inline void Hook( lua_Debug *ar ){ lua_Hook(L,ar); } inline int getstack( int level, lua_Debug *ar){ return lua_getstack(L,level, ar); } inline int getinfo( const char *what, lua_Debug *ar){ return lua_getinfo(L,what, ar); } inline const char *getlocal( const lua_Debug *ar, int n){ return lua_getlocal(L,ar,n); } inline const char *setlocal( const lua_Debug *ar, int n){ return lua_setlocal(L,ar,n); } inline const char *getupvalue( int funcindex, int n){ return lua_getupvalue(L,funcindex,n); } inline const char *setupvalue( int funcindex, int n){ return lua_setupvalue(L,funcindex, n); } inline void *upvalueid( int fidx, int n){ return lua_upvalueid(L,fidx,n); } inline void upvaluejoin( int fidx1, int n1,int fidx2, int n2){ lua_upvaluejoin(L,fidx1, n1, fidx2, n2); } inline void sethook( lua_Hook func, int mask, int count){ lua_sethook(L,func,mask,count); } inline lua_Hook gethook(){ return lua_gethook(L); } inline int gethookmask(){ return lua_gethookmask(L); } inline int gethookcount(){ return lua_gethookcount(L); }/********************************************//** * * AuxLib * ***********************************************/inlinevoid L_checkversion_(lua_Number ver, size_t sz){ luaL_checkversion_(L,ver,sz);}void L_checkversion(){ luaL_checkversion_(L, LUA_VERSION_NUM, LUAL_NUMSIZES);}inlineint L_getmetafield( int obj, const char *e){ return luaL_getmetafield(L,obj,e);}inlineint L_callmeta ( int obj, const char *e){ return luaL_callmeta(L,obj,e);}inlineconst char *L_tolstring(int idx, size_t *len){ return luaL_tolstring(L,idx,len);}inlineint L_argerror( int arg, const char *extramsg){ return luaL_argerror(L,arg,extramsg);}inlineconst char *L_checklstring(int arg, size_t *l){ return luaL_checklstring(L,arg,l)}inlineconst char *L_optlstring(int arg, const char *def, size_t *l){ return luaL_optlstring(L,arg,def,l);}inlinelua_Number L_checknumber(int arg){ return luaL_checknumber(L,arg);}inlinelua_Number L_optnumber(int arg, lua_Number def){ return luaL_optnumber(L,arg,def);}inlinelua_Integer L_checkinteger(int arg){ return luaL_checkinteger(L,arg);}inlinelua_Integer L_optinteger(int arg,lua_Integer def){ return luaL_optinteger(L,arg,def);}inlinevoid L_checkstack(int sz, const char *msg){ luaL_checkstack(L,sz,msg);}inlinevoid L_checktype(int arg, int t){ luaL_checktype(L,arg,t);}inlinevoid L_checkany(int arg){ luaL_checkany(L,arg);}inlineint L_newmetatable(const char *tname){ return luaL_newmetatable(L,tname);}inlinevoid L_setmetatable(const char *tname){ return luaL_setmetatable(L,tname);}inlinevoid *L_testudata(int ud, const char *tname){ return luaL_testudata(L,ud,tname);}inlinevoid *L_checkudata(int ud, const char *tname){ return luaL_checkudata(L,ud,tname);}inlinevoid L_where(int lvl){ luaL_where(L,lvl);}inlineint L_error(const char *fmt, ...){ va_list argp; va_start(argp, fmt); luaL_where(L, 1); lua_pushvfstring(L, fmt, argp); va_end(argp); lua_concat(L, 2); return lua_error(L);}inlineint L_checkoption(int arg, const char *def,const char *const lst[]){ return luaL_checkoption(L,arg,def,lst);}inlineint L_fileresult(int stat, const char *fname){ return luaL_fileresult(L,stat,fname);}inlineint L_execresult(int stat){ return luaL_execresult(L,stat);}/* pre-defined references */inlineint L_ref(int t){ return luaL_ref(L,t);}inlinevoid L_unref(int t, int ref){ luaL_unref(L,t,ref);}inlineint L_loadfilex(const char *filename,const char *mode){ return luaL_loadfilex(L,filename,mode);}// luaL_loadfile(L,f) luaL_loadfilex(L,f,NULL) inlineint L_loadfile(const char *filename){ return luaL_loadfilex(L,filename,NULL);}inlineint L_loadbufferx(const char *buff, size_t sz, const char *name, const char *mode){ return luaL_loadbufferx(L,buff,sz,name,mode);}inlineint L_loadstring(const char *s){ return luaL_loadstring(L,s);}inlinelua_State *L_newstate) (void){ return luaL_newstate()}inlinelua_Integer L_len(int idx){ return luaL_len(L,idx);}inlineconst char *L_gsub(const char *s, const char *p, const char *r){ return luaL_gsub(L,s,p,r);}inlinevoid L_setfuncs(const luaL_Reg *l, int nup){ luaL_setfuncs(L,l,nup);}inlineint L_getsubtable(int idx, const char *fname){ return luaL_getsubtable(L,idx,fname);}inlinevoid L_traceback(lua_State *L1,const char *msg, int level){ return luaL_traceback(L,L1,msg,level);}inlinevoid L_requiref(const char *modname, lua_CFunction openf, int glb){ luaL_requiref(L,modname,openf,glb);}/*** ===============================================================** some useful macros** ===============================================================*/inlinevoid L_newlibtabl(const char *name){ lua_createtable(L,0,sizeof(l)/sizeof((l)[0]) - 1);}inlinevoid L_newlib(const char *l){ luaL_checkversion(L); luaL_newlibtable(L,l); luaL_setfuncs(L,l,0);}inlinevoid L_argcheck(int cond, int numarg, const char *extramsg){ ((void)((cond) || luaL_argerror(L, (numarg), (extramsg))))}inlineconst char * L_checkstring(){ return luaL_checklstring(L, (n), NULL);}inlineconst char * L_optstring ( int arg, const char *def){ return luaL_optlstring(L, (arg), (d), NULL);}inlineconst char * L_typename(int idx){ return lua_typename(L, lua_type(L,(i)));}inlineint L_dofile(const char *fn){ return (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0));}inlineint L_dostring(const char *fn){ return (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0));}inlineint L_getmetatable(const char *fn){ return (lua_getfield(L, LUA_REGISTRYINDEX, (n)));}inlineint L_loadbuffer(const char *buff, size_t size, const char *name) return luaL_loadbufferx(L,s,sz,n,NULL);}/* compatibility with old module system */#if defined(LUA_COMPAT_MODULE)inlinevoid L_pushmodule(const char *modname, int sizehint){ luaL_pushmodule(L,modname,sizehint);}inlinevoid L_openlib(const char *libname, const luaL_Reg *l, int nup){ return luaL_openlib(L,libname,l,nup);}inlinevoid L_register( const char *n, const luaL_Reg *l){ (luaL_openlib(L,(n),(l),0));}#endif};#endif //__cplusplus
0 0
- Lua53
- Lua53 premake
- Codeforces 238E. Meeting Her 图论+记忆化搜索
- 2015070509 - 看书效率
- 管理定律-管人用人育人留人之道
- HDU4630:No Pain No Game(线段树)
- 2015070510 - 挑战失败
- Lua53
- mac下安装、配置nexus,构建maven私服
- IIR递归高斯滤波总结
- Spring Bean的生命周期(非常详细)
- win8 64bit and theano (cpu only)
- java -D参数简化加入多个jar【简化设置classpath】
- Linux关闭ping服务
- 快速傅里叶变换用于长整数相乘
- UIImage imageNamed格式要求