diff options
author | Alex Orlenko <zxteam@protonmail.com> | 2019-09-27 00:31:27 +0100 |
---|---|---|
committer | Alex Orlenko <zxteam@protonmail.com> | 2019-09-29 12:42:07 +0100 |
commit | 53b352466ecfc8b8ab72e19b1851115674e37ab5 (patch) | |
tree | 1c0321f5ea799d2ed9b0d684ed668274e760be5b /src/ffi/mod.rs | |
parent | 14a68dd6d287e41f0d80e60e16a3f2b9ebccf98e (diff) | |
download | mlua-53b352466ecfc8b8ab72e19b1851115674e37ab5.zip |
Replace ffi module with implementation from "jcmoyer/rust-lua53" crate
Diffstat (limited to 'src/ffi/mod.rs')
-rw-r--r-- | src/ffi/mod.rs | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/src/ffi/mod.rs b/src/ffi/mod.rs new file mode 100644 index 0000000..fbe9416 --- /dev/null +++ b/src/ffi/mod.rs @@ -0,0 +1,310 @@ +// The MIT License (MIT) +// +// Copyright (c) 2014 J.C. Moyer +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +//! Low level bindings to Lua. + +#![allow(non_camel_case_types, non_snake_case, dead_code)] + +use std::os::raw::c_int; + +// This is more or less in the order it appears in the Lua manual, with the +// exception of constants, which appear scattered throughout the manual text. + +// luaconf.h functions +pub use self::luaconf::lua_numtointeger; + +// C API types +pub use self::lua::{ + lua_Alloc, + lua_CFunction, + lua_KContext, + lua_Debug, + lua_Hook, + lua_Integer, + lua_KFunction, + lua_Number, + lua_Reader, + lua_State, + lua_Unsigned, + lua_Writer +}; + +// C API functions +pub use self::lua::{ + lua_absindex, + lua_arith, + lua_atpanic, + lua_call, + lua_callk, + lua_checkstack, + lua_close, + lua_compare, + lua_concat, + lua_copy, + lua_createtable, + lua_dump, + lua_error, + lua_gc, + lua_getallocf, + lua_getextraspace, + lua_getfield, + lua_getglobal, + lua_gethook, + lua_gethookcount, + lua_gethookmask, + lua_geti, + lua_getinfo, + lua_getlocal, + lua_getmetatable, + lua_getstack, + lua_gettable, + lua_gettop, + lua_getupvalue, + lua_getuservalue, + lua_insert, + lua_isboolean, + lua_iscfunction, + lua_isfunction, + lua_isinteger, + lua_islightuserdata, + lua_isnil, + lua_isnone, + lua_isnoneornil, + lua_isnumber, + lua_isstring, + lua_istable, + lua_isthread, + lua_isuserdata, + lua_isyieldable, + lua_len, + lua_load, + lua_newstate, + lua_newtable, + lua_newthread, + lua_newuserdata, + lua_next, + lua_pcall, + lua_pcallk, + lua_pop, + lua_pushboolean, + lua_pushcclosure, + lua_pushcfunction, + lua_pushfstring, + lua_pushglobaltable, + lua_pushinteger, + lua_pushlightuserdata, + lua_pushliteral, + lua_pushlstring, + lua_pushnil, + lua_pushnumber, + lua_pushstring, + lua_pushthread, + lua_pushvalue, + // omitted: lua_pushvfstring + lua_rawequal, + lua_rawget, + lua_rawgeti, + lua_rawgetp, + lua_rawlen, + lua_rawset, + lua_rawseti, + lua_rawsetp, + lua_register, + lua_remove, + lua_replace, + lua_resume, + lua_rotate, + lua_setallocf, + lua_setfield, + lua_setglobal, + lua_sethook, + lua_seti, + lua_setlocal, + lua_setmetatable, + lua_settable, + lua_settop, + lua_setupvalue, + lua_setuservalue, + lua_status, + lua_stringtonumber, + lua_toboolean, + lua_tocfunction, + lua_tointeger, + lua_tointegerx, + lua_tolstring, + lua_tonumber, + lua_tonumberx, + lua_topointer, + lua_tostring, + lua_tothread, + lua_touserdata, + lua_type, + lua_typename, + lua_upvalueid, + lua_upvalueindex, + lua_upvaluejoin, + lua_version, + lua_xmove, + lua_yield, + lua_yieldk +}; + +// auxiliary library types +pub use self::lauxlib::{ + luaL_Buffer, + luaL_Reg, + luaL_Stream +}; + +// auxiliary library functions +pub use self::lauxlib::{ + luaL_addchar, + luaL_addlstring, + luaL_addsize, + luaL_addstring, + luaL_addvalue, + luaL_argcheck, + luaL_argerror, + luaL_buffinit, + luaL_buffinitsize, + luaL_callmeta, + luaL_checkany, + luaL_checkint, + luaL_checkinteger, + luaL_checklong, + luaL_checklstring, + luaL_checknumber, + luaL_checkoption, + luaL_checkstack, + luaL_checkstring, + luaL_checktype, + luaL_checkudata, + luaL_checkversion, + luaL_dofile, + luaL_dostring, + luaL_error, + luaL_execresult, + luaL_fileresult, + luaL_getmetafield, + luaL_getmetatable, + luaL_getsubtable, + luaL_gsub, + luaL_len, + luaL_loadbuffer, + luaL_loadbufferx, + luaL_loadfile, + luaL_loadfilex, + luaL_loadstring, + luaL_newlib, + luaL_newlibtable, + luaL_newmetatable, + luaL_newstate, + luaL_optint, + luaL_optinteger, + luaL_optlong, + luaL_optlstring, + luaL_optnumber, + luaL_optstring, + luaL_prepbuffer, + luaL_prepbuffsize, + luaL_pushresult, + luaL_pushresultsize, + luaL_ref, + luaL_requiref, + luaL_setfuncs, + luaL_setmetatable, + luaL_testudata, + luaL_tolstring, + luaL_traceback, + luaL_typename, + luaL_unref, + luaL_where +}; + +// lualib.h functions +pub use self::lualib::{ + luaopen_base, + luaopen_coroutine, + luaopen_table, + luaopen_io, + luaopen_os, + luaopen_string, + luaopen_utf8, + luaopen_bit32, + luaopen_math, + luaopen_debug, + luaopen_package, + + luaL_openlibs +}; + +// constants from lua.h +pub use self::lua::{ + LUA_MULTRET, + LUA_REGISTRYINDEX, + + LUA_RIDX_MAINTHREAD, LUA_RIDX_GLOBALS, + + LUA_OPADD, LUA_OPSUB, LUA_OPMUL, LUA_OPDIV, LUA_OPIDIV, + LUA_OPMOD, LUA_OPPOW, LUA_OPUNM, + LUA_OPBNOT, LUA_OPBAND, LUA_OPBOR, LUA_OPBXOR, LUA_OPSHL, LUA_OPSHR, + LUA_OPEQ, LUA_OPLT, LUA_OPLE, + + LUA_OK, LUA_YIELD, LUA_ERRRUN, LUA_ERRSYNTAX, LUA_ERRMEM, LUA_ERRGCMM, LUA_ERRERR, + + LUA_TNONE, LUA_TNIL, LUA_TNUMBER, LUA_TBOOLEAN, LUA_TSTRING, LUA_TTABLE, + LUA_TFUNCTION, LUA_TUSERDATA, LUA_TTHREAD, LUA_TLIGHTUSERDATA, + + LUA_HOOKCALL, LUA_HOOKRET, LUA_HOOKTAILCALL, LUA_HOOKLINE, LUA_HOOKCOUNT, + LUA_MASKCALL, LUA_MASKRET, LUA_MASKLINE, LUA_MASKCOUNT, + + LUA_GCSTOP, LUA_GCRESTART, LUA_GCCOLLECT, LUA_GCCOUNT, LUA_GCCOUNTB, + LUA_GCSTEP, LUA_GCSETPAUSE, LUA_GCSETSTEPMUL, LUA_GCISRUNNING, + + LUA_MINSTACK +}; + +// constants from lauxlib.h +pub use self::lauxlib::{ + LUA_REFNIL, LUA_NOREF, + LUA_ERRFILE, + LUA_FILEHANDLE +}; + +// constants from lualib.h +pub use self::lualib::{ + LUA_COLIBNAME, LUA_TABLIBNAME, LUA_IOLIBNAME, LUA_OSLIBNAME, LUA_STRLIBNAME, + LUA_UTF8LIBNAME, LUA_BITLIBNAME, LUA_MATHLIBNAME, LUA_DBLIBNAME, LUA_LOADLIBNAME +}; + +// Not actually defined in lua.h / luaconf.h +pub const LUA_MAX_UPVALUES: c_int = 255; + +#[allow(unused_imports, dead_code, non_camel_case_types)] +mod glue { + include!(concat!(env!("OUT_DIR"), "/glue.rs")); +} + +mod luaconf; +mod lua; +mod lauxlib; +mod lualib; |