packages feed

sdl3-bindgen-sys-0.0.0.1: src/SDL3/Sys/Bindgen/System.hs

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

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 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
  { unwrap :: BG.Ptr BG.Void -> BG.Ptr XEvent -> IO BG.CBool
  }
  deriving stock (BG.Generic)
  deriving newtype (BG.HasFFIType)

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

-- __unique:__ @toSDL_X11EventHook_Aux@
hs_bindgen_74aa64577de95c6c
  :: SDL_X11EventHook_Aux
  -> IO (BG.FunPtr SDL_X11EventHook_Aux)
hs_bindgen_74aa64577de95c6c =
  \fun0 ->
    fmap BG.castFunPtrFromFFIType (hs_bindgen_74aa64577de95c6c_base (BG.toFFIType fun0))

-- __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.Word8)
    -> BG.Ptr BG.Void
    -> BG.Ptr BG.Void
    -> IO BG.Word8

-- __unique:__ @fromSDL_X11EventHook_Aux@
hs_bindgen_cc5ab09f101f43e5
  :: BG.FunPtr SDL_X11EventHook_Aux
  -> SDL_X11EventHook_Aux
hs_bindgen_cc5ab09f101f43e5 =
  \funPtr0 ->
    BG.fromFFIType (hs_bindgen_cc5ab09f101f43e5_base (BG.castFunPtrToFFIType funPtr0))

instance BG.ToFunPtr SDL_X11EventHook_Aux where
  toFunPtr = hs_bindgen_74aa64577de95c6c

instance BG.FromFunPtr SDL_X11EventHook_Aux where
  fromFunPtr = 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 =
    \x0 ->
      ( \y1 ->
          SDL_X11EventHook_Aux{unwrap = y1}
      , BG.getField @"unwrap" 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 = HasCField.fromPtr (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# = \_ -> \_ -> 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
  { unwrap :: BG.FunPtr SDL_X11EventHook_Aux
  }
  deriving stock (BG.Generic, Eq, Ord, Show)
  deriving newtype
    ( BG.HasFFIType
    , BG.Storable
    , Marshal.ReadRaw
    , Marshal.StaticSize
    , Marshal.WriteRaw
    )

instance
  (ty ~ BG.FunPtr SDL_X11EventHook_Aux)
  => BG.CompatHasField.HasField "unwrap" SDL_X11EventHook ty
  where
  hasField =
    \x0 ->
      ( \y1 ->
          SDL_X11EventHook{unwrap = y1}
      , BG.getField @"unwrap" x0
      )

instance
  (ty ~ BG.FunPtr SDL_X11EventHook_Aux)
  => BG.HasField "unwrap" (BG.Ptr SDL_X11EventHook) (BG.Ptr ty)
  where
  getField = HasCField.fromPtr (BG.Proxy @"unwrap")

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

  offset# = \_ -> \_ -> 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
  { unwrap :: BG.CUInt
  }
  deriving stock (BG.Generic, Eq, Ord)
  deriving newtype (BG.HasFFIType)

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

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

instance Marshal.ReadRaw SDL_Sandbox where
  readRaw =
    \ptr0 ->
      pure SDL_Sandbox
        <*> Marshal.readRawByteOff ptr0 (0 :: Int)

instance Marshal.WriteRaw SDL_Sandbox where
  writeRaw =
    \ptr0 ->
      \s1 ->
        case s1 of
          SDL_Sandbox unwrap2 ->
            Marshal.writeRawByteOff ptr0 (0 :: Int) 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 = SDL_Sandbox

  fromCEnum = BG.getField @"unwrap"

  declaredValues =
    \_ ->
      CEnum.declaredValuesFromList
        [ (0, BG.singleton "SDL_SANDBOX_NONE")
        , (1, BG.singleton "SDL_SANDBOX_UNKNOWN_CONTAINER")
        , (2, BG.singleton "SDL_SANDBOX_FLATPAK")
        , (3, BG.singleton "SDL_SANDBOX_SNAP")
        , (4, BG.singleton "SDL_SANDBOX_MACOS")
        ]

  showsUndeclared =
    CEnum.showsWrappedUndeclared "SDL_Sandbox"

  readPrecUndeclared =
    CEnum.readPrecWrappedUndeclared "SDL_Sandbox"

  isDeclared = CEnum.seqIsDeclared

  mkDeclared = CEnum.seqMkDeclared

instance CEnum.SequentialCEnum SDL_Sandbox where
  minDeclaredValue = SDL_SANDBOX_NONE

  maxDeclaredValue = SDL_SANDBOX_MACOS

instance Show SDL_Sandbox where
  showsPrec = CEnum.shows

instance Read SDL_Sandbox where
  readPrec = CEnum.readPrec

  readList = BG.readListDefault

  readListPrec = BG.readListPrecDefault

instance
  (ty ~ BG.CUInt)
  => BG.CompatHasField.HasField "unwrap" SDL_Sandbox ty
  where
  hasField =
    \x0 ->
      ( \y1 ->
          SDL_Sandbox{unwrap = y1}
      , BG.getField @"unwrap" x0
      )

instance
  (ty ~ BG.CUInt)
  => BG.HasField "unwrap" (BG.Ptr SDL_Sandbox) (BG.Ptr ty)
  where
  getField = HasCField.fromPtr (BG.Proxy @"unwrap")

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

  offset# = \_ -> \_ -> 0

-- | [C declaration]: @SDL_SANDBOX_NONE@, defined at @SDL3\/SDL_system.h 652:5@
pattern SDL_SANDBOX_NONE :: SDL_Sandbox
pattern 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 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 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 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 SDL_SANDBOX_MACOS = SDL_Sandbox 4