use crate::{Block, Inst, Value, value::fmt_vals};
use std::fmt::Display;
#[derive(Default, Clone)]
pub struct BlockData {
pub(crate) params: Vec<Value>,
pub(crate) insts: Vec<Inst>,
}
impl BlockData {
pub fn get_params(&self) -> &[Value] {
&self.params
}
pub fn get_insts(&self) -> &[Inst] {
&self.insts
}
pub fn get_successors(&self) -> Vec<Block> {
self.insts
.last()
.map(|last| last.successors())
.unwrap_or_default()
}
}
impl Display for BlockData {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
writeln!(f, "({}):", fmt_vals(&self.params))?;
for inst in &self.insts {
writeln!(f, " {}", inst)?;
}
writeln!(f)
}
}