luaur_analysis/functions/
try_get_global_binding_ref.rs1use crate::records::binding::Binding;
2use crate::records::global_types::GlobalTypes;
3use crate::records::symbol::Symbol;
4use std::ffi::CString;
5
6pub fn try_get_global_binding_ref(globals: &mut GlobalTypes, name: &str) -> *mut Binding {
7 let name = match CString::new(name) {
8 Ok(name) => name,
9 Err(_) => return core::ptr::null_mut(),
10 };
11
12 let ast_name = globals.global_names.names.get(name.as_ptr());
13 if ast_name.value.is_null() {
14 return core::ptr::null_mut();
15 }
16
17 if let Some(binding) = globals
18 .global_scope
19 .bindings
20 .get(&Symbol::from_global(ast_name))
21 {
22 binding as *const Binding as *mut Binding
23 } else {
24 core::ptr::null_mut()
25 }
26}