use std::ffi::c_void;
#[derive(Clone, Copy)]
#[repr(C)]
pub struct LuauDiagnostic {
pub(crate) line: u32,
pub(crate) col: u32,
pub(crate) end_line: u32,
pub(crate) end_col: u32,
pub(crate) severity: u32,
pub(crate) message: *const u8,
pub(crate) message_len: u32,
}
#[derive(Clone, Copy)]
#[repr(C)]
pub struct LuauCheckResult {
pub(crate) _internal: *mut c_void,
pub(crate) diagnostics: *const LuauDiagnostic,
pub(crate) diagnostic_count: u32,
pub(crate) timed_out: u32,
pub(crate) cancelled: u32,
}
#[derive(Clone, Copy)]
#[repr(C)]
pub struct LuauString {
pub(crate) _internal: *mut c_void,
pub(crate) data: *const u8,
pub(crate) len: u32,
}
#[derive(Clone, Copy)]
#[repr(C)]
pub struct LuauEntrypointParam {
pub(crate) name: *const u8,
pub(crate) name_len: u32,
pub(crate) annotation: *const u8,
pub(crate) annotation_len: u32,
pub(crate) optional: u32,
}
#[derive(Clone, Copy)]
#[repr(C)]
pub struct LuauEntrypointSchemaResult {
pub(crate) _internal: *mut c_void,
pub(crate) params: *const LuauEntrypointParam,
pub(crate) param_count: u32,
pub(crate) error: *const u8,
pub(crate) error_len: u32,
}
#[derive(Clone, Copy)]
#[repr(C)]
pub struct LuauCheckOptions {
pub(crate) module_name: *const u8,
pub(crate) module_name_len: u32,
pub(crate) has_timeout: u32,
pub(crate) timeout_seconds: f64,
pub(crate) cancellation_token: *mut LuauCancellationToken,
}
pub enum LuauChecker {}
pub enum LuauCancellationToken {}
unsafe extern "C" {
pub(crate) fn luau_checker_new() -> *mut LuauChecker;
pub(crate) fn luau_checker_free(checker: *mut LuauChecker);
pub(crate) fn luau_cancellation_token_new() -> *mut LuauCancellationToken;
pub(crate) fn luau_cancellation_token_free(token: *mut LuauCancellationToken);
pub(crate) fn luau_cancellation_token_cancel(token: *mut LuauCancellationToken);
pub(crate) fn luau_cancellation_token_reset(token: *mut LuauCancellationToken);
pub(crate) fn luau_checker_add_definitions(
checker: *mut LuauChecker,
defs: *const u8,
defs_len: u32,
module_name: *const u8,
module_name_len: u32,
) -> LuauString;
pub(crate) fn luau_checker_check(
checker: *mut LuauChecker,
source: *const u8,
source_len: u32,
options: *const LuauCheckOptions,
) -> LuauCheckResult;
pub(crate) fn luau_extract_entrypoint_schema(
source: *const u8,
source_len: u32,
) -> LuauEntrypointSchemaResult;
pub(crate) fn luau_check_result_free(result: LuauCheckResult);
pub(crate) fn luau_entrypoint_schema_result_free(result: LuauEntrypointSchemaResult);
pub(crate) fn luau_string_free(value: LuauString);
}