From ff126c0054ff30df373e83b5c81b0deaebc6fabd Mon Sep 17 00:00:00 2001 From: iddev5 Date: Mon, 30 May 2022 13:36:27 +0530 Subject: [PATCH] mach/platform: check for App functions in all platforms --- src/platform/common.zig | 6 ++++++ src/platform/native.zig | 6 ++---- src/platform/wasm.zig | 5 +++++ 3 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 src/platform/common.zig diff --git a/src/platform/common.zig b/src/platform/common.zig new file mode 100644 index 00000000..ba4f27ac --- /dev/null +++ b/src/platform/common.zig @@ -0,0 +1,6 @@ +pub fn checkApplication(comptime App: type) void { + // TODO: check signature + if (!@hasDecl(App, "init")) @compileError("App must export 'pub fn init(app: *App, engine: *mach.Engine) !void'"); + if (!@hasDecl(App, "deinit")) @compileError("App must export 'pub fn deinit(app: *App, engine: *mach.Engine) void'"); + if (!@hasDecl(App, "update")) @compileError("App must export 'pub fn update(app: *App, engine: *mach.Engine) !bool'"); +} diff --git a/src/platform/native.zig b/src/platform/native.zig index d058ed59..e9c84a18 100644 --- a/src/platform/native.zig +++ b/src/platform/native.zig @@ -390,11 +390,9 @@ pub const GpuDriver = struct { pub const BackingTimer = std.time.Timer; -// TODO: check signatures +const common = @import("common.zig"); comptime { - if (!@hasDecl(App, "init")) @compileError("App must export 'pub fn init(app: *App, engine: *mach.Engine) !void'"); - if (!@hasDecl(App, "deinit")) @compileError("App must export 'pub fn deinit(app: *App, engine: *mach.Engine) void'"); - if (!@hasDecl(App, "update")) @compileError("App must export 'pub fn update(app: *App, engine: *mach.Engine) !bool'"); + common.checkApplication(App); } pub fn main() !void { diff --git a/src/platform/wasm.zig b/src/platform/wasm.zig index cff0bb87..35db409f 100644 --- a/src/platform/wasm.zig +++ b/src/platform/wasm.zig @@ -110,6 +110,11 @@ pub const BackingTimer = struct { } }; +const common = @import("common.zig"); +comptime { + common.checkApplication(App); +} + var app: App = undefined; var engine: Engine = undefined;