diff options
Diffstat (limited to 'src/console.zig')
| -rw-r--r-- | src/console.zig | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/console.zig b/src/console.zig new file mode 100644 index 0000000..1a7539e --- /dev/null +++ b/src/console.zig @@ -0,0 +1,34 @@ +const std = @import("std"); +const Writer = std.Io.Writer; + +pub const Console = struct { + setup: *const fn (*const @This()) void, + write: *const fn (*const @This(), []const u8) void, +}; + +var cur: ?*const Console = null; + +fn drain( + _: *Writer, + data: []const []const u8, + _: usize, +) Writer.Error!usize { + if (cur) |c| { + c.write(c, data[0]); + } + return data[0].len; +} + +var writer: Writer = .{ + .vtable = &.{ .drain = drain }, + .buffer = &.{}, +}; + +pub fn print(comptime fmt: []const u8, args: anytype) void { + writer.print(fmt, args) catch {}; +} + +pub fn set_console(console: *const Console) void { + console.setup(console); + cur = console; +} |