gmodx 0.3.0

A swiss army knife for creating binary modules for Garry's Mod in Rust
Documentation
mod error;
pub use error::Error;

mod state;
pub use state::State;

pub mod bridge;

mod user_data;
pub use user_data::{UserData, UserDataMethods};

mod function;
pub use function::{CFunction, FunctionReturn, RawCFunction, RustFunction, RustFunctionResult};

mod push;
pub use push::Push;

mod is_number;
pub use is_number::IsNumber;

pub use raw::LUA_GLOBALSINDEX;

pub const MAX_SAFE_INTEGER: i64 = (1 << 53) - 1;
pub const MIN_SAFE_INTEGER: i64 = -MAX_SAFE_INTEGER;

pub const fn upvalue_index(i: i32) -> i32 {
    LUA_GLOBALSINDEX - i
}

pub const TNONE: i32 = raw::LUA_TNONE;
pub const TNIL: i32 = raw::LUA_TNIL as i32;
pub const TBOOLEAN: i32 = raw::LUA_TBOOLEAN as i32;
pub const TLIGHTUSERDATA: i32 = raw::LUA_TLIGHTUSERDATA as i32;
pub const TNUMBER: i32 = raw::LUA_TNUMBER as i32;
pub const TSTRING: i32 = raw::LUA_TSTRING as i32;
pub const TTABLE: i32 = raw::LUA_TTABLE as i32;
pub const TFUNCTION: i32 = raw::LUA_TFUNCTION as i32;
pub const TUSERDATA: i32 = raw::LUA_TUSERDATA as i32;
pub const TTHREAD: i32 = raw::LUA_TTHREAD as i32;

pub const MULTRET: i32 = raw::LUA_MULTRET;

pub const OK: i32 = raw::LUA_OK as i32;
pub const YIELD: i32 = raw::LUA_YIELD as i32;
pub const ERRRUN: i32 = raw::LUA_ERRRUN as i32;
pub const ERRSYNTAX: i32 = raw::LUA_ERRSYNTAX as i32;
pub const ERRMEM: i32 = raw::LUA_ERRMEM as i32;
pub const ERRERR: i32 = raw::LUA_ERRERR as i32;
pub const ERRFILE: i32 = raw::LUA_ERRFILE as i32;

pub const REGISTRYINDEX: i32 = raw::LUA_REGISTRYINDEX;
pub const ENVIRONINDEX: i32 = raw::LUA_ENVIRONINDEX;
pub const GLOBALSINDEX: i32 = raw::LUA_GLOBALSINDEX;

pub type NUMBER = raw::lua_Number;
pub type Number = NUMBER;

pub const IDSIZE: u32 = raw::LUA_IDSIZE;

pub type CStr<'a> = &'a std::ffi::CStr;

pub use raw::lua_Debug as Debug;

pub mod raw {
    #![allow(non_upper_case_globals)]
    #![allow(non_camel_case_types)]
    #![allow(non_snake_case)]
    include!(concat!(env!("OUT_DIR"), "/lua.rs"));
}