luaur_reduce_cli/methods/
reducer_pruned_span.rs1use alloc::vec::Vec;
2use luaur_ast::records::ast_stat::AstStat;
3use luaur_ast::records::ast_stat_block::AstStatBlock;
4
5use crate::records::reducer::Reducer;
6use crate::type_aliases::span::Span;
7
8impl Reducer {
9 pub fn pruned_span(
10 &self,
11 block: *mut AstStatBlock,
12 span1: Span,
13 span2: Span,
14 ) -> Vec<*mut AstStat> {
15 let mut result: Vec<*mut AstStat> = Vec::new();
16
17 unsafe {
18 if block.is_null() {
19 return result;
20 }
21
22 let data = (*block).body.begin();
24 if data.is_null() {
25 return result;
26 }
27
28 for i in span1.0..span1.1 {
29 result.push(*data.add(i));
30 }
31
32 for i in span2.0..span2.1 {
33 result.push(*data.add(i));
34 }
35 }
36
37 result
38 }
39}
40
41pub fn reducer_pruned_span(
42 this: &Reducer,
43 block: *mut AstStatBlock,
44 span1: Span,
45 span2: Span,
46) -> Vec<*mut AstStat> {
47 this.pruned_span(block, span1, span2)
48}