{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}
{-# LANGUAGE NoImplicitPrelude #-}

module SDL3.Sys.Bindgen.System (
  SDL3.Sys.Bindgen.System.XEvent,
  SDL3.Sys.Bindgen.System.SDL_X11EventHook_Aux (..),
  SDL3.Sys.Bindgen.System.SDL_X11EventHook (..),
  SDL3.Sys.Bindgen.System.SDL_Sandbox (..),
  pattern SDL3.Sys.Bindgen.System.SDL_SANDBOX_NONE,
  pattern SDL3.Sys.Bindgen.System.SDL_SANDBOX_UNKNOWN_CONTAINER,
  pattern SDL3.Sys.Bindgen.System.SDL_SANDBOX_FLATPAK,
  pattern SDL3.Sys.Bindgen.System.SDL_SANDBOX_SNAP,
  pattern SDL3.Sys.Bindgen.System.SDL_SANDBOX_MACOS,
)
where

import Prelude (Eq, IO, Int, Ord, Read, Show, fmap, pure, (<*>), type (~))

import HsBindgen.Runtime.CEnum qualified as CEnum
import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField

-- | [C declaration]: @union _XEvent@, defined at @SDL3\/SDL_system.h 141:15@
data XEvent

-- | Auxiliary type used by 'SDL_X11EventHook'
--
--     [C declaration]: @SDL_X11EventHook@, defined at @SDL3\/SDL_system.h 163:24@
newtype SDL_X11EventHook_Aux = SDL_X11EventHook_Aux
  { SDL_X11EventHook_Aux -> Ptr Void -> Ptr XEvent -> IO CBool
unwrap :: BG.Ptr BG.Void -> BG.Ptr XEvent -> IO BG.CBool
  }
  deriving stock ((forall x. SDL_X11EventHook_Aux -> Rep SDL_X11EventHook_Aux x)
-> (forall x. Rep SDL_X11EventHook_Aux x -> SDL_X11EventHook_Aux)
-> Generic SDL_X11EventHook_Aux
forall x. Rep SDL_X11EventHook_Aux x -> SDL_X11EventHook_Aux
forall x. SDL_X11EventHook_Aux -> Rep SDL_X11EventHook_Aux x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_X11EventHook_Aux -> Rep SDL_X11EventHook_Aux x
from :: forall x. SDL_X11EventHook_Aux -> Rep SDL_X11EventHook_Aux x
$cto :: forall x. Rep SDL_X11EventHook_Aux x -> SDL_X11EventHook_Aux
to :: forall x. Rep SDL_X11EventHook_Aux x -> SDL_X11EventHook_Aux
BG.Generic)

-- __unique:__ @toSDL_X11EventHook_Aux@
foreign import ccall safe "wrapper"
  hs_bindgen_74aa64577de95c6c_base
    :: (BG.Ptr BG.Void -> BG.Ptr BG.Void -> IO BG.CBool)
    -> IO (BG.FunPtr (BG.Ptr BG.Void -> BG.Ptr BG.Void -> IO BG.CBool))

-- __unique:__ @toSDL_X11EventHook_Aux@
hs_bindgen_74aa64577de95c6c
  :: SDL_X11EventHook_Aux
  -> IO (BG.FunPtr SDL_X11EventHook_Aux)
hs_bindgen_74aa64577de95c6c :: SDL_X11EventHook_Aux -> IO (FunPtr SDL_X11EventHook_Aux)
hs_bindgen_74aa64577de95c6c =
  \SDL_X11EventHook_Aux
fun0 ->
    (FunPtr (Ptr Void -> Ptr Void -> IO CBool)
 -> FunPtr SDL_X11EventHook_Aux)
-> IO (FunPtr (Ptr Void -> Ptr Void -> IO CBool))
-> IO (FunPtr SDL_X11EventHook_Aux)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
      FunPtr (Ptr Void -> Ptr Void -> IO CBool)
-> FunPtr SDL_X11EventHook_Aux
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr
      ( (Ptr Void -> Ptr Void -> IO CBool)
-> IO (FunPtr (Ptr Void -> Ptr Void -> IO CBool))
hs_bindgen_74aa64577de95c6c_base
          ( \Ptr Void
x1 ->
              \Ptr Void
x2 ->
                (CBool -> CBool) -> IO CBool -> IO CBool
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap CBool -> CBool
CBool -> FFIType CBool
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType (forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_X11EventHook_Aux
fun0 (FFIType (Ptr Void) -> Ptr Void
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr Void)
x1) (FFIType (Ptr XEvent) -> Ptr XEvent
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr XEvent)
x2))
          )
      )

-- __unique:__ @fromSDL_X11EventHook_Aux@
foreign import ccall safe "dynamic"
  hs_bindgen_cc5ab09f101f43e5_base
    :: BG.FunPtr (BG.Ptr BG.Void -> BG.Ptr BG.Void -> IO BG.CBool)
    -> BG.Ptr BG.Void
    -> BG.Ptr BG.Void
    -> IO BG.CBool

-- __unique:__ @fromSDL_X11EventHook_Aux@
hs_bindgen_cc5ab09f101f43e5
  :: BG.FunPtr SDL_X11EventHook_Aux
  -> SDL_X11EventHook_Aux
hs_bindgen_cc5ab09f101f43e5 :: FunPtr SDL_X11EventHook_Aux -> SDL_X11EventHook_Aux
hs_bindgen_cc5ab09f101f43e5 =
  \FunPtr SDL_X11EventHook_Aux
funPtr0 ->
    (Ptr Void -> Ptr XEvent -> IO CBool) -> SDL_X11EventHook_Aux
SDL_X11EventHook_Aux
      ( \Ptr Void
x1 ->
          \Ptr XEvent
x2 ->
            (CBool -> CBool) -> IO CBool -> IO CBool
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
              CBool -> CBool
FFIType CBool -> CBool
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType
              (FunPtr (Ptr Void -> Ptr Void -> IO CBool)
-> Ptr Void -> Ptr Void -> IO CBool
hs_bindgen_cc5ab09f101f43e5_base (FunPtr SDL_X11EventHook_Aux
-> FunPtr (Ptr Void -> Ptr Void -> IO CBool)
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr FunPtr SDL_X11EventHook_Aux
funPtr0) (Ptr Void -> FFIType (Ptr Void)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr Void
x1) (Ptr XEvent -> FFIType (Ptr XEvent)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr XEvent
x2))
      )

instance BG.ToFunPtr SDL_X11EventHook_Aux where
  toFunPtr :: SDL_X11EventHook_Aux -> IO (FunPtr SDL_X11EventHook_Aux)
toFunPtr = SDL_X11EventHook_Aux -> IO (FunPtr SDL_X11EventHook_Aux)
hs_bindgen_74aa64577de95c6c

instance BG.FromFunPtr SDL_X11EventHook_Aux where
  fromFunPtr :: FunPtr SDL_X11EventHook_Aux -> SDL_X11EventHook_Aux
fromFunPtr = FunPtr SDL_X11EventHook_Aux -> SDL_X11EventHook_Aux
hs_bindgen_cc5ab09f101f43e5

instance
  (ty ~ (BG.Ptr BG.Void -> BG.Ptr XEvent -> IO BG.CBool))
  => BG.CompatHasField.HasField "unwrap" SDL_X11EventHook_Aux ty
  where
  hasField :: SDL_X11EventHook_Aux -> (ty -> SDL_X11EventHook_Aux, ty)
hasField =
    \SDL_X11EventHook_Aux
x0 ->
      ( \ty
y1 ->
          SDL_X11EventHook_Aux{unwrap :: Ptr Void -> Ptr XEvent -> IO CBool
unwrap = ty
Ptr Void -> Ptr XEvent -> IO CBool
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_X11EventHook_Aux
x0
      )

instance
  (ty ~ (BG.Ptr BG.Void -> BG.Ptr XEvent -> IO BG.CBool))
  => BG.HasField "unwrap" (BG.Ptr SDL_X11EventHook_Aux) (BG.Ptr ty)
  where
  getField :: Ptr SDL_X11EventHook_Aux -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_X11EventHook_Aux
-> Ptr (CFieldType SDL_X11EventHook_Aux "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_X11EventHook_Aux "unwrap" where
  type
    CFieldType SDL_X11EventHook_Aux "unwrap" =
      BG.Ptr BG.Void -> BG.Ptr XEvent -> IO BG.CBool

  offset# :: Proxy# SDL_X11EventHook_Aux -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_X11EventHook_Aux
_ -> \Proxy# "unwrap"
_ -> Int
0

-- | A callback to be used with SDL_SetX11EventHook.
--
--     This callback may modify the event, and should return true if the event should continue to be processed, or false to prevent further processing.
--
--     As this is processing an event directly from the X11 event loop, this callback should do the minimum required work and return quickly.
--
--     [@userdata@]: the app-defined pointer provided to SDL_SetX11EventHook.
--
--     [@xevent@]: a pointer to an Xlib 'XEvent' union to process.
--
--     [Returns]: true to let event continue on, false to drop it.
--
--     [Thread safety]: This may only be called (by SDL) from the thread handling the X11 event loop.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_SetX11EventHook'
--
--     [C declaration]: @SDL_X11EventHook@, defined at @SDL3\/SDL_system.h 163:24@
newtype SDL_X11EventHook = SDL_X11EventHook
  { SDL_X11EventHook -> FunPtr SDL_X11EventHook_Aux
unwrap :: BG.FunPtr SDL_X11EventHook_Aux
  }
  deriving stock ((forall x. SDL_X11EventHook -> Rep SDL_X11EventHook x)
-> (forall x. Rep SDL_X11EventHook x -> SDL_X11EventHook)
-> Generic SDL_X11EventHook
forall x. Rep SDL_X11EventHook x -> SDL_X11EventHook
forall x. SDL_X11EventHook -> Rep SDL_X11EventHook x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_X11EventHook -> Rep SDL_X11EventHook x
from :: forall x. SDL_X11EventHook -> Rep SDL_X11EventHook x
$cto :: forall x. Rep SDL_X11EventHook x -> SDL_X11EventHook
to :: forall x. Rep SDL_X11EventHook x -> SDL_X11EventHook
BG.Generic, SDL_X11EventHook -> SDL_X11EventHook -> Bool
(SDL_X11EventHook -> SDL_X11EventHook -> Bool)
-> (SDL_X11EventHook -> SDL_X11EventHook -> Bool)
-> Eq SDL_X11EventHook
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
== :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
$c/= :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
/= :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
Eq, Eq SDL_X11EventHook
Eq SDL_X11EventHook =>
(SDL_X11EventHook -> SDL_X11EventHook -> Ordering)
-> (SDL_X11EventHook -> SDL_X11EventHook -> Bool)
-> (SDL_X11EventHook -> SDL_X11EventHook -> Bool)
-> (SDL_X11EventHook -> SDL_X11EventHook -> Bool)
-> (SDL_X11EventHook -> SDL_X11EventHook -> Bool)
-> (SDL_X11EventHook -> SDL_X11EventHook -> SDL_X11EventHook)
-> (SDL_X11EventHook -> SDL_X11EventHook -> SDL_X11EventHook)
-> Ord SDL_X11EventHook
SDL_X11EventHook -> SDL_X11EventHook -> Bool
SDL_X11EventHook -> SDL_X11EventHook -> Ordering
SDL_X11EventHook -> SDL_X11EventHook -> SDL_X11EventHook
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: SDL_X11EventHook -> SDL_X11EventHook -> Ordering
compare :: SDL_X11EventHook -> SDL_X11EventHook -> Ordering
$c< :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
< :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
$c<= :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
<= :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
$c> :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
> :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
$c>= :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
>= :: SDL_X11EventHook -> SDL_X11EventHook -> Bool
$cmax :: SDL_X11EventHook -> SDL_X11EventHook -> SDL_X11EventHook
max :: SDL_X11EventHook -> SDL_X11EventHook -> SDL_X11EventHook
$cmin :: SDL_X11EventHook -> SDL_X11EventHook -> SDL_X11EventHook
min :: SDL_X11EventHook -> SDL_X11EventHook -> SDL_X11EventHook
Ord, Int -> SDL_X11EventHook -> ShowS
[SDL_X11EventHook] -> ShowS
SDL_X11EventHook -> String
(Int -> SDL_X11EventHook -> ShowS)
-> (SDL_X11EventHook -> String)
-> ([SDL_X11EventHook] -> ShowS)
-> Show SDL_X11EventHook
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_X11EventHook -> ShowS
showsPrec :: Int -> SDL_X11EventHook -> ShowS
$cshow :: SDL_X11EventHook -> String
show :: SDL_X11EventHook -> String
$cshowList :: [SDL_X11EventHook] -> ShowS
showList :: [SDL_X11EventHook] -> ShowS
Show)
  deriving newtype
    ( FFIType SDL_X11EventHook -> SDL_X11EventHook
SDL_X11EventHook -> FFIType SDL_X11EventHook
(SDL_X11EventHook -> FFIType SDL_X11EventHook)
-> (FFIType SDL_X11EventHook -> SDL_X11EventHook)
-> HasFFIType SDL_X11EventHook
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_X11EventHook -> FFIType SDL_X11EventHook
toFFIType :: SDL_X11EventHook -> FFIType SDL_X11EventHook
$cfromFFIType :: FFIType SDL_X11EventHook -> SDL_X11EventHook
fromFFIType :: FFIType SDL_X11EventHook -> SDL_X11EventHook
BG.HasFFIType
    , Ptr SDL_X11EventHook -> IO SDL_X11EventHook
Ptr SDL_X11EventHook -> Int -> IO SDL_X11EventHook
Ptr SDL_X11EventHook -> Int -> SDL_X11EventHook -> IO ()
Ptr SDL_X11EventHook -> SDL_X11EventHook -> IO ()
SDL_X11EventHook -> Int
(SDL_X11EventHook -> Int)
-> (SDL_X11EventHook -> Int)
-> (Ptr SDL_X11EventHook -> Int -> IO SDL_X11EventHook)
-> (Ptr SDL_X11EventHook -> Int -> SDL_X11EventHook -> IO ())
-> (forall b. Ptr b -> Int -> IO SDL_X11EventHook)
-> (forall b. Ptr b -> Int -> SDL_X11EventHook -> IO ())
-> (Ptr SDL_X11EventHook -> IO SDL_X11EventHook)
-> (Ptr SDL_X11EventHook -> SDL_X11EventHook -> IO ())
-> Storable SDL_X11EventHook
forall b. Ptr b -> Int -> IO SDL_X11EventHook
forall b. Ptr b -> Int -> SDL_X11EventHook -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
$csizeOf :: SDL_X11EventHook -> Int
sizeOf :: SDL_X11EventHook -> Int
$calignment :: SDL_X11EventHook -> Int
alignment :: SDL_X11EventHook -> Int
$cpeekElemOff :: Ptr SDL_X11EventHook -> Int -> IO SDL_X11EventHook
peekElemOff :: Ptr SDL_X11EventHook -> Int -> IO SDL_X11EventHook
$cpokeElemOff :: Ptr SDL_X11EventHook -> Int -> SDL_X11EventHook -> IO ()
pokeElemOff :: Ptr SDL_X11EventHook -> Int -> SDL_X11EventHook -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SDL_X11EventHook
peekByteOff :: forall b. Ptr b -> Int -> IO SDL_X11EventHook
$cpokeByteOff :: forall b. Ptr b -> Int -> SDL_X11EventHook -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SDL_X11EventHook -> IO ()
$cpeek :: Ptr SDL_X11EventHook -> IO SDL_X11EventHook
peek :: Ptr SDL_X11EventHook -> IO SDL_X11EventHook
$cpoke :: Ptr SDL_X11EventHook -> SDL_X11EventHook -> IO ()
poke :: Ptr SDL_X11EventHook -> SDL_X11EventHook -> IO ()
BG.Storable
    , Ptr SDL_X11EventHook -> IO SDL_X11EventHook
(Ptr SDL_X11EventHook -> IO SDL_X11EventHook)
-> ReadRaw SDL_X11EventHook
forall a. (Ptr a -> IO a) -> ReadRaw a
$creadRaw :: Ptr SDL_X11EventHook -> IO SDL_X11EventHook
readRaw :: Ptr SDL_X11EventHook -> IO SDL_X11EventHook
Marshal.ReadRaw
    , Proxy SDL_X11EventHook -> Int
(Proxy SDL_X11EventHook -> Int)
-> (Proxy SDL_X11EventHook -> Int) -> StaticSize SDL_X11EventHook
forall a. (Proxy a -> Int) -> (Proxy a -> Int) -> StaticSize a
$cstaticSizeOf :: Proxy SDL_X11EventHook -> Int
staticSizeOf :: Proxy SDL_X11EventHook -> Int
$cstaticAlignment :: Proxy SDL_X11EventHook -> Int
staticAlignment :: Proxy SDL_X11EventHook -> Int
Marshal.StaticSize
    , Ptr SDL_X11EventHook -> SDL_X11EventHook -> IO ()
(Ptr SDL_X11EventHook -> SDL_X11EventHook -> IO ())
-> WriteRaw SDL_X11EventHook
forall a. (Ptr a -> a -> IO ()) -> WriteRaw a
$cwriteRaw :: Ptr SDL_X11EventHook -> SDL_X11EventHook -> IO ()
writeRaw :: Ptr SDL_X11EventHook -> SDL_X11EventHook -> IO ()
Marshal.WriteRaw
    )

instance
  (ty ~ BG.FunPtr SDL_X11EventHook_Aux)
  => BG.CompatHasField.HasField "unwrap" SDL_X11EventHook ty
  where
  hasField :: SDL_X11EventHook -> (ty -> SDL_X11EventHook, ty)
hasField =
    \SDL_X11EventHook
x0 ->
      ( \ty
y1 ->
          SDL_X11EventHook{unwrap :: FunPtr SDL_X11EventHook_Aux
unwrap = ty
FunPtr SDL_X11EventHook_Aux
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_X11EventHook
x0
      )

instance
  (ty ~ BG.FunPtr SDL_X11EventHook_Aux)
  => BG.HasField "unwrap" (BG.Ptr SDL_X11EventHook) (BG.Ptr ty)
  where
  getField :: Ptr SDL_X11EventHook -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_X11EventHook
-> Ptr (CFieldType SDL_X11EventHook "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_X11EventHook "unwrap" where
  type
    CFieldType SDL_X11EventHook "unwrap" =
      BG.FunPtr SDL_X11EventHook_Aux

  offset# :: Proxy# SDL_X11EventHook -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_X11EventHook
_ -> \Proxy# "unwrap"
_ -> Int
0

-- | Application sandbox environment.
--
--     @since 3.2.0
--
--     [C declaration]: @enum SDL_Sandbox@, defined at @SDL3\/SDL_system.h 650:14@
newtype SDL_Sandbox = SDL_Sandbox
  { SDL_Sandbox -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_Sandbox -> Rep SDL_Sandbox x)
-> (forall x. Rep SDL_Sandbox x -> SDL_Sandbox)
-> Generic SDL_Sandbox
forall x. Rep SDL_Sandbox x -> SDL_Sandbox
forall x. SDL_Sandbox -> Rep SDL_Sandbox x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_Sandbox -> Rep SDL_Sandbox x
from :: forall x. SDL_Sandbox -> Rep SDL_Sandbox x
$cto :: forall x. Rep SDL_Sandbox x -> SDL_Sandbox
to :: forall x. Rep SDL_Sandbox x -> SDL_Sandbox
BG.Generic, SDL_Sandbox -> SDL_Sandbox -> Bool
(SDL_Sandbox -> SDL_Sandbox -> Bool)
-> (SDL_Sandbox -> SDL_Sandbox -> Bool) -> Eq SDL_Sandbox
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_Sandbox -> SDL_Sandbox -> Bool
== :: SDL_Sandbox -> SDL_Sandbox -> Bool
$c/= :: SDL_Sandbox -> SDL_Sandbox -> Bool
/= :: SDL_Sandbox -> SDL_Sandbox -> Bool
Eq, Eq SDL_Sandbox
Eq SDL_Sandbox =>
(SDL_Sandbox -> SDL_Sandbox -> Ordering)
-> (SDL_Sandbox -> SDL_Sandbox -> Bool)
-> (SDL_Sandbox -> SDL_Sandbox -> Bool)
-> (SDL_Sandbox -> SDL_Sandbox -> Bool)
-> (SDL_Sandbox -> SDL_Sandbox -> Bool)
-> (SDL_Sandbox -> SDL_Sandbox -> SDL_Sandbox)
-> (SDL_Sandbox -> SDL_Sandbox -> SDL_Sandbox)
-> Ord SDL_Sandbox
SDL_Sandbox -> SDL_Sandbox -> Bool
SDL_Sandbox -> SDL_Sandbox -> Ordering
SDL_Sandbox -> SDL_Sandbox -> SDL_Sandbox
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: SDL_Sandbox -> SDL_Sandbox -> Ordering
compare :: SDL_Sandbox -> SDL_Sandbox -> Ordering
$c< :: SDL_Sandbox -> SDL_Sandbox -> Bool
< :: SDL_Sandbox -> SDL_Sandbox -> Bool
$c<= :: SDL_Sandbox -> SDL_Sandbox -> Bool
<= :: SDL_Sandbox -> SDL_Sandbox -> Bool
$c> :: SDL_Sandbox -> SDL_Sandbox -> Bool
> :: SDL_Sandbox -> SDL_Sandbox -> Bool
$c>= :: SDL_Sandbox -> SDL_Sandbox -> Bool
>= :: SDL_Sandbox -> SDL_Sandbox -> Bool
$cmax :: SDL_Sandbox -> SDL_Sandbox -> SDL_Sandbox
max :: SDL_Sandbox -> SDL_Sandbox -> SDL_Sandbox
$cmin :: SDL_Sandbox -> SDL_Sandbox -> SDL_Sandbox
min :: SDL_Sandbox -> SDL_Sandbox -> SDL_Sandbox
Ord)
  deriving newtype (FFIType SDL_Sandbox -> SDL_Sandbox
SDL_Sandbox -> FFIType SDL_Sandbox
(SDL_Sandbox -> FFIType SDL_Sandbox)
-> (FFIType SDL_Sandbox -> SDL_Sandbox) -> HasFFIType SDL_Sandbox
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_Sandbox -> FFIType SDL_Sandbox
toFFIType :: SDL_Sandbox -> FFIType SDL_Sandbox
$cfromFFIType :: FFIType SDL_Sandbox -> SDL_Sandbox
fromFFIType :: FFIType SDL_Sandbox -> SDL_Sandbox
BG.HasFFIType)

instance Marshal.StaticSize SDL_Sandbox where
  staticSizeOf :: Proxy SDL_Sandbox -> Int
staticSizeOf = \Proxy SDL_Sandbox
_ -> (Int
4 :: Int)

  staticAlignment :: Proxy SDL_Sandbox -> Int
staticAlignment = \Proxy SDL_Sandbox
_ -> (Int
4 :: Int)

instance Marshal.ReadRaw SDL_Sandbox where
  readRaw :: Ptr SDL_Sandbox -> IO SDL_Sandbox
readRaw =
    \Ptr SDL_Sandbox
ptr0 ->
      (CUInt -> SDL_Sandbox) -> IO (CUInt -> SDL_Sandbox)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure CUInt -> SDL_Sandbox
SDL_Sandbox
        IO (CUInt -> SDL_Sandbox) -> IO CUInt -> IO SDL_Sandbox
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Ptr SDL_Sandbox -> Int -> IO CUInt
forall a b. ReadRaw a => Ptr b -> Int -> IO a
Marshal.readRawByteOff Ptr SDL_Sandbox
ptr0 (Int
0 :: Int)

instance Marshal.WriteRaw SDL_Sandbox where
  writeRaw :: Ptr SDL_Sandbox -> SDL_Sandbox -> IO ()
writeRaw =
    \Ptr SDL_Sandbox
ptr0 ->
      \SDL_Sandbox
s1 ->
        case SDL_Sandbox
s1 of
          SDL_Sandbox CUInt
unwrap2 ->
            Ptr SDL_Sandbox -> Int -> CUInt -> IO ()
forall a b. WriteRaw a => Ptr b -> Int -> a -> IO ()
Marshal.writeRawByteOff Ptr SDL_Sandbox
ptr0 (Int
0 :: Int) CUInt
unwrap2

deriving via Marshal.EquivStorable SDL_Sandbox instance BG.Storable SDL_Sandbox

deriving via BG.CUInt instance BG.Prim SDL_Sandbox

instance CEnum.CEnum SDL_Sandbox where
  type CEnumZ SDL_Sandbox = BG.CUInt

  toCEnum :: CEnumZ SDL_Sandbox -> SDL_Sandbox
toCEnum = CUInt -> SDL_Sandbox
CEnumZ SDL_Sandbox -> SDL_Sandbox
SDL_Sandbox

  fromCEnum :: SDL_Sandbox -> CEnumZ SDL_Sandbox
fromCEnum = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap"

  declaredValues :: forall (proxy :: * -> *).
proxy SDL_Sandbox -> DeclaredValues SDL_Sandbox
declaredValues =
    \proxy SDL_Sandbox
_ ->
      [(CEnumZ SDL_Sandbox, NonEmpty String)]
-> DeclaredValues SDL_Sandbox
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_Sandbox
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SANDBOX_NONE")
        , (CUInt
CEnumZ SDL_Sandbox
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SANDBOX_UNKNOWN_CONTAINER")
        , (CUInt
CEnumZ SDL_Sandbox
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SANDBOX_FLATPAK")
        , (CUInt
CEnumZ SDL_Sandbox
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SANDBOX_SNAP")
        , (CUInt
CEnumZ SDL_Sandbox
4, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SANDBOX_MACOS")
        ]

  showsUndeclared :: forall (proxy :: * -> *).
proxy SDL_Sandbox -> Int -> CEnumZ SDL_Sandbox -> ShowS
showsUndeclared =
    String -> proxy SDL_Sandbox -> Int -> CEnumZ SDL_Sandbox -> ShowS
forall a (proxy :: * -> *).
Show (CEnumZ a) =>
String -> proxy a -> Int -> CEnumZ a -> ShowS
CEnum.showsWrappedUndeclared String
"SDL_Sandbox"

  readPrecUndeclared :: ReadPrec SDL_Sandbox
readPrecUndeclared =
    String -> ReadPrec SDL_Sandbox
forall a. (CEnum a, Read (CEnumZ a)) => String -> ReadPrec a
CEnum.readPrecWrappedUndeclared String
"SDL_Sandbox"

  isDeclared :: SDL_Sandbox -> Bool
isDeclared = SDL_Sandbox -> Bool
forall a. SequentialCEnum a => a -> Bool
CEnum.seqIsDeclared

  mkDeclared :: CEnumZ SDL_Sandbox -> Maybe SDL_Sandbox
mkDeclared = CEnumZ SDL_Sandbox -> Maybe SDL_Sandbox
forall a. SequentialCEnum a => CEnumZ a -> Maybe a
CEnum.seqMkDeclared

instance CEnum.SequentialCEnum SDL_Sandbox where
  minDeclaredValue :: SDL_Sandbox
minDeclaredValue = SDL_Sandbox
SDL_SANDBOX_NONE

  maxDeclaredValue :: SDL_Sandbox
maxDeclaredValue = SDL_Sandbox
SDL_SANDBOX_MACOS

instance Show SDL_Sandbox where
  showsPrec :: Int -> SDL_Sandbox -> ShowS
showsPrec = Int -> SDL_Sandbox -> ShowS
forall a. CEnum a => Int -> a -> ShowS
CEnum.shows

instance Read SDL_Sandbox where
  readPrec :: ReadPrec SDL_Sandbox
readPrec = ReadPrec SDL_Sandbox
forall a. CEnum a => ReadPrec a
CEnum.readPrec

  readList :: ReadS [SDL_Sandbox]
readList = ReadS [SDL_Sandbox]
forall a. Read a => ReadS [a]
BG.readListDefault

  readListPrec :: ReadPrec [SDL_Sandbox]
readListPrec = ReadPrec [SDL_Sandbox]
forall a. Read a => ReadPrec [a]
BG.readListPrecDefault

instance
  (ty ~ BG.CUInt)
  => BG.CompatHasField.HasField "unwrap" SDL_Sandbox ty
  where
  hasField :: SDL_Sandbox -> (ty -> SDL_Sandbox, ty)
hasField =
    \SDL_Sandbox
x0 ->
      ( \ty
y1 ->
          SDL_Sandbox{unwrap :: CUInt
unwrap = ty
CUInt
y1}
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"unwrap" SDL_Sandbox
x0
      )

instance
  (ty ~ BG.CUInt)
  => BG.HasField "unwrap" (BG.Ptr SDL_Sandbox) (BG.Ptr ty)
  where
  getField :: Ptr SDL_Sandbox -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_Sandbox -> Ptr (CFieldType SDL_Sandbox "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_Sandbox "unwrap" where
  type CFieldType SDL_Sandbox "unwrap" = BG.CUInt

  offset# :: Proxy# SDL_Sandbox -> Proxy# "unwrap" -> Int
offset# = \Proxy# SDL_Sandbox
_ -> \Proxy# "unwrap"
_ -> Int
0

-- | [C declaration]: @SDL_SANDBOX_NONE@, defined at @SDL3\/SDL_system.h 652:5@
pattern SDL_SANDBOX_NONE :: SDL_Sandbox
pattern $mSDL_SANDBOX_NONE :: forall {r}. SDL_Sandbox -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SANDBOX_NONE :: SDL_Sandbox
SDL_SANDBOX_NONE = SDL_Sandbox 0

-- | [C declaration]: @SDL_SANDBOX_UNKNOWN_CONTAINER@, defined at @SDL3\/SDL_system.h 653:5@
pattern SDL_SANDBOX_UNKNOWN_CONTAINER :: SDL_Sandbox
pattern $mSDL_SANDBOX_UNKNOWN_CONTAINER :: forall {r}. SDL_Sandbox -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SANDBOX_UNKNOWN_CONTAINER :: SDL_Sandbox
SDL_SANDBOX_UNKNOWN_CONTAINER = SDL_Sandbox 1

-- | [C declaration]: @SDL_SANDBOX_FLATPAK@, defined at @SDL3\/SDL_system.h 654:5@
pattern SDL_SANDBOX_FLATPAK :: SDL_Sandbox
pattern $mSDL_SANDBOX_FLATPAK :: forall {r}. SDL_Sandbox -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SANDBOX_FLATPAK :: SDL_Sandbox
SDL_SANDBOX_FLATPAK = SDL_Sandbox 2

-- | [C declaration]: @SDL_SANDBOX_SNAP@, defined at @SDL3\/SDL_system.h 655:5@
pattern SDL_SANDBOX_SNAP :: SDL_Sandbox
pattern $mSDL_SANDBOX_SNAP :: forall {r}. SDL_Sandbox -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SANDBOX_SNAP :: SDL_Sandbox
SDL_SANDBOX_SNAP = SDL_Sandbox 3

-- | [C declaration]: @SDL_SANDBOX_MACOS@, defined at @SDL3\/SDL_system.h 656:5@
pattern SDL_SANDBOX_MACOS :: SDL_Sandbox
pattern $mSDL_SANDBOX_MACOS :: forall {r}. SDL_Sandbox -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SANDBOX_MACOS :: SDL_Sandbox
SDL_SANDBOX_MACOS = SDL_Sandbox 4