From 10f708ee650a90811419faf6225ab0d2cd3f168b Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 5 Dec 2022 21:27:20 -0800 Subject: [PATCH] wasm: export terminal core API --- src/main_wasm.zig | 1 + src/terminal/main.zig | 5 +++++ src/terminal/main_wasm.zig | 4 ---- src/terminal/{c_api.zig => wasm.zig} | 10 +++------- 4 files changed, 9 insertions(+), 11 deletions(-) delete mode 100644 src/terminal/main_wasm.zig rename src/terminal/{c_api.zig => wasm.zig} (81%) diff --git a/src/main_wasm.zig b/src/main_wasm.zig index f16420450..c9c2069dc 100644 --- a/src/main_wasm.zig +++ b/src/main_wasm.zig @@ -6,6 +6,7 @@ const builtin = @import("builtin"); pub usingnamespace @import("os/wasm.zig"); pub usingnamespace @import("os/wasm/log.zig"); pub usingnamespace @import("font/main.zig"); +pub usingnamespace @import("terminal/main.zig"); // Set our log level. We try to get as much logging as possible but in // ReleaseSmall mode where we're optimizing for space, we elevate the diff --git a/src/terminal/main.zig b/src/terminal/main.zig index 4472116c6..fcb39f5d4 100644 --- a/src/terminal/main.zig +++ b/src/terminal/main.zig @@ -28,6 +28,11 @@ pub const EraseLine = csi.EraseLine; pub const TabClear = csi.TabClear; pub const Attribute = sgr.Attribute; +/// If we're targeting wasm then we export some wasm APIs. +pub usingnamespace if (builtin.target.isWasm()) struct { + pub usingnamespace @import("wasm.zig"); +} else struct {}; + test { @import("std").testing.refAllDecls(@This()); } diff --git a/src/terminal/main_wasm.zig b/src/terminal/main_wasm.zig deleted file mode 100644 index 920cb59c1..000000000 --- a/src/terminal/main_wasm.zig +++ /dev/null @@ -1,4 +0,0 @@ -// This is the main file for the WASM module. The WASM module just -// imports the C API. - -pub usingnamespace @import("c_api.zig"); diff --git a/src/terminal/c_api.zig b/src/terminal/wasm.zig similarity index 81% rename from src/terminal/c_api.zig rename to src/terminal/wasm.zig index 65bc54208..009ff56e8 100644 --- a/src/terminal/c_api.zig +++ b/src/terminal/wasm.zig @@ -8,12 +8,8 @@ const std = @import("std"); const builtin = @import("builtin"); const Allocator = std.mem.Allocator; const Terminal = @import("main.zig").Terminal; - -// The allocator that we want to use. -const alloc = if (builtin.link_libc) - std.heap.c_allocator -else - std.heap.page_allocator; +const wasm = @import("../os/wasm.zig"); +const alloc = wasm.alloc; export fn terminal_new(cols: usize, rows: usize) ?*Terminal { const term = Terminal.init(alloc, cols, rows) catch return null; @@ -31,6 +27,6 @@ export fn terminal_free(ptr: ?*Terminal) void { export fn terminal_print(ptr: ?*Terminal, char: u32) void { if (ptr) |t| { - t.print(@intCast(u21, char)) catch return null; + t.print(@intCast(u21, char)) catch return; } }