1 /* 2 * Copyright © 2024 Collabora, Ltd. 3 * SPDX-License-Identifier: MIT 4 * 5 * This file exposes a nice interface that can be consumed from Rust. We would 6 * have to have Rust libc bindings otherwise. 7 */ 8 9 #include <assert.h> 10 #include <stdio.h> 11 #include <stdlib.h> 12 13 #include "nak_private.h" 14 #include "nir.h" 15 nak_open_memstream(struct nak_memstream * memstream)16void nak_open_memstream(struct nak_memstream *memstream) 17 { 18 memstream->stream = open_memstream(&memstream->buffer, &memstream->written); 19 fflush(memstream->stream); 20 assert(memstream->stream); 21 assert(memstream->buffer); 22 } 23 nak_close_memstream(struct nak_memstream * memstream)24void nak_close_memstream(struct nak_memstream *memstream) 25 { 26 fclose(memstream->stream); 27 free(memstream->buffer); 28 } 29 nak_nir_asprint_instr(struct nak_memstream * memstream,const nir_instr * instr)30void nak_nir_asprint_instr(struct nak_memstream *memstream, const nir_instr *instr) 31 { 32 nir_print_instr(instr, memstream->stream); 33 fflush(memstream->stream); 34 } 35 nak_clear_memstream(struct nak_memstream * memstream)36void nak_clear_memstream(struct nak_memstream *memstream) 37 { 38 rewind(memstream->stream); 39 }