Skip to main content

luaur_code_gen/functions/
try_find_local.rs

1use core::ffi::c_void;
2
3#[repr(C)]
4pub struct Proto {
5    pub sizelocvars: i32,
6    pub locvars: *const LocVar,
7}
8
9#[repr(C)]
10pub struct LocVar {
11    pub reg: i32,
12    pub startpc: i32,
13    pub endpc: i32,
14}
15
16pub unsafe fn try_find_local(proto: *const Proto, reg: i32, pcpos: i32) -> *const LocVar {
17    let proto = &*proto;
18
19    for i in 0..proto.sizelocvars {
20        let local = &*proto.locvars.add(i as usize);
21
22        if reg == local.reg && pcpos >= local.startpc && pcpos < local.endpc {
23            return local as *const LocVar;
24        }
25    }
26
27    core::ptr::null::<LocVar>()
28}