luaur-code-gen 0.1.0

Native (A64/X64) code generation for Luau (Rust).
Documentation
use crate::macros::codegen_assert::CODEGEN_ASSERT;
use crate::records::block_iterator_wrapper::BlockIteratorWrapper;
use crate::records::cfg_info::CfgInfo;

pub fn dom_children(cfg: &CfgInfo, block_idx: u32) -> BlockIteratorWrapper {
    if !(block_idx < cfg.dom_children_offsets.len() as u32) {
        CODEGEN_ASSERT!(false);
    }

    let start = cfg.dom_children_offsets[block_idx as usize];
    let end = if (block_idx + 1) < cfg.dom_children_offsets.len() as u32 {
        cfg.dom_children_offsets[(block_idx + 1) as usize]
    } else {
        cfg.dom_children.len() as u32
    };

    BlockIteratorWrapper {
        itBegin: unsafe { cfg.dom_children.as_ptr().add(start as usize) },
        itEnd: unsafe { cfg.dom_children.as_ptr().add(end as usize) },
    }
}