From cb0ae0c0749334ab82ea93cc231eb5ec3ce71c09 Mon Sep 17 00:00:00 2001 From: rvcas Date: Fri, 8 Mar 2024 19:15:22 -0500 Subject: [PATCH] feat: impl some conversion methods on CheckedModule --- crates/aiken-project/src/lib.rs | 6 ------ crates/aiken-project/src/module.rs | 21 +++++++++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/crates/aiken-project/src/lib.rs b/crates/aiken-project/src/lib.rs index adef5cd9..c4f6a1f0 100644 --- a/crates/aiken-project/src/lib.rs +++ b/crates/aiken-project/src/lib.rs @@ -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); } } diff --git a/crates/aiken-project/src/module.rs b/crates/aiken-project/src/module.rs index caf22af6..2d90dbd1 100644 --- a/crates/aiken-project/src/module.rs +++ b/crates/aiken-project/src/module.rs @@ -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 { + 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> { + ciborium::from_reader(bytes) + } + + pub fn to_cbor_hex(&self) -> (String, Vec) { + 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> { self.ast.find_node(byte_index) }