impl CorrelationEngine {
#[provable_contracts_macros::contract("pmat-core.yaml", equation = "check_compliance")]
pub fn lookup_source_location(
&self,
wasm_address: u64,
line_program_mappings: &[(u64, Location)],
) -> Option<Location> {
line_program_mappings
.iter()
.find(|(addr, _)| *addr == wasm_address)
.map(|(_, loc)| loc.clone())
}
#[provable_contracts_macros::contract("pmat-core.yaml", equation = "check_compliance")]
pub fn lookup_wasm_addresses(
&self,
source_line: u32,
line_program_mappings: &[(u64, Location)],
) -> DeepWasmResult<Vec<u64>> {
let addresses: Vec<u64> = line_program_mappings
.iter()
.filter(|(_, loc)| loc.line == source_line)
.map(|(addr, _)| *addr)
.collect();
Ok(addresses)
}
}