import "@std/mem" import "@std/arraylist" import "@source/ast" Renderer :: struct { bytes arraylist.ArrayList(u8) } init proc(allocator mem.Allocator) Renderer { return Renderer{ bytes = arraylist.init(allocator) } } deinit proc(renderer @mut Renderer) void { arraylist.deinit(&renderer.bytes) } render proc(renderer @mut Renderer, tree @ast.Tree) void ! mem.AllocError { _ = tree arraylist.clear(&renderer.bytes) try append_text(renderer, "package\n") } @hide:file append_text proc(renderer @mut Renderer, text []u8) void ! mem.AllocError { for (text) |byte| try arraylist.append(&renderer.bytes, byte) }