luaur_compiler/methods/
cost_visitor_loop.rs1use crate::records::cost::Cost;
2use crate::records::cost_visitor::CostVisitor;
3use luaur_ast::records::ast_stat_block::AstStatBlock;
4
5impl CostVisitor {
6 pub fn loop_item(&mut self, body: *mut AstStatBlock, iter_cost: Cost, factor: i32) {
7 let before = self.result;
8
9 self.result = Cost::default();
10
11 unsafe {
12 if !body.is_null() {
13 self.visit_ast_stat_block(body as *mut core::ffi::c_void);
14 }
15 }
16
17 self.result =
18 before.operator_add(&self.result.operator_add(&iter_cost).operator_mul(factor));
19 }
20}
21
22#[allow(dead_code)]
23pub fn cost_visitor_loop(
24 this: &mut CostVisitor,
25 body: *mut AstStatBlock,
26 iter_cost: Cost,
27 factor: i32,
28) {
29 this.loop_item(body, iter_cost, factor);
30}