use crate::bfic::BfCode;
use crate::celltype::BfCell;
use crate::error::ParseError;
#[derive(Debug)]
pub struct BfFrame<T: BfCell> {
codes: Vec<BfCode<T>>,
pc: usize, }
impl<T> BfFrame<T>
where
T: BfCell,
{
pub fn new(source_codes: impl std::io::BufRead) -> Result<BfFrame<T>, ParseError> {
Ok(Self {
codes: BfCode::parse(source_codes)?,
pc: 0,
})
}
pub fn codes(&self) -> &Vec<BfCode<T>> {
&(self.codes)
}
pub fn pc(&self) -> &usize {
&(self.pc)
}
pub fn jump(&mut self, new_pc: usize) {
self.pc = new_pc
}
}