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;