extern crate alloc;
use alloc::string::String;
use luaur_ast::records::ast_expr::AstExpr;
use crate::records::module_info::ModuleInfo;
use crate::type_aliases::module_name_type::ModuleName;
use crate::type_aliases::module_ptr_module_resolver::ModulePtr;
#[repr(C)]
pub struct ModuleResolver {
pub vtable: ModuleResolverVtable,
}
#[derive(Clone, Copy)]
pub struct ModuleResolverVtable {
pub resolve_module_info: unsafe fn(
*mut ModuleResolver,
current_module_name: &ModuleName,
path_expr: *const AstExpr,
) -> Option<ModuleInfo>,
pub get_module: unsafe fn(*const ModuleResolver, module_name: &ModuleName) -> Option<ModulePtr>,
pub module_exists: unsafe fn(*const ModuleResolver, module_name: &ModuleName) -> bool,
pub get_human_readable_module_name:
unsafe fn(*const ModuleResolver, module_name: &ModuleName) -> String,
}