luaur_analysis/records/
module_resolver.rs1extern crate alloc;
2
3use alloc::string::String;
4
5use luaur_ast::records::ast_expr::AstExpr;
6
7use crate::records::module_info::ModuleInfo;
8use crate::type_aliases::module_name_type::ModuleName;
9use crate::type_aliases::module_ptr_module_resolver::ModulePtr;
10
11#[repr(C)]
15pub struct ModuleResolver {
16 pub vtable: ModuleResolverVtable,
17}
18
19#[derive(Clone, Copy)]
20pub struct ModuleResolverVtable {
21 pub resolve_module_info: unsafe fn(
24 *mut ModuleResolver,
25 current_module_name: &ModuleName,
26 path_expr: *const AstExpr,
27 ) -> Option<ModuleInfo>,
28 pub get_module: unsafe fn(*const ModuleResolver, module_name: &ModuleName) -> Option<ModulePtr>,
30 pub module_exists: unsafe fn(*const ModuleResolver, module_name: &ModuleName) -> bool,
32 pub get_human_readable_module_name:
33 unsafe fn(*const ModuleResolver, module_name: &ModuleName) -> String,
34}