use crate::macros::markobject::markobject;
use crate::macros::markvalue::markvalue;
use crate::macros::stringmark::stringmark;
use crate::records::global_state::global_State;
use crate::records::proto::Proto;
#[allow(non_snake_case)]
pub(crate) unsafe fn traverseproto(g: *mut global_State, f: *mut Proto) {
if !(*f).source.is_null() {
stringmark!((*f).source);
}
if !(*f).debugname.is_null() {
stringmark!((*f).debugname);
}
for i in 0..(*f).sizek as usize {
markvalue!(g, (*f).k.add(i));
}
for i in 0..(*f).sizeupvalues as usize {
let upvalue = *(*f).upvalues.add(i);
if !upvalue.is_null() {
stringmark!(upvalue);
}
}
for i in 0..(*f).sizep as usize {
let p = *(*f).p.add(i);
if !p.is_null() {
markobject!(g, p);
}
}
for i in 0..(*f).sizelocvars as usize {
let varname = (*(*f).locvars.add(i)).varname;
if !varname.is_null() {
stringmark!(varname);
}
}
}