Files
zig-experiments/statusline/status.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);
// }
// }