factorio_mlua_sys/
lib.rs

1//! Low level bindings to Lua 5.4/5.3/5.2/5.1 (including LuaJIT) and Roblox Luau.
2
3#![allow(non_camel_case_types, non_snake_case, dead_code)]
4#![allow(clippy::missing_safety_doc)]
5#![doc(test(attr(deny(warnings))))]
6#![cfg_attr(docsrs, feature(doc_cfg))]
7
8use std::os::raw::c_int;
9
10#[cfg(feature = "lua-factorio")]
11extern crate link_cplusplus;
12
13#[cfg(any(feature = "lua54", doc))]
14pub use lua54::*;
15
16#[cfg(any(feature = "lua53", doc))]
17pub use lua53::*;
18
19#[cfg(any(feature = "lua52", doc))]
20pub use lua52::*;
21
22#[cfg(any(feature = "lua51", feature = "luajit", doc))]
23pub use lua51::*;
24
25#[cfg(any(feature = "luau", doc))]
26pub use luau::*;
27
28#[cfg(feature = "lua-factorio")]
29pub use lua_factorio::*;
30
31#[cfg(any(
32    feature = "lua54",
33    feature = "lua53",
34    feature = "lua52",
35    feature = "lua-factorio"
36))]
37#[doc(hidden)]
38pub const LUA_MAX_UPVALUES: c_int = 255;
39
40#[cfg(any(feature = "lua51", all(feature = "luajit", not(feature = "vendored"))))]
41#[doc(hidden)]
42pub const LUA_MAX_UPVALUES: c_int = 60;
43
44#[cfg(all(feature = "luajit", feature = "vendored"))]
45#[doc(hidden)]
46pub const LUA_MAX_UPVALUES: c_int = 120;
47
48#[cfg(feature = "luau")]
49#[doc(hidden)]
50pub const LUA_MAX_UPVALUES: c_int = 200;
51
52// I believe `luaL_traceback` < 5.4 requires this much free stack to not error.
53// 5.4 uses `luaL_Buffer`
54#[doc(hidden)]
55pub const LUA_TRACEBACK_STACK: c_int = 11;
56
57// The minimum alignment guaranteed by the architecture. This value is used to
58// add fast paths for low alignment values.
59// Copied from https://github.com/rust-lang/rust/blob/master/library/std/src/sys/common/alloc.rs
60#[cfg(all(any(
61    target_arch = "x86",
62    target_arch = "arm",
63    target_arch = "mips",
64    target_arch = "powerpc",
65    target_arch = "powerpc64",
66    target_arch = "sparc",
67    target_arch = "asmjs",
68    target_arch = "wasm32",
69    target_arch = "hexagon",
70    all(target_arch = "riscv32", not(target_os = "espidf")),
71    all(target_arch = "xtensa", not(target_os = "espidf")),
72)))]
73#[doc(hidden)]
74pub const SYS_MIN_ALIGN: usize = 8;
75#[cfg(all(any(
76    target_arch = "x86_64",
77    target_arch = "aarch64",
78    target_arch = "mips64",
79    target_arch = "s390x",
80    target_arch = "sparc64",
81    target_arch = "riscv64",
82    target_arch = "wasm64",
83)))]
84#[doc(hidden)]
85pub const SYS_MIN_ALIGN: usize = 16;
86// The allocator on the esp-idf platform guarentees 4 byte alignment.
87#[cfg(all(any(
88    all(target_arch = "riscv32", target_os = "espidf"),
89    all(target_arch = "xtensa", target_os = "espidf"),
90)))]
91#[doc(hidden)]
92pub const SYS_MIN_ALIGN: usize = 4;
93
94#[macro_use]
95mod macros;
96
97#[cfg(any(feature = "lua54", doc))]
98#[cfg_attr(docsrs, doc(cfg(feature = "lua54")))]
99pub mod lua54;
100
101#[cfg(any(feature = "lua53", doc))]
102#[cfg_attr(docsrs, doc(cfg(feature = "lua53")))]
103pub mod lua53;
104
105#[cfg(any(feature = "lua52", doc))]
106#[cfg_attr(docsrs, doc(cfg(feature = "lua52")))]
107pub mod lua52;
108
109#[cfg(any(feature = "lua51", feature = "luajit", doc))]
110#[cfg_attr(docsrs, doc(cfg(any(feature = "lua51", feature = "luajit"))))]
111pub mod lua51;
112
113#[cfg(any(feature = "luau", doc))]
114#[cfg_attr(docsrs, doc(cfg(feature = "luau")))]
115pub mod luau;
116
117#[cfg(feature = "lua-factorio")]
118pub mod lua_factorio;