module sdl3::sdl; typedef InitFlags = uint; const InitFlags INIT_AUDIO @builtin = 0x00000010; const InitFlags INIT_VIDEO @builtin = 0x00000020; const InitFlags INIT_JOYSTICK @builtin = 0x00000200; const InitFlags INIT_HAPTIC @builtin = 0x00001000; const InitFlags INIT_GAMEPAD @builtin = 0x00002000; const InitFlags INIT_EVENTS @builtin = 0x00004000; const InitFlags INIT_SENSOR @builtin = 0x00008000; const InitFlags INIT_CAMERA @builtin = 0x00010000; enum AppResult : inline CInt { APP_CONTINUE, APP_SUCCESS, APP_FAILURE } alias AppInit_func = fn AppResult(void **appstate, int argc, char[]* argv); alias AppIterate_func = fn AppResult(void *appstate); alias AppEvent_func = fn AppResult(void *appstate, Event *event); alias AppQuit_func = fn void(void *appstate, AppResult result); extern fn bool init(InitFlags flags) @extern("SDL_Init"); extern fn bool init_sub_system(InitFlags flags) @extern("SDL_InitSubSystem"); extern fn void quit_sub_system(InitFlags flags) @extern("SDL_QuitSubSystem"); extern fn InitFlags was_init(InitFlags flags) @extern("SDL_WasInit"); extern fn void quit() @extern("SDL_Quit"); extern fn bool is_main_thread() @extern("SDL_IsMainThread"); alias MainThreadCallback = fn void(void *userdata); extern fn bool run_on_main_thread(MainThreadCallback callback, void *userdata, bool wait_complete) @extern("SDL_RunOnMainThread"); extern fn bool set_app_metadata(ZString appname, ZString appversion, ZString appidentifier) @extern("SDL_SetAppMetadata"); extern fn bool set_app_metadata_property(ZString name, ZString value) @extern("SDL_SetAppMetadataProperty"); const ZString PROP_APP_METADATA_NAME_STRING @builtin = "SDL.app.metadata.name"; const ZString PROP_APP_METADATA_VERSION_STRING @builtin = "SDL.app.metadata.version"; const ZString PROP_APP_METADATA_IDENTIFIER_STRING @builtin = "SDL.app.metadata.identifier"; const ZString PROP_APP_METADATA_CREATOR_STRING @builtin = "SDL.app.metadata.creator"; const ZString PROP_APP_METADATA_COPYRIGHT_STRING @builtin = "SDL.app.metadata.copyright"; const ZString PROP_APP_METADATA_URL_STRING @builtin = "SDL.app.metadata.url"; const ZString PROP_APP_METADATA_TYPE_STRING @builtin = "SDL.app.metadata.type"; extern fn ZString get_app_metadata_property(ZString name) @extern("SDL_GetAppMetadataProperty");