Skip to main content

luaur_code_gen/functions/
dom_children.rs

1use crate::macros::codegen_assert::CODEGEN_ASSERT;
2use crate::records::block_iterator_wrapper::BlockIteratorWrapper;
3use crate::records::cfg_info::CfgInfo;
4
5pub fn dom_children(cfg: &CfgInfo, block_idx: u32) -> BlockIteratorWrapper {
6    if !(block_idx < cfg.dom_children_offsets.len() as u32) {
7        CODEGEN_ASSERT!(false);
8    }
9
10    let start = cfg.dom_children_offsets[block_idx as usize];
11    let end = if (block_idx + 1) < cfg.dom_children_offsets.len() as u32 {
12        cfg.dom_children_offsets[(block_idx + 1) as usize]
13    } else {
14        cfg.dom_children.len() as u32
15    };
16
17    BlockIteratorWrapper {
18        itBegin: unsafe { cfg.dom_children.as_ptr().add(start as usize) },
19        itEnd: unsafe { cfg.dom_children.as_ptr().add(end as usize) },
20    }
21}