code_gen/common/
source.rs1use crate::{CodeBuffer, Statement, WithStatements};
2
3#[derive(Default)]
5pub struct Source {
6 statements: Vec<Box<dyn Statement>>,
7}
8
9impl From<Source> for Vec<Box<dyn Statement>> {
10 fn from(source: Source) -> Self {
11 source.statements
12 }
13}
14
15impl WithStatements for Source {
16 fn statements(&self) -> &[Box<dyn Statement>] {
17 self.statements.as_slice()
18 }
19
20 fn add_boxed_statement(&mut self, statement: Box<dyn Statement>) {
21 self.statements.push(statement)
22 }
23}
24
25impl Statement for Source {
26 fn write(&self, b: &mut CodeBuffer, level: usize) {
27 self.statements.iter().for_each(|s| s.write(b, level))
28 }
29}