luaur_analysis/functions/
try_get_global_binding.rs1use crate::records::binding::Binding;
2use crate::records::global_types::GlobalTypes;
3use crate::records::symbol::Symbol;
4use std::ffi::CString;
5use std::sync::Arc;
6
7pub fn try_get_global_binding(globals: &mut GlobalTypes, name: &str) -> Option<Binding> {
8 let name = CString::new(name).ok()?;
9 let ast_name = unsafe {
10 (*(Arc::as_ptr(&globals.global_names.names)
11 as *mut luaur_ast::records::ast_name_table::AstNameTable))
12 .get_or_add(name.as_ptr(), name.as_bytes().len())
13 };
14 globals
15 .global_scope
16 .bindings
17 .get(&Symbol::from_global(ast_name))
18 .cloned()
19}