theseus_mlua_sys/
lib.rs

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