use std::fmt::Display; use crate::{error::Error, parts::Relocatable}; pub struct LinkState<'data> { pub relocatables: Vec>, } impl<'data> LinkState<'data> { pub fn add_relocatable( &mut self, relocatable: Box, ) -> Result<(), Error> { self.relocatables.push(relocatable); Ok(()) } pub fn total_size(&self) -> Result { let mut result = 0u64; for o in self.relocatables.iter() { for s in o.sections() { result += s?.size()?; } } Ok(result) } } impl Display for LinkState<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { writeln!(f, "===Relocatables===")?; for r in &self.relocatables { write!(f, "{}", r)?; } Ok(()) } }