luaur-compiler 0.1.2

Luau source-to-bytecode compiler (Rust).
Documentation
use crate::records::cost::Cost;
use crate::records::cost_visitor::CostVisitor;
use luaur_ast::records::ast_stat_block::AstStatBlock;

impl CostVisitor {
    pub fn loop_item(&mut self, body: *mut AstStatBlock, iter_cost: Cost, factor: i32) {
        let before = self.result;

        self.result = Cost::default();

        unsafe {
            if !body.is_null() {
                self.visit_ast_stat_block(body as *mut core::ffi::c_void);
            }
        }

        self.result =
            before.operator_add(&self.result.operator_add(&iter_cost).operator_mul(factor));
    }
}

#[allow(dead_code)]
pub fn cost_visitor_loop(
    this: &mut CostVisitor,
    body: *mut AstStatBlock,
    iter_cost: Cost,
    factor: i32,
) {
    this.loop_item(body, iter_cost, factor);
}