74 lines
2.3 KiB
Zig
74 lines
2.3 KiB
Zig
const std = @import("std");
|
|
|
|
const Blocks = .{
|
|
@import("Cpu.zig").block(.{}),
|
|
@import("Cpu.zig").block(.{}), // just testing a second block
|
|
};
|
|
|
|
const freq_ms = 500;
|
|
|
|
pub fn main() !void {
|
|
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
|
defer _ = gpa.deinit();
|
|
const alloc = gpa.allocator();
|
|
|
|
var blocks: std.meta.Tuple(&Blocks) = undefined;
|
|
var arenas: [Blocks.len]std.heap.ArenaAllocator = undefined;
|
|
var outputs: [Blocks.len][]const u8 = undefined;
|
|
|
|
var combined_arena = std.heap.ArenaAllocator.init(alloc);
|
|
defer combined_arena.deinit();
|
|
|
|
inline for (Blocks, &blocks, &arenas) |Block, *block, *arena| {
|
|
block.* = try Block.init(alloc);
|
|
arena.* = std.heap.ArenaAllocator.init(alloc);
|
|
}
|
|
|
|
defer inline for (blocks, arenas) |block, arena| {
|
|
block.deinit(alloc);
|
|
arena.deinit();
|
|
};
|
|
|
|
std.time.sleep(std.time.ns_per_s);
|
|
|
|
inline for (&blocks, &arenas, &outputs) |*block, *arena, *output| {
|
|
output.* = try block.update(arena.allocator());
|
|
}
|
|
|
|
_ = combined_arena.reset(.retain_capacity);
|
|
const combined = try std.mem.join(combined_arena.allocator(), " * ", &outputs);
|
|
try std.io.getStdOut().writeAll(combined);
|
|
try std.io.getStdOut().writeAll("\n");
|
|
}
|
|
|
|
// pub fn main() !void {
|
|
// var arenas: [Blocks.len]std.heap.ArenaAllocator = undefined;
|
|
// inline for (&arenas) |*arena| {
|
|
// arena.* = std.heap.ArenaAllocator.init(alloc);
|
|
// }
|
|
//
|
|
// var outs: [Blocks.len][]u8 = undefined;
|
|
//
|
|
// var buf = std.ArrayList(u8).init(alloc);
|
|
// defer buf.deinit();
|
|
// try buf.ensureTotalCapacity(512);
|
|
//
|
|
// while (true) {
|
|
// inline for (&blocks, &arenas, &outs) |*block, *arena, *out| {
|
|
// arena.reset(.{ .retain_with_limit = 100 });
|
|
// out.* = try block.update(arena.allocator());
|
|
// }
|
|
//
|
|
// std.mem.join(allocator: Allocator, separator: []const u8, slices: []const []const u8)
|
|
//
|
|
// // try buf.resize(0);
|
|
// // inline for (&blocks) |*block| {
|
|
// // try block.update();
|
|
// // try block.print(buf.fixedWriter().any());
|
|
// // }
|
|
// // std.debug.print("buf: {s}\n", .{buf.items});
|
|
// //
|
|
// // std.time.sleep(freq_ms * std.time.ns_per_ms);
|
|
// }
|
|
// }
|