aboutsummaryrefslogtreecommitdiff
path: root/src/Console.zig
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-08-01 13:07:30 +0200
committerHimbeer <himbeer@disroot.org>2024-08-01 13:07:30 +0200
commitc22a1c2214d5f3256684fa08262501cfd70be915 (patch)
tree28ed508137c86d15bb2c7e15a6ec2802d1cea1ed /src/Console.zig
parent017c63d49f4c6fdd2f762dd7d14323fbbdb7775e (diff)
Flatten 'lib' directory into main 'src' tree
Diffstat (limited to 'src/Console.zig')
-rw-r--r--src/Console.zig38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/Console.zig b/src/Console.zig
new file mode 100644
index 0000000..8a64406
--- /dev/null
+++ b/src/Console.zig
@@ -0,0 +1,38 @@
+// SPDX-FileCopyrightText: 2024 Himbeer <himbeer@disroot.org>
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+
+const std = @import("std");
+const debug_console = @import("sbi/debug_console.zig");
+const legacy = @import("sbi/legacy.zig");
+
+provider: Provider,
+
+const Self = @This();
+
+pub const Provider = union(enum) {
+ sbi_debug: debug_console.Writer,
+ sbi_legacy: legacy.Writer,
+};
+
+pub fn autoChoose() ?Self {
+ if (debug_console.writer()) |sbi_con| {
+ return .{
+ .provider = .{ .sbi_debug = sbi_con },
+ };
+ } else |_| {}
+ if (legacy.writer()) |sbi_legacy_con| {
+ return .{
+ .provider = .{ .sbi_legacy = sbi_legacy_con },
+ };
+ } else |_| {}
+
+ return null;
+}
+
+pub fn writer(console: *const Self) std.io.AnyWriter {
+ switch (console.provider) {
+ .sbi_debug => return console.provider.sbi_debug.any(),
+ .sbi_legacy => return console.provider.sbi_legacy.any(),
+ }
+}