blob: a02b4119cfc68c51d3fec70259672245568c528e [file] [log] [blame]
// Copyright © 2024 Collabora, Ltd.
// SPDX-License-Identifier: MIT
use std::io;
use crate::bindings;
use crate::bindings::nir_instr;
use crate::memstream::MemStream;
/// A memstream that holds the printed NIR instructions.
pub struct NirInstrPrinter {
stream: MemStream,
}
impl NirInstrPrinter {
pub fn new() -> io::Result<Self> {
Ok(Self {
stream: MemStream::new()?,
})
}
/// Prints the given NIR instruction.
pub fn instr_to_string(&mut self, instr: &nir_instr) -> io::Result<String> {
unsafe { bindings::nir_print_instr(instr, self.stream.c_file()) };
self.stream.take_utf8_string_lossy()
}
}