feat: impl some conversion methods on CheckedModule

This commit is contained in:
rvcas 2024-03-08 19:15:22 -05:00 committed by Lucas
parent d55b7844f0
commit cb0ae0c074
2 changed files with 21 additions and 6 deletions

View File

@ -728,12 +728,6 @@ where
input_path: path,
};
let mut module_bytes = vec![];
ciborium::into_writer(&checked_module, &mut module_bytes).unwrap();
println!("{name}\n{}", hex::encode(&module_bytes));
self.checked_modules.insert(name, checked_module);
}
}

View File

@ -9,6 +9,7 @@ use aiken_lang::{
use petgraph::{algo, graph::NodeIndex, Direction, Graph};
use std::{
collections::{HashMap, HashSet},
io,
ops::{Deref, DerefMut},
path::PathBuf,
};
@ -181,6 +182,26 @@ pub struct CheckedModule {
}
impl CheckedModule {
pub fn to_cbor(&self) -> Vec<u8> {
let mut module_bytes = vec![];
ciborium::into_writer(&self, &mut module_bytes)
.expect("modules should not fail to serialize");
module_bytes
}
pub fn from_cbor(bytes: &[u8]) -> Result<Self, ciborium::de::Error<io::Error>> {
ciborium::from_reader(bytes)
}
pub fn to_cbor_hex(&self) -> (String, Vec<u8>) {
let module_bytes = self.to_cbor();
let hex_str = hex::encode(&module_bytes);
(hex_str, module_bytes)
}
pub fn find_node(&self, byte_index: usize) -> Option<Located<'_>> {
self.ast.find_node(byte_index)
}