SDL3pp
A slim C++ wrapper for SDL3
Loading...
Searching...
No Matches
SDL3pp_init.h
1#ifndef SDL3PP_INIT_H_
2#define SDL3PP_INIT_H_
3
4#include <atomic>
5#include <SDL3/SDL_init.h>
6#include "SDL3pp_callbackWrapper.h"
7#include "SDL3pp_error.h"
8#include "SDL3pp_events.h"
9#include "SDL3pp_log.h"
10#include "SDL3pp_strings.h"
11
12namespace SDL {
13
42
48
64
66 SDL_INIT_AUDIO;
67
71constexpr InitFlags INIT_VIDEO = SDL_INIT_VIDEO;
72
74 SDL_INIT_JOYSTICK;
75
76constexpr InitFlags INIT_HAPTIC = SDL_INIT_HAPTIC;
77
79 SDL_INIT_GAMEPAD;
80
81constexpr InitFlags INIT_EVENTS = SDL_INIT_EVENTS;
82
84 SDL_INIT_SENSOR;
85
87 SDL_INIT_CAMERA;
88
90
96
115using AppResult = SDL_AppResult;
116
118constexpr AppResult APP_CONTINUE = SDL_APP_CONTINUE;
119
121constexpr AppResult APP_SUCCESS = SDL_APP_SUCCESS;
122
124constexpr AppResult APP_FAILURE = SDL_APP_FAILURE;
125
127
133
150using AppInit_func = AppResult(SDLCALL*)(void** appstate,
151 int argc,
152 char* argv[]);
153
167using AppIterate_func = AppResult(SDLCALL*)(void* appstate);
168
183using AppEvent_func = AppResult(SDLCALL*)(void* appstate, Event* event);
184
197using AppQuit_func = void(SDLCALL*)(void* appstate, AppResult result);
198
200
255inline void Init(InitFlags flags) { CheckError(SDL_Init(flags)); }
256
273inline void InitSubSystem(InitFlags flags)
274{
275 CheckError(SDL_InitSubSystem(flags));
276}
277
293inline void QuitSubSystem(InitFlags flags) { SDL_QuitSubSystem(flags); }
294
309inline InitFlags WasInit(InitFlags flags) { return SDL_WasInit(flags); }
310
329inline void Quit() { SDL_Quit(); }
330
348inline bool IsMainThread() { return SDL_IsMainThread(); }
349
354
364using MainThreadCallback = void(SDLCALL*)(void* userdata);
365
378using MainThreadCB = std::function<void()>;
379
381
406 void* userdata,
407 bool wait_complete)
408{
409 CheckError(SDL_RunOnMainThread(callback, userdata, wait_complete));
410}
411
437inline void RunOnMainThread(MainThreadCB callback, bool wait_complete)
438{
439 using Wrapper = CallbackWrapper<MainThreadCB>;
440 void* wrapped = Wrapper::Wrap(std::move(callback));
441 RunOnMainThread(&Wrapper::CallOnce, wrapped, wait_complete);
442}
443
477inline void SetAppMetadata(StringParam appname,
478 StringParam appversion,
479 StringParam appidentifier)
480{
481 CheckError(SDL_SetAppMetadata(appname, appversion, appidentifier));
482}
483
543{
544 CheckError(SDL_SetAppMetadataProperty(name, value));
545}
546
554
555constexpr auto NAME_STRING =
556 SDL_PROP_APP_METADATA_NAME_STRING;
557
558constexpr auto VERSION_STRING =
559 SDL_PROP_APP_METADATA_VERSION_STRING;
560
561constexpr auto IDENTIFIER_STRING =
562 SDL_PROP_APP_METADATA_IDENTIFIER_STRING;
563
564constexpr auto CREATOR_STRING =
565 SDL_PROP_APP_METADATA_CREATOR_STRING;
566
567constexpr auto COPYRIGHT_STRING =
568 SDL_PROP_APP_METADATA_COPYRIGHT_STRING;
569
570constexpr auto URL_STRING =
571 SDL_PROP_APP_METADATA_URL_STRING;
572
573constexpr auto TYPE_STRING =
574 SDL_PROP_APP_METADATA_TYPE_STRING;
575
576} // namespace prop::appMetaData
577
599inline const char* GetAppMetadataProperty(StringParam name)
600{
601 return SDL_GetAppMetadataProperty(name);
602}
603
604#ifndef SDL3PP_APPCLASS_LOG_PRIORITY
608#define SDL3PP_APPCLASS_LOG_PRIORITY SDL::LOG_PRIORITY_CRITICAL
609#endif // SDL3PP_APPCLASS_LOG_PRIORITY
610
612
613} // namespace SDL
614
615#endif /* SDL3PP_INIT_H_ */
Helpers to use C++ strings parameters.
Definition SDL3pp_strings.h:58
constexpr void CheckError(bool result)
Check and throw if returned value from SDL is an error.
Definition SDL3pp_error.h:199
SDL_Event Event
The structure for all events in SDL.
Definition SDL3pp_events.h:844
AppResult(SDLCALL *)(void **appstate, int argc, char *argv[]) AppInit_func
Function pointer typedef for SDL_AppInit.
Definition SDL3pp_init.h:150
void Init(InitFlags flags)
Initialize the SDL library.
Definition SDL3pp_init.h:255
void SetAppMetadata(StringParam appname, StringParam appversion, StringParam appidentifier)
Specify basic metadata about your app.
Definition SDL3pp_init.h:477
InitFlags WasInit(InitFlags flags)
Get a mask of the specified subsystems which are currently initialized.
Definition SDL3pp_init.h:309
SDL_AppResult AppResult
Return values for optional main callbacks.
Definition SDL3pp_init.h:115
void(SDLCALL *)(void *appstate, AppResult result) AppQuit_func
Function pointer typedef for SDL_AppQuit.
Definition SDL3pp_init.h:197
void InitSubSystem(InitFlags flags)
Compatibility function to initialize the SDL library.
Definition SDL3pp_init.h:273
constexpr AppResult APP_FAILURE
Value that requests termination with error from the main callbacks.
Definition SDL3pp_init.h:124
constexpr AppResult APP_CONTINUE
Value that requests that the app continue from the main callbacks.
Definition SDL3pp_init.h:118
std::function< void()> MainThreadCB
Callback run on the main thread.
Definition SDL3pp_init.h:378
const char * GetAppMetadataProperty(StringParam name)
Get metadata about your app.
Definition SDL3pp_init.h:599
AppResult(SDLCALL *)(void *appstate, Event *event) AppEvent_func
Function pointer typedef for SDL_AppEvent.
Definition SDL3pp_init.h:183
AppResult(SDLCALL *)(void *appstate) AppIterate_func
Function pointer typedef for SDL_AppIterate.
Definition SDL3pp_init.h:167
void RunOnMainThread(MainThreadCallback callback, void *userdata, bool wait_complete)
Call a function on the main thread during event processing.
Definition SDL3pp_init.h:405
void SetAppMetadataProperty(StringParam name, StringParam value)
Specify metadata about your app through a set of properties.
Definition SDL3pp_init.h:542
void Quit()
Clean up all initialized subsystems.
Definition SDL3pp_init.h:329
void QuitSubSystem(InitFlags flags)
Shut down specific SDL subsystems.
Definition SDL3pp_init.h:293
void(SDLCALL *)(void *userdata) MainThreadCallback
Callback run on the main thread.
Definition SDL3pp_init.h:364
bool IsMainThread()
Return whether this is the main thread.
Definition SDL3pp_init.h:348
constexpr AppResult APP_SUCCESS
Value that requests termination with success from the main callbacks.
Definition SDL3pp_init.h:121
::Uint32 Uint32
An unsigned 32-bit integer type.
Definition SDL3pp_stdinc.h:296
constexpr InitFlags INIT_SENSOR
INIT_SENSOR implies INIT_EVENTS
Definition SDL3pp_init.h:83
constexpr InitFlags INIT_JOYSTICK
INIT_JOYSTICK implies INIT_EVENTS
Definition SDL3pp_init.h:73
constexpr InitFlags INIT_VIDEO
INIT_VIDEO implies INIT_EVENTS, should be initialized on the main thread
Definition SDL3pp_init.h:71
constexpr InitFlags INIT_AUDIO
INIT_AUDIO implies INIT_EVENTS
Definition SDL3pp_init.h:65
constexpr InitFlags INIT_EVENTS
EVENTS.
Definition SDL3pp_init.h:81
constexpr InitFlags INIT_GAMEPAD
INIT_GAMEPAD implies INIT_JOYSTICK
Definition SDL3pp_init.h:78
Uint32 InitFlags
Initialization flags for Init and/or InitSubSystem.
Definition SDL3pp_init.h:63
constexpr InitFlags INIT_HAPTIC
HAPTIC.
Definition SDL3pp_init.h:76
constexpr InitFlags INIT_CAMERA
INIT_CAMERA implies INIT_EVENTS
Definition SDL3pp_init.h:86
Metadata property names for application.
Definition SDL3pp_init.h:553
constexpr auto VERSION_STRING
String for version.
Definition SDL3pp_init.h:558
constexpr auto CREATOR_STRING
String for creator.
Definition SDL3pp_init.h:564
constexpr auto IDENTIFIER_STRING
String for identifier.
Definition SDL3pp_init.h:561
constexpr auto COPYRIGHT_STRING
String for copyright.
Definition SDL3pp_init.h:567
constexpr auto URL_STRING
String for url.
Definition SDL3pp_init.h:570
constexpr auto NAME_STRING
String for name.
Definition SDL3pp_init.h:555
constexpr auto TYPE_STRING
String for type.
Definition SDL3pp_init.h:573
Main include header for the SDL3pp library.
Definition SDL3pp_callbackWrapper.h:20