use crate::{
metadata::{
diagnostics::DiagnosticCategory,
loader::{LoaderContext, MetadataLoader},
tables::{ParamPtrRaw, TableId},
},
Result,
};
pub(crate) struct ParamPtrLoader;
impl MetadataLoader for ParamPtrLoader {
fn load(&self, context: &LoaderContext) -> Result<()> {
let Some(header) = context.meta else {
return Ok(());
};
let Some(table) = header.table::<ParamPtrRaw>() else {
return Ok(());
};
for row in table {
let token_msg = || format!("param ptr 0x{:08x}", row.token.value());
let Some(owned) =
context.handle_result(row.to_owned(), DiagnosticCategory::Table, token_msg)?
else {
continue;
};
context.param_ptr.insert(row.token, owned);
}
Ok(())
}
fn table_id(&self) -> Option<TableId> {
Some(TableId::ParamPtr)
}
fn dependencies(&self) -> &'static [TableId] {
&[]
}
}