#![allow(clippy::missing_safety_doc)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
use std::ffi::{c_char, c_double, c_float, c_int, c_void};
pub type lua_CompileConstant = *mut c_void;
pub type lua_LibraryMemberTypeCallback =
extern "C" fn(library: *const c_char, member: *const c_char) -> c_int;
pub type lua_LibraryMemberConstantCallback = extern "C" fn(
library: *const c_char,
member: *const c_char,
constant: *mut lua_CompileConstant,
);
#[repr(C)]
pub struct lua_CompileOptions {
pub optimizationLevel: c_int,
pub debugLevel: c_int,
pub typeInfoLevel: c_int,
pub coverageLevel: c_int,
pub vectorLib: *const c_char,
pub vectorCtor: *const c_char,
pub vectorType: *const c_char,
pub mutableGlobals: *const *const c_char,
pub userdataTypes: *const *const c_char,
pub librariesWithKnownMembers: *const *const c_char,
pub libraryMemberTypeCb: Option<lua_LibraryMemberTypeCallback>,
pub libraryMemberConstantCb: Option<lua_LibraryMemberConstantCallback>,
pub disabledBuiltins: *const *const c_char,
}
unsafe extern "C" {
pub fn luau_compile(
source: *const c_char,
size: usize,
options: *mut lua_CompileOptions,
outsize: *mut usize,
) -> *mut c_char;
pub fn luau_set_compile_constant_nil(constant: *mut lua_CompileConstant);
pub fn luau_set_compile_constant_boolean(constant: *mut lua_CompileConstant, b: c_int);
pub fn luau_set_compile_constant_number(constant: *mut lua_CompileConstant, n: c_double);
pub fn luau_set_compile_constant_vector(
constant: *mut lua_CompileConstant,
x: c_float,
y: c_float,
z: c_float,
w: c_float,
);
pub fn luau_set_compile_constant_string(
constant: *mut lua_CompileConstant,
s: *const c_char,
l: usize,
);
}