diff options
| author | Drew DeVault <sir@cmpwn.com> | 2021-12-12 13:06:13 +0100 |
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2021-12-12 13:06:13 +0100 |
| commit | aad6ff05cc6110da6b458d9631604dacb44bcc61 (patch) | |
| tree | 9b1704f455bcbc19233f61cfd78276fc56143a5b | |
| parent | sdl2::mixer: initial commit (diff) | |
| download | hare-chip8-aad6ff05cc6110da6b458d9631604dacb44bcc61.tar.gz | |
all: add error handling on init
Diffstat (limited to '')
| -rw-r--r-- | cmd/demo/main.ha | 4 | ||||
| -rw-r--r-- | sdl2/image/image.ha | 10 | ||||
| -rw-r--r-- | sdl2/sdl2.ha | 6 |
3 files changed, 13 insertions, 7 deletions
diff --git a/cmd/demo/main.ha b/cmd/demo/main.ha index 73a5517..2b662a2 100644 --- a/cmd/demo/main.ha +++ b/cmd/demo/main.ha @@ -30,9 +30,9 @@ export fn main() void = { }; fn run() (void | sdl2::error) = { - sdl2::init(sdl2::init_flags::VIDEO | sdl2::init_flags::GAMECONTROLLER); + sdl2::init(sdl2::init_flags::VIDEO | sdl2::init_flags::GAMECONTROLLER)!; defer sdl2::quit(); - image::init(image::init_flags::PNG | image::init_flags::JPG); + image::init(image::init_flags::PNG | image::init_flags::JPG)!; defer image::quit(); mixer::init(mixer::init_flags::OGG)!; diff --git a/sdl2/image/image.ha b/sdl2/image/image.ha index 6cabee2..8a48009 100644 --- a/sdl2/image/image.ha +++ b/sdl2/image/image.ha @@ -12,11 +12,13 @@ export type init_flags = enum int { WEBP = 0x00000008, }; +@symbol("IMG_Init") fn _init(flags: init_flags) int; + // Loads dynamic libraries and prepares them for use. Flags should be one or -// more flags from IMG_InitFlags OR'd together. -// -// Returns the flags successfully initialized, or 0 on failure. -export @symbol("IMG_Init") fn init(flags: init_flags) int; +// more flags from [[init_flags]] OR'd together. +export fn init(flags: init_flags) (void | sdl2::error) = { + return sdl2::wrapvoid(_init(flags)); +}; // Unloads libraries loaded with [[init]] export @symbol("IMG_Quit") fn quit() void; diff --git a/sdl2/sdl2.ha b/sdl2/sdl2.ha index b71c890..08e1234 100644 --- a/sdl2/sdl2.ha +++ b/sdl2/sdl2.ha @@ -13,8 +13,12 @@ export type init_flags = enum uint { EVERYTHING = TIMER | AUDIO | VIDEO | EVENTS | JOYSTICK | HAPTIC | GAMECONTROLLER | SENSOR, }; +@symbol("SDL_Init") fn _init(flags: init_flags) int; + // This function initializes the subsystems specified by 'flags'. -export @symbol("SDL_Init") fn init(flags: init_flags) void; +export fn init(flags: init_flags) (void | error) = { + return wrapvoid(_init(flags)); +}; // This function cleans up all initialized subsystems. You should call it upon // all exit conditions. |
