rue_clvm/
ir.rs

1use clvm_tools_rs::classic::clvm_tools::binutils;
2use clvmr::{
3    serde::{node_from_bytes, node_to_bytes},
4    Allocator, NodePtr,
5};
6
7use crate::Result;
8
9pub fn stringify_clvm(allocator: &Allocator, ptr: NodePtr) -> Result<String> {
10    let mut old_allocator = clvmr_old::allocator::Allocator::new();
11    let output_bytes = node_to_bytes(allocator, ptr)?;
12    let output_ptr = clvmr_old::serde::node_from_bytes(&mut old_allocator, &output_bytes)?;
13    Ok(binutils::disassemble(&old_allocator, output_ptr, None))
14}
15
16pub fn parse_clvm(allocator: &mut Allocator, source: &str) -> Result<NodePtr> {
17    let mut old_allocator = clvmr_old::Allocator::new();
18    let input_ptr = binutils::assemble(&mut old_allocator, source).unwrap();
19    let input_bytes = clvmr_old::serde::node_to_bytes(&old_allocator, input_ptr).unwrap();
20    Ok(node_from_bytes(allocator, &input_bytes)?)
21}