sdl3-bindgen-sys-0.0.1.0: src/SDL3/Sys/Bindgen/Main/Safe.hs
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE NoFieldSelectors #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_HADDOCK prune #-}
module SDL3.Sys.Bindgen.Main.Safe (
SDL3.Sys.Bindgen.Main.Safe.sDL_SetMainReady,
SDL3.Sys.Bindgen.Main.Safe.sDL_RunApp,
SDL3.Sys.Bindgen.Main.Safe.sDL_EnterAppMainCallbacks,
SDL3.Sys.Bindgen.Main.Safe.sDL_GDKSuspendComplete,
)
where
import Prelude (IO, fmap)
import HsBindgen.Runtime.IncompleteArray qualified as IA
import HsBindgen.Runtime.IsArray qualified as IsA
import HsBindgen.Runtime.Support qualified
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CAPI qualified
import SDL3.Sys.Bindgen.Init qualified
import SDL3.Sys.Bindgen.Main
$( HsBindgen.Runtime.Support.CAPI.addCSource
( HsBindgen.Runtime.Support.CAPI.unlines
[ "#define SDL_MAIN_HANDLED"
, "#define SDL_SLOW_MEMCPY"
, "#define SDL_SLOW_MEMMOVE"
, "#define SDL_SLOW_MEMSET"
, "#include <SDL3/SDL_main.h>"
, "void hs_bindgen_1c56a59892e2463e (void)"
, "{"
, " (SDL_SetMainReady)();"
, "}"
, "signed int hs_bindgen_1b6974d956741083 ("
, " signed int arg1,"
, " char **arg2,"
, " SDL_main_func arg3,"
, " void *arg4"
, ")"
, "{"
, " return (SDL_RunApp)(arg1, arg2, arg3, arg4);"
, "}"
, "signed int hs_bindgen_656ed4ab2c6b8347 ("
, " signed int arg1,"
, " char **arg2,"
, " SDL_AppInit_func arg3,"
, " SDL_AppIterate_func arg4,"
, " SDL_AppEvent_func arg5,"
, " SDL_AppQuit_func arg6"
, ")"
, "{"
, " return (SDL_EnterAppMainCallbacks)(arg1, arg2, arg3, arg4, arg5, arg6);"
, "}"
, "void hs_bindgen_265bcc9d378e1bc4 (void)"
, "{"
, " (SDL_GDKSuspendComplete)();"
, "}"
]
)
)
-- __unique:__ @sdl3bindgensys_SDL3.Sys.Bindgen.Main_Safe_SDL_SetMainReady@
foreign import ccall safe "hs_bindgen_1c56a59892e2463e"
hs_bindgen_1c56a59892e2463e_base
:: IO ()
-- __unique:__ @sdl3bindgensys_SDL3.Sys.Bindgen.Main_Safe_SDL_SetMainReady@
hs_bindgen_1c56a59892e2463e :: IO ()
hs_bindgen_1c56a59892e2463e =
hs_bindgen_1c56a59892e2463e_base
-- | Circumvent failure of SDL_Init() when not using @SDL_main()@ as an entry point.
--
-- This function is defined in @SDL_main.h@, along with the preprocessor rule to redefine main() as @SDL_main()@. Thus to ensure that your main() function will not be changed it is necessary to define SDL_MAIN_HANDLED before including SDL.h.
--
-- [Thread safety]: This function is not thread safe.
--
-- @since 3.2.0
--
-- [See also]: SDL_Init
--
-- [C declaration]: @SDL_SetMainReady@, defined at @SDL3\/SDL_main.h 549:34@
sDL_SetMainReady :: IO ()
sDL_SetMainReady = hs_bindgen_1c56a59892e2463e
-- __unique:__ @sdl3bindgensys_SDL3.Sys.Bindgen.Main_Safe_SDL_RunApp@
foreign import ccall safe "hs_bindgen_1b6974d956741083"
hs_bindgen_1b6974d956741083_base
:: BG.CInt
-> BG.Ptr BG.Void
-> BG.FunPtr BG.Void
-> BG.Ptr BG.Void
-> IO BG.CInt
-- __unique:__ @sdl3bindgensys_SDL3.Sys.Bindgen.Main_Safe_SDL_RunApp@
hs_bindgen_1b6974d956741083
:: BG.CInt
-> BG.Ptr (IsA.Elem (IA.IncompleteArray (BG.Ptr BG.CChar)))
-> SDL_main_func
-> BG.Ptr BG.Void
-> IO BG.CInt
hs_bindgen_1b6974d956741083 =
\x0 ->
\x1 ->
\x2 ->
\x3 ->
fmap
BG.fromFFIType
( hs_bindgen_1b6974d956741083_base
(BG.toFFIType x0)
(BG.toFFIType x1)
(BG.toFFIType x2)
(BG.toFFIType x3)
)
-- | Initializes and launches an SDL application, by doing platform-specific initialization before calling your mainFunction and cleanups after it returns, if that is needed for a specific platform, otherwise it just calls mainFunction.
--
-- You can use this if you want to use your own main() implementation without using SDL_main (like when using SDL_MAIN_HANDLED). When using this, you do /not/ need @SDL_SetMainReady()@.
--
-- If @argv@ is NULL, SDL will provide command line arguments, either by querying the OS for them if possible, or supplying a filler array if not.
--
-- [Returns]: the return value from mainFunction: 0 on success, otherwise failure; SDL_GetError() might have more information on the failure.
--
-- [Thread safety]: Generally this is called once, near startup, from the process\'s initial thread.
--
-- @since 3.2.0
--
-- [C declaration]: @SDL_RunApp@, defined at @SDL3\/SDL_main.h 582:33@
sDL_RunApp
:: BG.CInt
-- ^
--
-- [@argc@]: the argc parameter from the application\'s main() function, or 0 if the platform\'s main-equivalent has no argc.
-> BG.Ptr (IsA.Elem (IA.IncompleteArray (BG.Ptr BG.CChar)))
-- ^
--
-- [@argv@]: the argv parameter from the application\'s main() function, or NULL if the platform\'s main-equivalent has no argv.
-> SDL_main_func
-- ^
--
-- [@mainFunction@]: your SDL app\'s C-style main(). NOT the function you\'re calling this from! Its name doesn\'t matter; it doesn\'t literally have to be @main@.
-> BG.Ptr BG.Void
-- ^
--
-- [@reserved@]: should be NULL (reserved for future use, will probably be platform-specific then).
-> IO BG.CInt
sDL_RunApp = hs_bindgen_1b6974d956741083
-- __unique:__ @sdl3bindgensys_SDL3.Sys.Bindgen.Main_Safe_SDL_EnterAppMainCallbacks@
foreign import ccall safe "hs_bindgen_656ed4ab2c6b8347"
hs_bindgen_656ed4ab2c6b8347_base
:: BG.CInt
-> BG.Ptr BG.Void
-> HsBindgen.Runtime.Support.FunPtrVoid
-> HsBindgen.Runtime.Support.FunPtrVoid
-> HsBindgen.Runtime.Support.FunPtrVoid
-> HsBindgen.Runtime.Support.FunPtrVoid
-> IO BG.CInt
-- __unique:__ @sdl3bindgensys_SDL3.Sys.Bindgen.Main_Safe_SDL_EnterAppMainCallbacks@
hs_bindgen_656ed4ab2c6b8347
:: BG.CInt
-> BG.Ptr (IsA.Elem (IA.IncompleteArray (BG.Ptr BG.CChar)))
-> SDL3.Sys.Bindgen.Init.SDL_AppInit_func
-> SDL3.Sys.Bindgen.Init.SDL_AppIterate_func
-> SDL3.Sys.Bindgen.Init.SDL_AppEvent_func
-> SDL3.Sys.Bindgen.Init.SDL_AppQuit_func
-> IO BG.CInt
hs_bindgen_656ed4ab2c6b8347 =
\x0 ->
\x1 ->
\x2 ->
\x3 ->
\x4 ->
\x5 ->
fmap
BG.fromFFIType
( hs_bindgen_656ed4ab2c6b8347_base
(BG.toFFIType x0)
(BG.toFFIType x1)
(BG.toFFIType x2)
(BG.toFFIType x3)
(BG.toFFIType x4)
(BG.toFFIType x5)
)
-- | An entry point for SDL\'s use in SDL_MAIN_USE_CALLBACKS.
--
-- Generally, you should not call this function directly. This only exists to hand off work into SDL as soon as possible, where it has a lot more control and functionality available, and make the inline code in @SDL_main.h@ as small as possible.
--
-- Not all platforms use this, it\'s actual use is hidden in a magic header-only library, and you should not call this directly unless you /really/ know what you\'re doing.
--
-- [Returns]: standard Unix main return value.
--
-- [Thread safety]: It is not safe to call this anywhere except as the only function call in SDL_main.
--
-- @since 3.2.0
--
-- [C declaration]: @SDL_EnterAppMainCallbacks@, defined at @SDL3\/SDL_main.h 609:33@
sDL_EnterAppMainCallbacks
:: BG.CInt
-- ^
--
-- [@argc@]: standard Unix main argc.
-> BG.Ptr (IsA.Elem (IA.IncompleteArray (BG.Ptr BG.CChar)))
-- ^
--
-- [@argv@]: standard Unix main argv.
-> SDL3.Sys.Bindgen.Init.SDL_AppInit_func
-- ^
--
-- [@appinit@]: the application\'s SDL_AppInit function.
-> SDL3.Sys.Bindgen.Init.SDL_AppIterate_func
-- ^
--
-- [@appiter@]: the application\'s SDL_AppIterate function.
-> SDL3.Sys.Bindgen.Init.SDL_AppEvent_func
-- ^
--
-- [@appevent@]: the application\'s SDL_AppEvent function.
-> SDL3.Sys.Bindgen.Init.SDL_AppQuit_func
-- ^
--
-- [@appquit@]: the application\'s SDL_AppQuit function.
-> IO BG.CInt
sDL_EnterAppMainCallbacks =
hs_bindgen_656ed4ab2c6b8347
-- __unique:__ @sdl3bindgensys_SDL3.Sys.Bindgen.Main_Safe_SDL_GDKSuspendComplete@
foreign import ccall safe "hs_bindgen_265bcc9d378e1bc4"
hs_bindgen_265bcc9d378e1bc4_base
:: IO ()
-- __unique:__ @sdl3bindgensys_SDL3.Sys.Bindgen.Main_Safe_SDL_GDKSuspendComplete@
hs_bindgen_265bcc9d378e1bc4 :: IO ()
hs_bindgen_265bcc9d378e1bc4 =
hs_bindgen_265bcc9d378e1bc4_base
-- | Callback from the application to let the suspend continue.
--
-- This should be called from an event watch in response to an @SDL_EVENT_DID_ENTER_BACKGROUND@ event.
--
-- When using SDL_Render, your event watch should be added /after/ creating the @SDL_Renderer@; this allows the timing of the D3D12 command queue suspension to execute in the correct order.
--
-- When using SDL_GPU, this should be called after calling SDL_GDKSuspendGPU.
--
-- If you\'re writing your own D3D12 renderer, this should be called after calling @ID3D12CommandQueue::SuspendX@.
--
-- This function is only needed for Xbox GDK support; all other platforms will do nothing and set an \"unsupported\" error message.
--
-- [Thread safety]: This function is not thread safe.
--
-- @since 3.2.0
--
-- [See also]: SDL_AddEventWatch
--
-- [C declaration]: @SDL_GDKSuspendComplete@, defined at @SDL3\/SDL_main.h 688:34@
sDL_GDKSuspendComplete :: IO ()
sDL_GDKSuspendComplete = hs_bindgen_265bcc9d378e1bc4