{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE ExplicitForAll #-}
{-# 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 #-}
{-# LANGUAGE NoImplicitPrelude #-}

-- | SDL joystick support.
--
--     This is the lower-level joystick handling. If you want the simpler option, where what each button does is well-defined, you should use the gamepad API instead.
--
--     The term \"instance_id\" is the current instantiation of a joystick device in the system. If the joystick is removed and then re-inserted then it will get a new instance_id. instance_id\'s are monotonically increasing identifiers of a joystick plugged in.
--
--     The term \"player_index\" is the number assigned to a player on a specific controller. For XInput controllers this returns the XInput user index. Many joysticks will not be able to supply this information.
--
--     SDL_GUID is used as a stable 128-bit identifier for a joystick device that does not change over time. It identifies class of the device (a X360 wired controller for example). This identifier is platform dependent.
--
--     In order to use these functions, SDL_Init() must have been called with the SDL_INIT_JOYSTICK flag. This causes SDL to scan the system for joysticks, and load appropriate drivers.
--
--     If you would like to receive joystick updates while the application is in the background, you should set the following hint before calling SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS
--
--     SDL can provide virtual joysticks as well: the app defines an imaginary controller with @SDL_AttachVirtualJoystick()@, and then can provide inputs for it via @SDL_SetJoystickVirtualAxis()@, @SDL_SetJoystickVirtualButton()@, etc. As this data is supplied, it will look like a normal joystick to SDL, just not backed by a hardware driver. This has been used to make unusual devices, like VR headset controllers, look like normal joysticks, or provide recording\/playback of game inputs, etc. The joystick structure used to identify an SDL joystick.
--
--     This is opaque data.
--
--     @since 3.2.0
module SDL3.Sys.Bindgen.Joystick (
  SDL3.Sys.Bindgen.Joystick.SDL_Joystick,
  SDL3.Sys.Bindgen.Joystick.SDL_JoystickID (..),
  SDL3.Sys.Bindgen.Joystick.SDL_JoystickType (..),
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_UNKNOWN,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_GAMEPAD,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_WHEEL,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_ARCADE_STICK,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_FLIGHT_STICK,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_DANCE_PAD,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_GUITAR,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_DRUM_KIT,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_ARCADE_PAD,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_THROTTLE,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_TYPE_COUNT,
  SDL3.Sys.Bindgen.Joystick.SDL_JoystickConnectionState (..),
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_CONNECTION_INVALID,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_CONNECTION_UNKNOWN,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_CONNECTION_WIRED,
  pattern SDL3.Sys.Bindgen.Joystick.SDL_JOYSTICK_CONNECTION_WIRELESS,
  SDL3.Sys.Bindgen.Joystick.sDL_JOYSTICK_AXIS_MAX,
  SDL3.Sys.Bindgen.Joystick.sDL_JOYSTICK_AXIS_MIN,
  SDL3.Sys.Bindgen.Joystick.SDL_VirtualJoystickTouchpadDesc (..),
  SDL3.Sys.Bindgen.Joystick.SDL_VirtualJoystickSensorDesc (..),
  SDL3.Sys.Bindgen.Joystick.SDL_VirtualJoystickDesc (..),
  SDL3.Sys.Bindgen.Joystick.sDL_PROP_JOYSTICK_CAP_MONO_LED_BOOLEAN,
  SDL3.Sys.Bindgen.Joystick.sDL_PROP_JOYSTICK_CAP_RGB_LED_BOOLEAN,
  SDL3.Sys.Bindgen.Joystick.sDL_PROP_JOYSTICK_CAP_PLAYER_LED_BOOLEAN,
  SDL3.Sys.Bindgen.Joystick.sDL_PROP_JOYSTICK_CAP_RUMBLE_BOOLEAN,
  SDL3.Sys.Bindgen.Joystick.sDL_PROP_JOYSTICK_CAP_TRIGGER_RUMBLE_BOOLEAN,
  SDL3.Sys.Bindgen.Joystick.sDL_HAT_CENTERED,
  SDL3.Sys.Bindgen.Joystick.sDL_HAT_UP,
  SDL3.Sys.Bindgen.Joystick.sDL_HAT_RIGHT,
  SDL3.Sys.Bindgen.Joystick.sDL_HAT_DOWN,
  SDL3.Sys.Bindgen.Joystick.sDL_HAT_LEFT,
  SDL3.Sys.Bindgen.Joystick.sDL_HAT_RIGHTUP,
  SDL3.Sys.Bindgen.Joystick.sDL_HAT_RIGHTDOWN,
  SDL3.Sys.Bindgen.Joystick.sDL_HAT_LEFTUP,
  SDL3.Sys.Bindgen.Joystick.sDL_HAT_LEFTDOWN,
)
where

import Prelude (
  Bounded,
  Enum,
  Eq,
  IO,
  Int,
  Integral,
  Num,
  Ord,
  Read,
  Real,
  Show,
  pure,
  (<*>),
  (>>),
  type (~),
 )

import C.Expr.HostPlatform qualified
import HsBindgen.Runtime.CEnum qualified as CEnum
import HsBindgen.Runtime.ConstantArray qualified as CA
import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.PtrConst qualified as PtrConst
import HsBindgen.Runtime.Struct qualified as Struct
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField
import SDL3.Sys.Bindgen.Sensor qualified
import SDL3.Sys.Bindgen.Stdinc qualified

-- | [C declaration]: @struct SDL_Joystick@, defined at @SDL3\/SDL_joystick.h 94:16@
data SDL_Joystick

-- | This is a unique ID for a joystick for the time it is connected to the system, and is never reused for the lifetime of the application.
--
--     If the joystick is disconnected and reconnected, it will get a new ID.
--
--     The value 0 is an invalid ID.
--
--     @since 3.2.0
--
--     [C declaration]: @SDL_JoystickID@, defined at @SDL3\/SDL_joystick.h 106:16@
newtype SDL_JoystickID = SDL_JoystickID
  { SDL_JoystickID -> Uint32
unwrap :: SDL3.Sys.Bindgen.Stdinc.Uint32
  }
  deriving stock ((forall x. SDL_JoystickID -> Rep SDL_JoystickID x)
-> (forall x. Rep SDL_JoystickID x -> SDL_JoystickID)
-> Generic SDL_JoystickID
forall x. Rep SDL_JoystickID x -> SDL_JoystickID
forall x. SDL_JoystickID -> Rep SDL_JoystickID x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_JoystickID -> Rep SDL_JoystickID x
from :: forall x. SDL_JoystickID -> Rep SDL_JoystickID x
$cto :: forall x. Rep SDL_JoystickID x -> SDL_JoystickID
to :: forall x. Rep SDL_JoystickID x -> SDL_JoystickID
BG.Generic, SDL_JoystickID -> SDL_JoystickID -> Bool
(SDL_JoystickID -> SDL_JoystickID -> Bool)
-> (SDL_JoystickID -> SDL_JoystickID -> Bool) -> Eq SDL_JoystickID
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_JoystickID -> SDL_JoystickID -> Bool
== :: SDL_JoystickID -> SDL_JoystickID -> Bool
$c/= :: SDL_JoystickID -> SDL_JoystickID -> Bool
/= :: SDL_JoystickID -> SDL_JoystickID -> Bool
Eq, Eq SDL_JoystickID
Eq SDL_JoystickID =>
(SDL_JoystickID -> SDL_JoystickID -> Ordering)
-> (SDL_JoystickID -> SDL_JoystickID -> Bool)
-> (SDL_JoystickID -> SDL_JoystickID -> Bool)
-> (SDL_JoystickID -> SDL_JoystickID -> Bool)
-> (SDL_JoystickID -> SDL_JoystickID -> Bool)
-> (SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> Ord SDL_JoystickID
SDL_JoystickID -> SDL_JoystickID -> Bool
SDL_JoystickID -> SDL_JoystickID -> Ordering
SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
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_JoystickID -> SDL_JoystickID -> Ordering
compare :: SDL_JoystickID -> SDL_JoystickID -> Ordering
$c< :: SDL_JoystickID -> SDL_JoystickID -> Bool
< :: SDL_JoystickID -> SDL_JoystickID -> Bool
$c<= :: SDL_JoystickID -> SDL_JoystickID -> Bool
<= :: SDL_JoystickID -> SDL_JoystickID -> Bool
$c> :: SDL_JoystickID -> SDL_JoystickID -> Bool
> :: SDL_JoystickID -> SDL_JoystickID -> Bool
$c>= :: SDL_JoystickID -> SDL_JoystickID -> Bool
>= :: SDL_JoystickID -> SDL_JoystickID -> Bool
$cmax :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
max :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$cmin :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
min :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
Ord, ReadPrec [SDL_JoystickID]
ReadPrec SDL_JoystickID
Int -> ReadS SDL_JoystickID
ReadS [SDL_JoystickID]
(Int -> ReadS SDL_JoystickID)
-> ReadS [SDL_JoystickID]
-> ReadPrec SDL_JoystickID
-> ReadPrec [SDL_JoystickID]
-> Read SDL_JoystickID
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS SDL_JoystickID
readsPrec :: Int -> ReadS SDL_JoystickID
$creadList :: ReadS [SDL_JoystickID]
readList :: ReadS [SDL_JoystickID]
$creadPrec :: ReadPrec SDL_JoystickID
readPrec :: ReadPrec SDL_JoystickID
$creadListPrec :: ReadPrec [SDL_JoystickID]
readListPrec :: ReadPrec [SDL_JoystickID]
Read, Int -> SDL_JoystickID -> ShowS
[SDL_JoystickID] -> ShowS
SDL_JoystickID -> String
(Int -> SDL_JoystickID -> ShowS)
-> (SDL_JoystickID -> String)
-> ([SDL_JoystickID] -> ShowS)
-> Show SDL_JoystickID
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_JoystickID -> ShowS
showsPrec :: Int -> SDL_JoystickID -> ShowS
$cshow :: SDL_JoystickID -> String
show :: SDL_JoystickID -> String
$cshowList :: [SDL_JoystickID] -> ShowS
showList :: [SDL_JoystickID] -> ShowS
Show)
  deriving newtype
    ( Word64 -> Int -> SDL_JoystickID
SDL_JoystickID -> Int -> Word64
(SDL_JoystickID -> Int -> Word64)
-> (Word64 -> Int -> SDL_JoystickID) -> Bitfield SDL_JoystickID
forall a.
(a -> Int -> Word64) -> (Word64 -> Int -> a) -> Bitfield a
$cnarrow :: SDL_JoystickID -> Int -> Word64
narrow :: SDL_JoystickID -> Int -> Word64
$cextend :: Word64 -> Int -> SDL_JoystickID
extend :: Word64 -> Int -> SDL_JoystickID
BG.Bitfield
    , Eq SDL_JoystickID
SDL_JoystickID
Eq SDL_JoystickID =>
(SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> SDL_JoystickID
-> (Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> Bool)
-> (SDL_JoystickID -> Maybe Int)
-> (SDL_JoystickID -> Int)
-> (SDL_JoystickID -> Bool)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int)
-> Bits SDL_JoystickID
Int -> SDL_JoystickID
SDL_JoystickID -> Bool
SDL_JoystickID -> Int
SDL_JoystickID -> Maybe Int
SDL_JoystickID -> SDL_JoystickID
SDL_JoystickID -> Int -> Bool
SDL_JoystickID -> Int -> SDL_JoystickID
SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
.&. :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$c.|. :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
.|. :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$cxor :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
xor :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$ccomplement :: SDL_JoystickID -> SDL_JoystickID
complement :: SDL_JoystickID -> SDL_JoystickID
$cshift :: SDL_JoystickID -> Int -> SDL_JoystickID
shift :: SDL_JoystickID -> Int -> SDL_JoystickID
$crotate :: SDL_JoystickID -> Int -> SDL_JoystickID
rotate :: SDL_JoystickID -> Int -> SDL_JoystickID
$czeroBits :: SDL_JoystickID
zeroBits :: SDL_JoystickID
$cbit :: Int -> SDL_JoystickID
bit :: Int -> SDL_JoystickID
$csetBit :: SDL_JoystickID -> Int -> SDL_JoystickID
setBit :: SDL_JoystickID -> Int -> SDL_JoystickID
$cclearBit :: SDL_JoystickID -> Int -> SDL_JoystickID
clearBit :: SDL_JoystickID -> Int -> SDL_JoystickID
$ccomplementBit :: SDL_JoystickID -> Int -> SDL_JoystickID
complementBit :: SDL_JoystickID -> Int -> SDL_JoystickID
$ctestBit :: SDL_JoystickID -> Int -> Bool
testBit :: SDL_JoystickID -> Int -> Bool
$cbitSizeMaybe :: SDL_JoystickID -> Maybe Int
bitSizeMaybe :: SDL_JoystickID -> Maybe Int
$cbitSize :: SDL_JoystickID -> Int
bitSize :: SDL_JoystickID -> Int
$cisSigned :: SDL_JoystickID -> Bool
isSigned :: SDL_JoystickID -> Bool
$cshiftL :: SDL_JoystickID -> Int -> SDL_JoystickID
shiftL :: SDL_JoystickID -> Int -> SDL_JoystickID
$cunsafeShiftL :: SDL_JoystickID -> Int -> SDL_JoystickID
unsafeShiftL :: SDL_JoystickID -> Int -> SDL_JoystickID
$cshiftR :: SDL_JoystickID -> Int -> SDL_JoystickID
shiftR :: SDL_JoystickID -> Int -> SDL_JoystickID
$cunsafeShiftR :: SDL_JoystickID -> Int -> SDL_JoystickID
unsafeShiftR :: SDL_JoystickID -> Int -> SDL_JoystickID
$crotateL :: SDL_JoystickID -> Int -> SDL_JoystickID
rotateL :: SDL_JoystickID -> Int -> SDL_JoystickID
$crotateR :: SDL_JoystickID -> Int -> SDL_JoystickID
rotateR :: SDL_JoystickID -> Int -> SDL_JoystickID
$cpopCount :: SDL_JoystickID -> Int
popCount :: SDL_JoystickID -> Int
BG.Bits
    , Bits SDL_JoystickID
Bits SDL_JoystickID =>
(SDL_JoystickID -> Int)
-> (SDL_JoystickID -> Int)
-> (SDL_JoystickID -> Int)
-> FiniteBits SDL_JoystickID
SDL_JoystickID -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: SDL_JoystickID -> Int
finiteBitSize :: SDL_JoystickID -> Int
$ccountLeadingZeros :: SDL_JoystickID -> Int
countLeadingZeros :: SDL_JoystickID -> Int
$ccountTrailingZeros :: SDL_JoystickID -> Int
countTrailingZeros :: SDL_JoystickID -> Int
BG.FiniteBits
    , FFIType SDL_JoystickID -> SDL_JoystickID
SDL_JoystickID -> FFIType SDL_JoystickID
(SDL_JoystickID -> FFIType SDL_JoystickID)
-> (FFIType SDL_JoystickID -> SDL_JoystickID)
-> HasFFIType SDL_JoystickID
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_JoystickID -> FFIType SDL_JoystickID
toFFIType :: SDL_JoystickID -> FFIType SDL_JoystickID
$cfromFFIType :: FFIType SDL_JoystickID -> SDL_JoystickID
fromFFIType :: FFIType SDL_JoystickID -> SDL_JoystickID
BG.HasFFIType
    , Ord SDL_JoystickID
Ord SDL_JoystickID =>
((SDL_JoystickID, SDL_JoystickID) -> [SDL_JoystickID])
-> ((SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Int)
-> ((SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Int)
-> ((SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Bool)
-> ((SDL_JoystickID, SDL_JoystickID) -> Int)
-> ((SDL_JoystickID, SDL_JoystickID) -> Int)
-> Ix SDL_JoystickID
(SDL_JoystickID, SDL_JoystickID) -> Int
(SDL_JoystickID, SDL_JoystickID) -> [SDL_JoystickID]
(SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Bool
(SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Int
forall a.
Ord a =>
((a, a) -> [a])
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Bool)
-> ((a, a) -> Int)
-> ((a, a) -> Int)
-> Ix a
$crange :: (SDL_JoystickID, SDL_JoystickID) -> [SDL_JoystickID]
range :: (SDL_JoystickID, SDL_JoystickID) -> [SDL_JoystickID]
$cindex :: (SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Int
index :: (SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Int
$cunsafeIndex :: (SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Int
unsafeIndex :: (SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Int
$cinRange :: (SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Bool
inRange :: (SDL_JoystickID, SDL_JoystickID) -> SDL_JoystickID -> Bool
$crangeSize :: (SDL_JoystickID, SDL_JoystickID) -> Int
rangeSize :: (SDL_JoystickID, SDL_JoystickID) -> Int
$cunsafeRangeSize :: (SDL_JoystickID, SDL_JoystickID) -> Int
unsafeRangeSize :: (SDL_JoystickID, SDL_JoystickID) -> Int
BG.Ix
    , Addr# -> Int# -> SDL_JoystickID
ByteArray# -> Int# -> SDL_JoystickID
Proxy SDL_JoystickID -> Int#
SDL_JoystickID -> Int#
(Proxy SDL_JoystickID -> Int#)
-> (SDL_JoystickID -> Int#)
-> (Proxy SDL_JoystickID -> Int#)
-> (SDL_JoystickID -> Int#)
-> (ByteArray# -> Int# -> SDL_JoystickID)
-> (forall s.
    MutableByteArray# s
    -> Int# -> State# s -> (# State# s, SDL_JoystickID #))
-> (forall s.
    MutableByteArray# s
    -> Int# -> SDL_JoystickID -> State# s -> State# s)
-> (forall s.
    MutableByteArray# s
    -> Int# -> Int# -> SDL_JoystickID -> State# s -> State# s)
-> (Addr# -> Int# -> SDL_JoystickID)
-> (forall s.
    Addr# -> Int# -> State# s -> (# State# s, SDL_JoystickID #))
-> (forall s.
    Addr# -> Int# -> SDL_JoystickID -> State# s -> State# s)
-> (forall s.
    Addr# -> Int# -> Int# -> SDL_JoystickID -> State# s -> State# s)
-> Prim SDL_JoystickID
forall s.
Addr# -> Int# -> Int# -> SDL_JoystickID -> State# s -> State# s
forall s.
Addr# -> Int# -> State# s -> (# State# s, SDL_JoystickID #)
forall s. Addr# -> Int# -> SDL_JoystickID -> State# s -> State# s
forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_JoystickID -> State# s -> State# s
forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_JoystickID #)
forall s.
MutableByteArray# s
-> Int# -> SDL_JoystickID -> State# s -> State# s
forall a.
(Proxy a -> Int#)
-> (a -> Int#)
-> (Proxy a -> Int#)
-> (a -> Int#)
-> (ByteArray# -> Int# -> a)
-> (forall s.
    MutableByteArray# s -> Int# -> State# s -> (# State# s, a #))
-> (forall s.
    MutableByteArray# s -> Int# -> a -> State# s -> State# s)
-> (forall s.
    MutableByteArray# s -> Int# -> Int# -> a -> State# s -> State# s)
-> (Addr# -> Int# -> a)
-> (forall s. Addr# -> Int# -> State# s -> (# State# s, a #))
-> (forall s. Addr# -> Int# -> a -> State# s -> State# s)
-> (forall s. Addr# -> Int# -> Int# -> a -> State# s -> State# s)
-> Prim a
$csizeOfType# :: Proxy SDL_JoystickID -> Int#
sizeOfType# :: Proxy SDL_JoystickID -> Int#
$csizeOf# :: SDL_JoystickID -> Int#
sizeOf# :: SDL_JoystickID -> Int#
$calignmentOfType# :: Proxy SDL_JoystickID -> Int#
alignmentOfType# :: Proxy SDL_JoystickID -> Int#
$calignment# :: SDL_JoystickID -> Int#
alignment# :: SDL_JoystickID -> Int#
$cindexByteArray# :: ByteArray# -> Int# -> SDL_JoystickID
indexByteArray# :: ByteArray# -> Int# -> SDL_JoystickID
$creadByteArray# :: forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_JoystickID #)
readByteArray# :: forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, SDL_JoystickID #)
$cwriteByteArray# :: forall s.
MutableByteArray# s
-> Int# -> SDL_JoystickID -> State# s -> State# s
writeByteArray# :: forall s.
MutableByteArray# s
-> Int# -> SDL_JoystickID -> State# s -> State# s
$csetByteArray# :: forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_JoystickID -> State# s -> State# s
setByteArray# :: forall s.
MutableByteArray# s
-> Int# -> Int# -> SDL_JoystickID -> State# s -> State# s
$cindexOffAddr# :: Addr# -> Int# -> SDL_JoystickID
indexOffAddr# :: Addr# -> Int# -> SDL_JoystickID
$creadOffAddr# :: forall s.
Addr# -> Int# -> State# s -> (# State# s, SDL_JoystickID #)
readOffAddr# :: forall s.
Addr# -> Int# -> State# s -> (# State# s, SDL_JoystickID #)
$cwriteOffAddr# :: forall s. Addr# -> Int# -> SDL_JoystickID -> State# s -> State# s
writeOffAddr# :: forall s. Addr# -> Int# -> SDL_JoystickID -> State# s -> State# s
$csetOffAddr# :: forall s.
Addr# -> Int# -> Int# -> SDL_JoystickID -> State# s -> State# s
setOffAddr# :: forall s.
Addr# -> Int# -> Int# -> SDL_JoystickID -> State# s -> State# s
BG.Prim
    , Ptr SDL_JoystickID -> IO SDL_JoystickID
Ptr SDL_JoystickID -> Int -> IO SDL_JoystickID
Ptr SDL_JoystickID -> Int -> SDL_JoystickID -> IO ()
Ptr SDL_JoystickID -> SDL_JoystickID -> IO ()
SDL_JoystickID -> Int
(SDL_JoystickID -> Int)
-> (SDL_JoystickID -> Int)
-> (Ptr SDL_JoystickID -> Int -> IO SDL_JoystickID)
-> (Ptr SDL_JoystickID -> Int -> SDL_JoystickID -> IO ())
-> (forall b. Ptr b -> Int -> IO SDL_JoystickID)
-> (forall b. Ptr b -> Int -> SDL_JoystickID -> IO ())
-> (Ptr SDL_JoystickID -> IO SDL_JoystickID)
-> (Ptr SDL_JoystickID -> SDL_JoystickID -> IO ())
-> Storable SDL_JoystickID
forall b. Ptr b -> Int -> IO SDL_JoystickID
forall b. Ptr b -> Int -> SDL_JoystickID -> 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_JoystickID -> Int
sizeOf :: SDL_JoystickID -> Int
$calignment :: SDL_JoystickID -> Int
alignment :: SDL_JoystickID -> Int
$cpeekElemOff :: Ptr SDL_JoystickID -> Int -> IO SDL_JoystickID
peekElemOff :: Ptr SDL_JoystickID -> Int -> IO SDL_JoystickID
$cpokeElemOff :: Ptr SDL_JoystickID -> Int -> SDL_JoystickID -> IO ()
pokeElemOff :: Ptr SDL_JoystickID -> Int -> SDL_JoystickID -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SDL_JoystickID
peekByteOff :: forall b. Ptr b -> Int -> IO SDL_JoystickID
$cpokeByteOff :: forall b. Ptr b -> Int -> SDL_JoystickID -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SDL_JoystickID -> IO ()
$cpeek :: Ptr SDL_JoystickID -> IO SDL_JoystickID
peek :: Ptr SDL_JoystickID -> IO SDL_JoystickID
$cpoke :: Ptr SDL_JoystickID -> SDL_JoystickID -> IO ()
poke :: Ptr SDL_JoystickID -> SDL_JoystickID -> IO ()
BG.Storable
    , SDL_JoystickID
SDL_JoystickID -> SDL_JoystickID -> Bounded SDL_JoystickID
forall a. a -> a -> Bounded a
$cminBound :: SDL_JoystickID
minBound :: SDL_JoystickID
$cmaxBound :: SDL_JoystickID
maxBound :: SDL_JoystickID
Bounded
    , Int -> SDL_JoystickID
SDL_JoystickID -> Int
SDL_JoystickID -> [SDL_JoystickID]
SDL_JoystickID -> SDL_JoystickID
SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID]
SDL_JoystickID
-> SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID]
(SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID)
-> (Int -> SDL_JoystickID)
-> (SDL_JoystickID -> Int)
-> (SDL_JoystickID -> [SDL_JoystickID])
-> (SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID])
-> (SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID])
-> (SDL_JoystickID
    -> SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID])
-> Enum SDL_JoystickID
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: SDL_JoystickID -> SDL_JoystickID
succ :: SDL_JoystickID -> SDL_JoystickID
$cpred :: SDL_JoystickID -> SDL_JoystickID
pred :: SDL_JoystickID -> SDL_JoystickID
$ctoEnum :: Int -> SDL_JoystickID
toEnum :: Int -> SDL_JoystickID
$cfromEnum :: SDL_JoystickID -> Int
fromEnum :: SDL_JoystickID -> Int
$cenumFrom :: SDL_JoystickID -> [SDL_JoystickID]
enumFrom :: SDL_JoystickID -> [SDL_JoystickID]
$cenumFromThen :: SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID]
enumFromThen :: SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID]
$cenumFromTo :: SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID]
enumFromTo :: SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID]
$cenumFromThenTo :: SDL_JoystickID
-> SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID]
enumFromThenTo :: SDL_JoystickID
-> SDL_JoystickID -> SDL_JoystickID -> [SDL_JoystickID]
Enum
    , Enum SDL_JoystickID
Real SDL_JoystickID
(Real SDL_JoystickID, Enum SDL_JoystickID) =>
(SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID
    -> SDL_JoystickID -> (SDL_JoystickID, SDL_JoystickID))
-> (SDL_JoystickID
    -> SDL_JoystickID -> (SDL_JoystickID, SDL_JoystickID))
-> (SDL_JoystickID -> Integer)
-> Integral SDL_JoystickID
SDL_JoystickID -> Integer
SDL_JoystickID
-> SDL_JoystickID -> (SDL_JoystickID, SDL_JoystickID)
SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
quot :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$crem :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
rem :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$cdiv :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
div :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$cmod :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
mod :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$cquotRem :: SDL_JoystickID
-> SDL_JoystickID -> (SDL_JoystickID, SDL_JoystickID)
quotRem :: SDL_JoystickID
-> SDL_JoystickID -> (SDL_JoystickID, SDL_JoystickID)
$cdivMod :: SDL_JoystickID
-> SDL_JoystickID -> (SDL_JoystickID, SDL_JoystickID)
divMod :: SDL_JoystickID
-> SDL_JoystickID -> (SDL_JoystickID, SDL_JoystickID)
$ctoInteger :: SDL_JoystickID -> Integer
toInteger :: SDL_JoystickID -> Integer
Integral
    , Ptr SDL_JoystickID -> IO SDL_JoystickID
(Ptr SDL_JoystickID -> IO SDL_JoystickID) -> ReadRaw SDL_JoystickID
forall a. (Ptr a -> IO a) -> ReadRaw a
$creadRaw :: Ptr SDL_JoystickID -> IO SDL_JoystickID
readRaw :: Ptr SDL_JoystickID -> IO SDL_JoystickID
Marshal.ReadRaw
    , Proxy SDL_JoystickID -> Int
(Proxy SDL_JoystickID -> Int)
-> (Proxy SDL_JoystickID -> Int) -> StaticSize SDL_JoystickID
forall a. (Proxy a -> Int) -> (Proxy a -> Int) -> StaticSize a
$cstaticSizeOf :: Proxy SDL_JoystickID -> Int
staticSizeOf :: Proxy SDL_JoystickID -> Int
$cstaticAlignment :: Proxy SDL_JoystickID -> Int
staticAlignment :: Proxy SDL_JoystickID -> Int
Marshal.StaticSize
    , Ptr SDL_JoystickID -> SDL_JoystickID -> IO ()
(Ptr SDL_JoystickID -> SDL_JoystickID -> IO ())
-> WriteRaw SDL_JoystickID
forall a. (Ptr a -> a -> IO ()) -> WriteRaw a
$cwriteRaw :: Ptr SDL_JoystickID -> SDL_JoystickID -> IO ()
writeRaw :: Ptr SDL_JoystickID -> SDL_JoystickID -> IO ()
Marshal.WriteRaw
    , Integer -> SDL_JoystickID
SDL_JoystickID -> SDL_JoystickID
SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
(SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID)
-> (SDL_JoystickID -> SDL_JoystickID)
-> (Integer -> SDL_JoystickID)
-> Num SDL_JoystickID
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
+ :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$c- :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
- :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$c* :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
* :: SDL_JoystickID -> SDL_JoystickID -> SDL_JoystickID
$cnegate :: SDL_JoystickID -> SDL_JoystickID
negate :: SDL_JoystickID -> SDL_JoystickID
$cabs :: SDL_JoystickID -> SDL_JoystickID
abs :: SDL_JoystickID -> SDL_JoystickID
$csignum :: SDL_JoystickID -> SDL_JoystickID
signum :: SDL_JoystickID -> SDL_JoystickID
$cfromInteger :: Integer -> SDL_JoystickID
fromInteger :: Integer -> SDL_JoystickID
Num
    , Num SDL_JoystickID
Ord SDL_JoystickID
(Num SDL_JoystickID, Ord SDL_JoystickID) =>
(SDL_JoystickID -> Rational) -> Real SDL_JoystickID
SDL_JoystickID -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: SDL_JoystickID -> Rational
toRational :: SDL_JoystickID -> Rational
Real
    )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.CompatHasField.HasField "unwrap" SDL_JoystickID ty
  where
  hasField :: SDL_JoystickID -> (ty -> SDL_JoystickID, ty)
hasField =
    \SDL_JoystickID
x0 ->
      ( \ty
y1 ->
          SDL_JoystickID{unwrap :: Uint32
unwrap = ty
Uint32
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_JoystickID
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.HasField "unwrap" (BG.Ptr SDL_JoystickID) (BG.Ptr ty)
  where
  getField :: Ptr SDL_JoystickID -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_JoystickID -> Ptr (CFieldType SDL_JoystickID "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_JoystickID "unwrap" where
  type
    CFieldType SDL_JoystickID "unwrap" =
      SDL3.Sys.Bindgen.Stdinc.Uint32

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

-- | An enum of some common joystick types.
--
--     In some cases, SDL can identify a low-level joystick as being a certain type of device, and will report it through SDL_GetJoystickType (or SDL_GetJoystickTypeForID).
--
--     This is by no means a complete list of everything that can be plugged into a computer.
--
--     You may refer to [XInput Controller Types](https://learn.microsoft.com/en-us/windows/win32/xinput/xinput-and-controller-subtypes) table for a general understanding of each joystick type.
--
--     @since 3.2.0
--
--     [C declaration]: @enum SDL_JoystickType@, defined at @SDL3\/SDL_joystick.h 124:14@
newtype SDL_JoystickType = SDL_JoystickType
  { SDL_JoystickType -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_JoystickType -> Rep SDL_JoystickType x)
-> (forall x. Rep SDL_JoystickType x -> SDL_JoystickType)
-> Generic SDL_JoystickType
forall x. Rep SDL_JoystickType x -> SDL_JoystickType
forall x. SDL_JoystickType -> Rep SDL_JoystickType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_JoystickType -> Rep SDL_JoystickType x
from :: forall x. SDL_JoystickType -> Rep SDL_JoystickType x
$cto :: forall x. Rep SDL_JoystickType x -> SDL_JoystickType
to :: forall x. Rep SDL_JoystickType x -> SDL_JoystickType
BG.Generic, SDL_JoystickType -> SDL_JoystickType -> Bool
(SDL_JoystickType -> SDL_JoystickType -> Bool)
-> (SDL_JoystickType -> SDL_JoystickType -> Bool)
-> Eq SDL_JoystickType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_JoystickType -> SDL_JoystickType -> Bool
== :: SDL_JoystickType -> SDL_JoystickType -> Bool
$c/= :: SDL_JoystickType -> SDL_JoystickType -> Bool
/= :: SDL_JoystickType -> SDL_JoystickType -> Bool
Eq, Eq SDL_JoystickType
Eq SDL_JoystickType =>
(SDL_JoystickType -> SDL_JoystickType -> Ordering)
-> (SDL_JoystickType -> SDL_JoystickType -> Bool)
-> (SDL_JoystickType -> SDL_JoystickType -> Bool)
-> (SDL_JoystickType -> SDL_JoystickType -> Bool)
-> (SDL_JoystickType -> SDL_JoystickType -> Bool)
-> (SDL_JoystickType -> SDL_JoystickType -> SDL_JoystickType)
-> (SDL_JoystickType -> SDL_JoystickType -> SDL_JoystickType)
-> Ord SDL_JoystickType
SDL_JoystickType -> SDL_JoystickType -> Bool
SDL_JoystickType -> SDL_JoystickType -> Ordering
SDL_JoystickType -> SDL_JoystickType -> SDL_JoystickType
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_JoystickType -> SDL_JoystickType -> Ordering
compare :: SDL_JoystickType -> SDL_JoystickType -> Ordering
$c< :: SDL_JoystickType -> SDL_JoystickType -> Bool
< :: SDL_JoystickType -> SDL_JoystickType -> Bool
$c<= :: SDL_JoystickType -> SDL_JoystickType -> Bool
<= :: SDL_JoystickType -> SDL_JoystickType -> Bool
$c> :: SDL_JoystickType -> SDL_JoystickType -> Bool
> :: SDL_JoystickType -> SDL_JoystickType -> Bool
$c>= :: SDL_JoystickType -> SDL_JoystickType -> Bool
>= :: SDL_JoystickType -> SDL_JoystickType -> Bool
$cmax :: SDL_JoystickType -> SDL_JoystickType -> SDL_JoystickType
max :: SDL_JoystickType -> SDL_JoystickType -> SDL_JoystickType
$cmin :: SDL_JoystickType -> SDL_JoystickType -> SDL_JoystickType
min :: SDL_JoystickType -> SDL_JoystickType -> SDL_JoystickType
Ord)
  deriving newtype (FFIType SDL_JoystickType -> SDL_JoystickType
SDL_JoystickType -> FFIType SDL_JoystickType
(SDL_JoystickType -> FFIType SDL_JoystickType)
-> (FFIType SDL_JoystickType -> SDL_JoystickType)
-> HasFFIType SDL_JoystickType
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_JoystickType -> FFIType SDL_JoystickType
toFFIType :: SDL_JoystickType -> FFIType SDL_JoystickType
$cfromFFIType :: FFIType SDL_JoystickType -> SDL_JoystickType
fromFFIType :: FFIType SDL_JoystickType -> SDL_JoystickType
BG.HasFFIType)

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

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

instance Marshal.ReadRaw SDL_JoystickType where
  readRaw :: Ptr SDL_JoystickType -> IO SDL_JoystickType
readRaw =
    \Ptr SDL_JoystickType
ptr0 ->
      (CUInt -> SDL_JoystickType) -> IO (CUInt -> SDL_JoystickType)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure CUInt -> SDL_JoystickType
SDL_JoystickType
        IO (CUInt -> SDL_JoystickType) -> IO CUInt -> IO SDL_JoystickType
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_JoystickType -> Int -> IO CUInt
forall a b. ReadRaw a => Ptr b -> Int -> IO a
Marshal.readRawByteOff Ptr SDL_JoystickType
ptr0 (Int
0 :: Int)

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

deriving via Marshal.EquivStorable SDL_JoystickType instance BG.Storable SDL_JoystickType

deriving via BG.CUInt instance BG.Prim SDL_JoystickType

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

  toCEnum :: CEnumZ SDL_JoystickType -> SDL_JoystickType
toCEnum = CUInt -> SDL_JoystickType
CEnumZ SDL_JoystickType -> SDL_JoystickType
SDL_JoystickType

  fromCEnum :: SDL_JoystickType -> CEnumZ SDL_JoystickType
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_JoystickType -> DeclaredValues SDL_JoystickType
declaredValues =
    \proxy SDL_JoystickType
_ ->
      [(CEnumZ SDL_JoystickType, NonEmpty String)]
-> DeclaredValues SDL_JoystickType
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_JoystickType
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_UNKNOWN")
        , (CUInt
CEnumZ SDL_JoystickType
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_GAMEPAD")
        , (CUInt
CEnumZ SDL_JoystickType
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_WHEEL")
        , (CUInt
CEnumZ SDL_JoystickType
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_ARCADE_STICK")
        , (CUInt
CEnumZ SDL_JoystickType
4, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_FLIGHT_STICK")
        , (CUInt
CEnumZ SDL_JoystickType
5, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_DANCE_PAD")
        , (CUInt
CEnumZ SDL_JoystickType
6, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_GUITAR")
        , (CUInt
CEnumZ SDL_JoystickType
7, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_DRUM_KIT")
        , (CUInt
CEnumZ SDL_JoystickType
8, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_ARCADE_PAD")
        , (CUInt
CEnumZ SDL_JoystickType
9, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_THROTTLE")
        , (CUInt
CEnumZ SDL_JoystickType
10, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_TYPE_COUNT")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_JoystickType where
  minDeclaredValue :: SDL_JoystickType
minDeclaredValue = SDL_JoystickType
SDL_JOYSTICK_TYPE_UNKNOWN

  maxDeclaredValue :: SDL_JoystickType
maxDeclaredValue = SDL_JoystickType
SDL_JOYSTICK_TYPE_COUNT

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

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

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

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

instance
  (ty ~ BG.CUInt)
  => BG.CompatHasField.HasField "unwrap" SDL_JoystickType ty
  where
  hasField :: SDL_JoystickType -> (ty -> SDL_JoystickType, ty)
hasField =
    \SDL_JoystickType
x0 ->
      ( \ty
y1 ->
          SDL_JoystickType{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_JoystickType
x0
      )

instance
  (ty ~ BG.CUInt)
  => BG.HasField "unwrap" (BG.Ptr SDL_JoystickType) (BG.Ptr ty)
  where
  getField :: Ptr SDL_JoystickType -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_JoystickType
-> Ptr (CFieldType SDL_JoystickType "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_JoystickType "unwrap" where
  type CFieldType SDL_JoystickType "unwrap" = BG.CUInt

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

-- | [C declaration]: @SDL_JOYSTICK_TYPE_UNKNOWN@, defined at @SDL3\/SDL_joystick.h 126:5@
pattern SDL_JOYSTICK_TYPE_UNKNOWN :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_UNKNOWN :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_UNKNOWN :: SDL_JoystickType
SDL_JOYSTICK_TYPE_UNKNOWN = SDL_JoystickType 0

-- | [C declaration]: @SDL_JOYSTICK_TYPE_GAMEPAD@, defined at @SDL3\/SDL_joystick.h 127:5@
pattern SDL_JOYSTICK_TYPE_GAMEPAD :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_GAMEPAD :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_GAMEPAD :: SDL_JoystickType
SDL_JOYSTICK_TYPE_GAMEPAD = SDL_JoystickType 1

-- | [C declaration]: @SDL_JOYSTICK_TYPE_WHEEL@, defined at @SDL3\/SDL_joystick.h 128:5@
pattern SDL_JOYSTICK_TYPE_WHEEL :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_WHEEL :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_WHEEL :: SDL_JoystickType
SDL_JOYSTICK_TYPE_WHEEL = SDL_JoystickType 2

-- | [C declaration]: @SDL_JOYSTICK_TYPE_ARCADE_STICK@, defined at @SDL3\/SDL_joystick.h 129:5@
pattern SDL_JOYSTICK_TYPE_ARCADE_STICK :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_ARCADE_STICK :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_ARCADE_STICK :: SDL_JoystickType
SDL_JOYSTICK_TYPE_ARCADE_STICK = SDL_JoystickType 3

-- | [C declaration]: @SDL_JOYSTICK_TYPE_FLIGHT_STICK@, defined at @SDL3\/SDL_joystick.h 130:5@
pattern SDL_JOYSTICK_TYPE_FLIGHT_STICK :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_FLIGHT_STICK :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_FLIGHT_STICK :: SDL_JoystickType
SDL_JOYSTICK_TYPE_FLIGHT_STICK = SDL_JoystickType 4

-- | [C declaration]: @SDL_JOYSTICK_TYPE_DANCE_PAD@, defined at @SDL3\/SDL_joystick.h 131:5@
pattern SDL_JOYSTICK_TYPE_DANCE_PAD :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_DANCE_PAD :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_DANCE_PAD :: SDL_JoystickType
SDL_JOYSTICK_TYPE_DANCE_PAD = SDL_JoystickType 5

-- | [C declaration]: @SDL_JOYSTICK_TYPE_GUITAR@, defined at @SDL3\/SDL_joystick.h 132:5@
pattern SDL_JOYSTICK_TYPE_GUITAR :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_GUITAR :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_GUITAR :: SDL_JoystickType
SDL_JOYSTICK_TYPE_GUITAR = SDL_JoystickType 6

-- | [C declaration]: @SDL_JOYSTICK_TYPE_DRUM_KIT@, defined at @SDL3\/SDL_joystick.h 133:5@
pattern SDL_JOYSTICK_TYPE_DRUM_KIT :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_DRUM_KIT :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_DRUM_KIT :: SDL_JoystickType
SDL_JOYSTICK_TYPE_DRUM_KIT = SDL_JoystickType 7

-- | [C declaration]: @SDL_JOYSTICK_TYPE_ARCADE_PAD@, defined at @SDL3\/SDL_joystick.h 134:5@
pattern SDL_JOYSTICK_TYPE_ARCADE_PAD :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_ARCADE_PAD :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_ARCADE_PAD :: SDL_JoystickType
SDL_JOYSTICK_TYPE_ARCADE_PAD = SDL_JoystickType 8

-- | [C declaration]: @SDL_JOYSTICK_TYPE_THROTTLE@, defined at @SDL3\/SDL_joystick.h 135:5@
pattern SDL_JOYSTICK_TYPE_THROTTLE :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_THROTTLE :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_THROTTLE :: SDL_JoystickType
SDL_JOYSTICK_TYPE_THROTTLE = SDL_JoystickType 9

-- | [C declaration]: @SDL_JOYSTICK_TYPE_COUNT@, defined at @SDL3\/SDL_joystick.h 136:5@
pattern SDL_JOYSTICK_TYPE_COUNT :: SDL_JoystickType
pattern $mSDL_JOYSTICK_TYPE_COUNT :: forall {r}. SDL_JoystickType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_TYPE_COUNT :: SDL_JoystickType
SDL_JOYSTICK_TYPE_COUNT = SDL_JoystickType 10

-- | Possible connection states for a joystick device.
--
--     This is used by SDL_GetJoystickConnectionState to report how a device is connected to the system.
--
--     @since 3.2.0
--
--     [C declaration]: @enum SDL_JoystickConnectionState@, defined at @SDL3\/SDL_joystick.h 147:14@
newtype SDL_JoystickConnectionState = SDL_JoystickConnectionState
  { SDL_JoystickConnectionState -> CInt
unwrap :: BG.CInt
  }
  deriving stock ((forall x.
 SDL_JoystickConnectionState -> Rep SDL_JoystickConnectionState x)
-> (forall x.
    Rep SDL_JoystickConnectionState x -> SDL_JoystickConnectionState)
-> Generic SDL_JoystickConnectionState
forall x.
Rep SDL_JoystickConnectionState x -> SDL_JoystickConnectionState
forall x.
SDL_JoystickConnectionState -> Rep SDL_JoystickConnectionState x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_JoystickConnectionState -> Rep SDL_JoystickConnectionState x
from :: forall x.
SDL_JoystickConnectionState -> Rep SDL_JoystickConnectionState x
$cto :: forall x.
Rep SDL_JoystickConnectionState x -> SDL_JoystickConnectionState
to :: forall x.
Rep SDL_JoystickConnectionState x -> SDL_JoystickConnectionState
BG.Generic, SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
(SDL_JoystickConnectionState
 -> SDL_JoystickConnectionState -> Bool)
-> (SDL_JoystickConnectionState
    -> SDL_JoystickConnectionState -> Bool)
-> Eq SDL_JoystickConnectionState
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
== :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
$c/= :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
/= :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
Eq, Eq SDL_JoystickConnectionState
Eq SDL_JoystickConnectionState =>
(SDL_JoystickConnectionState
 -> SDL_JoystickConnectionState -> Ordering)
-> (SDL_JoystickConnectionState
    -> SDL_JoystickConnectionState -> Bool)
-> (SDL_JoystickConnectionState
    -> SDL_JoystickConnectionState -> Bool)
-> (SDL_JoystickConnectionState
    -> SDL_JoystickConnectionState -> Bool)
-> (SDL_JoystickConnectionState
    -> SDL_JoystickConnectionState -> Bool)
-> (SDL_JoystickConnectionState
    -> SDL_JoystickConnectionState -> SDL_JoystickConnectionState)
-> (SDL_JoystickConnectionState
    -> SDL_JoystickConnectionState -> SDL_JoystickConnectionState)
-> Ord SDL_JoystickConnectionState
SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
SDL_JoystickConnectionState
-> SDL_JoystickConnectionState -> Ordering
SDL_JoystickConnectionState
-> SDL_JoystickConnectionState -> SDL_JoystickConnectionState
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_JoystickConnectionState
-> SDL_JoystickConnectionState -> Ordering
compare :: SDL_JoystickConnectionState
-> SDL_JoystickConnectionState -> Ordering
$c< :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
< :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
$c<= :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
<= :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
$c> :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
> :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
$c>= :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
>= :: SDL_JoystickConnectionState -> SDL_JoystickConnectionState -> Bool
$cmax :: SDL_JoystickConnectionState
-> SDL_JoystickConnectionState -> SDL_JoystickConnectionState
max :: SDL_JoystickConnectionState
-> SDL_JoystickConnectionState -> SDL_JoystickConnectionState
$cmin :: SDL_JoystickConnectionState
-> SDL_JoystickConnectionState -> SDL_JoystickConnectionState
min :: SDL_JoystickConnectionState
-> SDL_JoystickConnectionState -> SDL_JoystickConnectionState
Ord)
  deriving newtype (FFIType SDL_JoystickConnectionState -> SDL_JoystickConnectionState
SDL_JoystickConnectionState -> FFIType SDL_JoystickConnectionState
(SDL_JoystickConnectionState
 -> FFIType SDL_JoystickConnectionState)
-> (FFIType SDL_JoystickConnectionState
    -> SDL_JoystickConnectionState)
-> HasFFIType SDL_JoystickConnectionState
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_JoystickConnectionState -> FFIType SDL_JoystickConnectionState
toFFIType :: SDL_JoystickConnectionState -> FFIType SDL_JoystickConnectionState
$cfromFFIType :: FFIType SDL_JoystickConnectionState -> SDL_JoystickConnectionState
fromFFIType :: FFIType SDL_JoystickConnectionState -> SDL_JoystickConnectionState
BG.HasFFIType)

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

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

instance Marshal.ReadRaw SDL_JoystickConnectionState where
  readRaw :: Ptr SDL_JoystickConnectionState -> IO SDL_JoystickConnectionState
readRaw =
    \Ptr SDL_JoystickConnectionState
ptr0 ->
      (CInt -> SDL_JoystickConnectionState)
-> IO (CInt -> SDL_JoystickConnectionState)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure CInt -> SDL_JoystickConnectionState
SDL_JoystickConnectionState
        IO (CInt -> SDL_JoystickConnectionState)
-> IO CInt -> IO SDL_JoystickConnectionState
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_JoystickConnectionState -> Int -> IO CInt
forall a b. ReadRaw a => Ptr b -> Int -> IO a
Marshal.readRawByteOff Ptr SDL_JoystickConnectionState
ptr0 (Int
0 :: Int)

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

deriving via
  Marshal.EquivStorable SDL_JoystickConnectionState
  instance
    BG.Storable SDL_JoystickConnectionState

deriving via BG.CInt instance BG.Prim SDL_JoystickConnectionState

instance CEnum.CEnum SDL_JoystickConnectionState where
  type CEnumZ SDL_JoystickConnectionState = BG.CInt

  toCEnum :: CEnumZ SDL_JoystickConnectionState -> SDL_JoystickConnectionState
toCEnum = CInt -> SDL_JoystickConnectionState
CEnumZ SDL_JoystickConnectionState -> SDL_JoystickConnectionState
SDL_JoystickConnectionState

  fromCEnum :: SDL_JoystickConnectionState -> CEnumZ SDL_JoystickConnectionState
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_JoystickConnectionState
-> DeclaredValues SDL_JoystickConnectionState
declaredValues =
    \proxy SDL_JoystickConnectionState
_ ->
      [(CEnumZ SDL_JoystickConnectionState, NonEmpty String)]
-> DeclaredValues SDL_JoystickConnectionState
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (-CInt
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_CONNECTION_INVALID")
        , (CInt
CEnumZ SDL_JoystickConnectionState
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_CONNECTION_UNKNOWN")
        , (CInt
CEnumZ SDL_JoystickConnectionState
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_CONNECTION_WIRED")
        , (CInt
CEnumZ SDL_JoystickConnectionState
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_JOYSTICK_CONNECTION_WIRELESS")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_JoystickConnectionState where
  minDeclaredValue :: SDL_JoystickConnectionState
minDeclaredValue = SDL_JoystickConnectionState
SDL_JOYSTICK_CONNECTION_INVALID

  maxDeclaredValue :: SDL_JoystickConnectionState
maxDeclaredValue = SDL_JoystickConnectionState
SDL_JOYSTICK_CONNECTION_WIRELESS

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

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

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

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

instance
  (ty ~ BG.CInt)
  => BG.CompatHasField.HasField "unwrap" SDL_JoystickConnectionState ty
  where
  hasField :: SDL_JoystickConnectionState
-> (ty -> SDL_JoystickConnectionState, ty)
hasField =
    \SDL_JoystickConnectionState
x0 ->
      ( \ty
y1 ->
          SDL_JoystickConnectionState{unwrap :: CInt
unwrap = ty
CInt
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_JoystickConnectionState
x0
      )

instance
  (ty ~ BG.CInt)
  => BG.HasField "unwrap" (BG.Ptr SDL_JoystickConnectionState) (BG.Ptr ty)
  where
  getField :: Ptr SDL_JoystickConnectionState -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_JoystickConnectionState
-> Ptr (CFieldType SDL_JoystickConnectionState "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_JoystickConnectionState "unwrap" where
  type
    CFieldType SDL_JoystickConnectionState "unwrap" =
      BG.CInt

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

-- | [C declaration]: @SDL_JOYSTICK_CONNECTION_INVALID@, defined at @SDL3\/SDL_joystick.h 149:5@
pattern SDL_JOYSTICK_CONNECTION_INVALID :: SDL_JoystickConnectionState
pattern $mSDL_JOYSTICK_CONNECTION_INVALID :: forall {r}.
SDL_JoystickConnectionState -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_CONNECTION_INVALID :: SDL_JoystickConnectionState
SDL_JOYSTICK_CONNECTION_INVALID = SDL_JoystickConnectionState (-1)

-- | [C declaration]: @SDL_JOYSTICK_CONNECTION_UNKNOWN@, defined at @SDL3\/SDL_joystick.h 150:5@
pattern SDL_JOYSTICK_CONNECTION_UNKNOWN :: SDL_JoystickConnectionState
pattern $mSDL_JOYSTICK_CONNECTION_UNKNOWN :: forall {r}.
SDL_JoystickConnectionState -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_CONNECTION_UNKNOWN :: SDL_JoystickConnectionState
SDL_JOYSTICK_CONNECTION_UNKNOWN = SDL_JoystickConnectionState 0

-- | [C declaration]: @SDL_JOYSTICK_CONNECTION_WIRED@, defined at @SDL3\/SDL_joystick.h 151:5@
pattern SDL_JOYSTICK_CONNECTION_WIRED :: SDL_JoystickConnectionState
pattern $mSDL_JOYSTICK_CONNECTION_WIRED :: forall {r}.
SDL_JoystickConnectionState -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_CONNECTION_WIRED :: SDL_JoystickConnectionState
SDL_JOYSTICK_CONNECTION_WIRED = SDL_JoystickConnectionState 1

-- | [C declaration]: @SDL_JOYSTICK_CONNECTION_WIRELESS@, defined at @SDL3\/SDL_joystick.h 152:5@
pattern SDL_JOYSTICK_CONNECTION_WIRELESS :: SDL_JoystickConnectionState
pattern $mSDL_JOYSTICK_CONNECTION_WIRELESS :: forall {r}.
SDL_JoystickConnectionState -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_JOYSTICK_CONNECTION_WIRELESS :: SDL_JoystickConnectionState
SDL_JOYSTICK_CONNECTION_WIRELESS = SDL_JoystickConnectionState 2

-- | The largest value an 'SDL_Joystick' \'s axis can report.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_JOYSTICK_AXIS_MIN'
--
--     [C declaration]: @macro SDL_JOYSTICK_AXIS_MAX@, defined at @SDL3\/SDL_joystick.h 162:9@
sDL_JOYSTICK_AXIS_MAX :: BG.CInt
sDL_JOYSTICK_AXIS_MAX :: CInt
sDL_JOYSTICK_AXIS_MAX = (CInt
32767 :: BG.CInt)

-- | The smallest value an 'SDL_Joystick' \'s axis can report.
--
--     This is a negative number!
--
--     @since 3.2.0
--
--     [See also]: 'sDL_JOYSTICK_AXIS_MAX'
--
--     [C declaration]: @macro SDL_JOYSTICK_AXIS_MIN@, defined at @SDL3\/SDL_joystick.h 173:9@
sDL_JOYSTICK_AXIS_MIN :: BG.CInt
sDL_JOYSTICK_AXIS_MIN :: CInt
sDL_JOYSTICK_AXIS_MIN =
  CInt -> MinusRes CInt
forall a. Minus a => a -> MinusRes a
C.Expr.HostPlatform.negate (CInt
32768 :: BG.CInt)

-- | The structure that describes a virtual joystick touchpad.
--
--     @since 3.2.0
--
--     [See also]: 'SDL_VirtualJoystickDesc'
--
--     [C declaration]: @struct SDL_VirtualJoystickTouchpadDesc@, defined at @SDL3\/SDL_joystick.h 433:16@
data SDL_VirtualJoystickTouchpadDesc = SDL_VirtualJoystickTouchpadDesc
  { SDL_VirtualJoystickTouchpadDesc -> Uint16
nfingers :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ the number of simultaneous fingers on this touchpad
  --
  --          [C declaration]: @nfingers@, defined at @SDL3\/SDL_joystick.h 435:12@
  , SDL_VirtualJoystickTouchpadDesc -> ConstantArray 3 Uint16
padding :: CA.ConstantArray 3 SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ [C declaration]: @padding@, defined at @SDL3\/SDL_joystick.h 436:12@
  }
  deriving stock ((forall x.
 SDL_VirtualJoystickTouchpadDesc
 -> Rep SDL_VirtualJoystickTouchpadDesc x)
-> (forall x.
    Rep SDL_VirtualJoystickTouchpadDesc x
    -> SDL_VirtualJoystickTouchpadDesc)
-> Generic SDL_VirtualJoystickTouchpadDesc
forall x.
Rep SDL_VirtualJoystickTouchpadDesc x
-> SDL_VirtualJoystickTouchpadDesc
forall x.
SDL_VirtualJoystickTouchpadDesc
-> Rep SDL_VirtualJoystickTouchpadDesc x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_VirtualJoystickTouchpadDesc
-> Rep SDL_VirtualJoystickTouchpadDesc x
from :: forall x.
SDL_VirtualJoystickTouchpadDesc
-> Rep SDL_VirtualJoystickTouchpadDesc x
$cto :: forall x.
Rep SDL_VirtualJoystickTouchpadDesc x
-> SDL_VirtualJoystickTouchpadDesc
to :: forall x.
Rep SDL_VirtualJoystickTouchpadDesc x
-> SDL_VirtualJoystickTouchpadDesc
BG.Generic, SDL_VirtualJoystickTouchpadDesc
-> SDL_VirtualJoystickTouchpadDesc -> Bool
(SDL_VirtualJoystickTouchpadDesc
 -> SDL_VirtualJoystickTouchpadDesc -> Bool)
-> (SDL_VirtualJoystickTouchpadDesc
    -> SDL_VirtualJoystickTouchpadDesc -> Bool)
-> Eq SDL_VirtualJoystickTouchpadDesc
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_VirtualJoystickTouchpadDesc
-> SDL_VirtualJoystickTouchpadDesc -> Bool
== :: SDL_VirtualJoystickTouchpadDesc
-> SDL_VirtualJoystickTouchpadDesc -> Bool
$c/= :: SDL_VirtualJoystickTouchpadDesc
-> SDL_VirtualJoystickTouchpadDesc -> Bool
/= :: SDL_VirtualJoystickTouchpadDesc
-> SDL_VirtualJoystickTouchpadDesc -> Bool
Eq, Int -> SDL_VirtualJoystickTouchpadDesc -> ShowS
[SDL_VirtualJoystickTouchpadDesc] -> ShowS
SDL_VirtualJoystickTouchpadDesc -> String
(Int -> SDL_VirtualJoystickTouchpadDesc -> ShowS)
-> (SDL_VirtualJoystickTouchpadDesc -> String)
-> ([SDL_VirtualJoystickTouchpadDesc] -> ShowS)
-> Show SDL_VirtualJoystickTouchpadDesc
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_VirtualJoystickTouchpadDesc -> ShowS
showsPrec :: Int -> SDL_VirtualJoystickTouchpadDesc -> ShowS
$cshow :: SDL_VirtualJoystickTouchpadDesc -> String
show :: SDL_VirtualJoystickTouchpadDesc -> String
$cshowList :: [SDL_VirtualJoystickTouchpadDesc] -> ShowS
showList :: [SDL_VirtualJoystickTouchpadDesc] -> ShowS
Show)

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

  staticAlignment :: Proxy SDL_VirtualJoystickTouchpadDesc -> Int
staticAlignment = \Proxy SDL_VirtualJoystickTouchpadDesc
_ -> (Int
2 :: Int)

instance Marshal.ReadRaw SDL_VirtualJoystickTouchpadDesc where
  readRaw :: Ptr SDL_VirtualJoystickTouchpadDesc
-> IO SDL_VirtualJoystickTouchpadDesc
readRaw =
    \Ptr SDL_VirtualJoystickTouchpadDesc
ptr0 ->
      (Uint16
 -> ConstantArray 3 Uint16 -> SDL_VirtualJoystickTouchpadDesc)
-> IO
     (Uint16
      -> ConstantArray 3 Uint16 -> SDL_VirtualJoystickTouchpadDesc)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Uint16 -> ConstantArray 3 Uint16 -> SDL_VirtualJoystickTouchpadDesc
SDL_VirtualJoystickTouchpadDesc
        IO
  (Uint16
   -> ConstantArray 3 Uint16 -> SDL_VirtualJoystickTouchpadDesc)
-> IO Uint16
-> IO (ConstantArray 3 Uint16 -> SDL_VirtualJoystickTouchpadDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "nfingers"
-> Ptr SDL_VirtualJoystickTouchpadDesc
-> IO (CFieldType SDL_VirtualJoystickTouchpadDesc "nfingers")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"nfingers") Ptr SDL_VirtualJoystickTouchpadDesc
ptr0
        IO (ConstantArray 3 Uint16 -> SDL_VirtualJoystickTouchpadDesc)
-> IO (ConstantArray 3 Uint16)
-> IO SDL_VirtualJoystickTouchpadDesc
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "padding"
-> Ptr SDL_VirtualJoystickTouchpadDesc
-> IO (CFieldType SDL_VirtualJoystickTouchpadDesc "padding")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"padding") Ptr SDL_VirtualJoystickTouchpadDesc
ptr0

instance Marshal.WriteRaw SDL_VirtualJoystickTouchpadDesc where
  writeRaw :: Ptr SDL_VirtualJoystickTouchpadDesc
-> SDL_VirtualJoystickTouchpadDesc -> IO ()
writeRaw =
    \Ptr SDL_VirtualJoystickTouchpadDesc
ptr0 ->
      \SDL_VirtualJoystickTouchpadDesc
s1 ->
        case SDL_VirtualJoystickTouchpadDesc
s1 of
          SDL_VirtualJoystickTouchpadDesc Uint16
nfingers2 ConstantArray 3 Uint16
padding3 ->
            Proxy "nfingers"
-> Ptr SDL_VirtualJoystickTouchpadDesc
-> CFieldType SDL_VirtualJoystickTouchpadDesc "nfingers"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"nfingers") Ptr SDL_VirtualJoystickTouchpadDesc
ptr0 CFieldType SDL_VirtualJoystickTouchpadDesc "nfingers"
Uint16
nfingers2
              IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "padding"
-> Ptr SDL_VirtualJoystickTouchpadDesc
-> CFieldType SDL_VirtualJoystickTouchpadDesc "padding"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"padding") Ptr SDL_VirtualJoystickTouchpadDesc
ptr0 CFieldType SDL_VirtualJoystickTouchpadDesc "padding"
ConstantArray 3 Uint16
padding3

deriving via
  Marshal.EquivStorable SDL_VirtualJoystickTouchpadDesc
  instance
    BG.Storable SDL_VirtualJoystickTouchpadDesc

deriving via
  Struct.IsStructViaReadRaw SDL_VirtualJoystickTouchpadDesc
  instance
    Struct.IsStruct SDL_VirtualJoystickTouchpadDesc

-- | the number of simultaneous fingers on this touchpad
--
--     [C declaration]: @nfingers@, defined at @SDL3\/SDL_joystick.h 435:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "nfingers" SDL_VirtualJoystickTouchpadDesc ty
  where
  hasField :: SDL_VirtualJoystickTouchpadDesc
-> (ty -> SDL_VirtualJoystickTouchpadDesc, ty)
hasField =
    \SDL_VirtualJoystickTouchpadDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickTouchpadDesc{nfingers :: Uint16
nfingers = ty
Uint16
y1, padding :: ConstantArray 3 Uint16
padding = 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 @"padding" SDL_VirtualJoystickTouchpadDesc
x0}
      , 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 @"nfingers" SDL_VirtualJoystickTouchpadDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "nfingers" (BG.Ptr SDL_VirtualJoystickTouchpadDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickTouchpadDesc -> Ptr ty
getField = Proxy "nfingers"
-> Ptr SDL_VirtualJoystickTouchpadDesc
-> Ptr (CFieldType SDL_VirtualJoystickTouchpadDesc "nfingers")
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 @"nfingers")

instance HasCField.HasCField SDL_VirtualJoystickTouchpadDesc "nfingers" where
  type
    CFieldType SDL_VirtualJoystickTouchpadDesc "nfingers" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickTouchpadDesc -> Proxy# "nfingers" -> Int
offset# = \Proxy# SDL_VirtualJoystickTouchpadDesc
_ -> \Proxy# "nfingers"
_ -> Int
0

-- | [C declaration]: @padding@, defined at @SDL3\/SDL_joystick.h 436:12@
instance
  (ty ~ CA.ConstantArray 3 SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "padding" SDL_VirtualJoystickTouchpadDesc ty
  where
  hasField :: SDL_VirtualJoystickTouchpadDesc
-> (ty -> SDL_VirtualJoystickTouchpadDesc, ty)
hasField =
    \SDL_VirtualJoystickTouchpadDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickTouchpadDesc{padding :: ConstantArray 3 Uint16
padding = ty
ConstantArray 3 Uint16
y1, nfingers :: Uint16
nfingers = 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 @"nfingers" SDL_VirtualJoystickTouchpadDesc
x0}
      , 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 @"padding" SDL_VirtualJoystickTouchpadDesc
x0
      )

instance
  (ty ~ CA.ConstantArray 3 SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "padding" (BG.Ptr SDL_VirtualJoystickTouchpadDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickTouchpadDesc -> Ptr ty
getField = Proxy "padding"
-> Ptr SDL_VirtualJoystickTouchpadDesc
-> Ptr (CFieldType SDL_VirtualJoystickTouchpadDesc "padding")
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 @"padding")

instance HasCField.HasCField SDL_VirtualJoystickTouchpadDesc "padding" where
  type
    CFieldType SDL_VirtualJoystickTouchpadDesc "padding" =
      CA.ConstantArray 3 SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickTouchpadDesc -> Proxy# "padding" -> Int
offset# = \Proxy# SDL_VirtualJoystickTouchpadDesc
_ -> \Proxy# "padding"
_ -> Int
2

-- | The structure that describes a virtual joystick sensor.
--
--     @since 3.2.0
--
--     [See also]: 'SDL_VirtualJoystickDesc'
--
--     [C declaration]: @struct SDL_VirtualJoystickSensorDesc@, defined at @SDL3\/SDL_joystick.h 446:16@
data SDL_VirtualJoystickSensorDesc = SDL_VirtualJoystickSensorDesc
  { SDL_VirtualJoystickSensorDesc -> SDL_SensorType
type' :: SDL3.Sys.Bindgen.Sensor.SDL_SensorType
  -- ^ the type of this sensor
  --
  --          [C declaration]: @type@, defined at @SDL3\/SDL_joystick.h 448:20@
  , SDL_VirtualJoystickSensorDesc -> CFloat
rate :: BG.CFloat
  -- ^ the update frequency of this sensor, may be 0.0f
  --
  --          [C declaration]: @rate@, defined at @SDL3\/SDL_joystick.h 449:11@
  }
  deriving stock ((forall x.
 SDL_VirtualJoystickSensorDesc
 -> Rep SDL_VirtualJoystickSensorDesc x)
-> (forall x.
    Rep SDL_VirtualJoystickSensorDesc x
    -> SDL_VirtualJoystickSensorDesc)
-> Generic SDL_VirtualJoystickSensorDesc
forall x.
Rep SDL_VirtualJoystickSensorDesc x
-> SDL_VirtualJoystickSensorDesc
forall x.
SDL_VirtualJoystickSensorDesc
-> Rep SDL_VirtualJoystickSensorDesc x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_VirtualJoystickSensorDesc
-> Rep SDL_VirtualJoystickSensorDesc x
from :: forall x.
SDL_VirtualJoystickSensorDesc
-> Rep SDL_VirtualJoystickSensorDesc x
$cto :: forall x.
Rep SDL_VirtualJoystickSensorDesc x
-> SDL_VirtualJoystickSensorDesc
to :: forall x.
Rep SDL_VirtualJoystickSensorDesc x
-> SDL_VirtualJoystickSensorDesc
BG.Generic, SDL_VirtualJoystickSensorDesc
-> SDL_VirtualJoystickSensorDesc -> Bool
(SDL_VirtualJoystickSensorDesc
 -> SDL_VirtualJoystickSensorDesc -> Bool)
-> (SDL_VirtualJoystickSensorDesc
    -> SDL_VirtualJoystickSensorDesc -> Bool)
-> Eq SDL_VirtualJoystickSensorDesc
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_VirtualJoystickSensorDesc
-> SDL_VirtualJoystickSensorDesc -> Bool
== :: SDL_VirtualJoystickSensorDesc
-> SDL_VirtualJoystickSensorDesc -> Bool
$c/= :: SDL_VirtualJoystickSensorDesc
-> SDL_VirtualJoystickSensorDesc -> Bool
/= :: SDL_VirtualJoystickSensorDesc
-> SDL_VirtualJoystickSensorDesc -> Bool
Eq, Int -> SDL_VirtualJoystickSensorDesc -> ShowS
[SDL_VirtualJoystickSensorDesc] -> ShowS
SDL_VirtualJoystickSensorDesc -> String
(Int -> SDL_VirtualJoystickSensorDesc -> ShowS)
-> (SDL_VirtualJoystickSensorDesc -> String)
-> ([SDL_VirtualJoystickSensorDesc] -> ShowS)
-> Show SDL_VirtualJoystickSensorDesc
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_VirtualJoystickSensorDesc -> ShowS
showsPrec :: Int -> SDL_VirtualJoystickSensorDesc -> ShowS
$cshow :: SDL_VirtualJoystickSensorDesc -> String
show :: SDL_VirtualJoystickSensorDesc -> String
$cshowList :: [SDL_VirtualJoystickSensorDesc] -> ShowS
showList :: [SDL_VirtualJoystickSensorDesc] -> ShowS
Show)

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

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

instance Marshal.ReadRaw SDL_VirtualJoystickSensorDesc where
  readRaw :: Ptr SDL_VirtualJoystickSensorDesc
-> IO SDL_VirtualJoystickSensorDesc
readRaw =
    \Ptr SDL_VirtualJoystickSensorDesc
ptr0 ->
      (SDL_SensorType -> CFloat -> SDL_VirtualJoystickSensorDesc)
-> IO (SDL_SensorType -> CFloat -> SDL_VirtualJoystickSensorDesc)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure SDL_SensorType -> CFloat -> SDL_VirtualJoystickSensorDesc
SDL_VirtualJoystickSensorDesc
        IO (SDL_SensorType -> CFloat -> SDL_VirtualJoystickSensorDesc)
-> IO SDL_SensorType
-> IO (CFloat -> SDL_VirtualJoystickSensorDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "type'"
-> Ptr SDL_VirtualJoystickSensorDesc
-> IO (CFieldType SDL_VirtualJoystickSensorDesc "type'")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"type'") Ptr SDL_VirtualJoystickSensorDesc
ptr0
        IO (CFloat -> SDL_VirtualJoystickSensorDesc)
-> IO CFloat -> IO SDL_VirtualJoystickSensorDesc
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "rate"
-> Ptr SDL_VirtualJoystickSensorDesc
-> IO (CFieldType SDL_VirtualJoystickSensorDesc "rate")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"rate") Ptr SDL_VirtualJoystickSensorDesc
ptr0

instance Marshal.WriteRaw SDL_VirtualJoystickSensorDesc where
  writeRaw :: Ptr SDL_VirtualJoystickSensorDesc
-> SDL_VirtualJoystickSensorDesc -> IO ()
writeRaw =
    \Ptr SDL_VirtualJoystickSensorDesc
ptr0 ->
      \SDL_VirtualJoystickSensorDesc
s1 ->
        case SDL_VirtualJoystickSensorDesc
s1 of
          SDL_VirtualJoystickSensorDesc SDL_SensorType
type'2 CFloat
rate3 ->
            Proxy "type'"
-> Ptr SDL_VirtualJoystickSensorDesc
-> CFieldType SDL_VirtualJoystickSensorDesc "type'"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"type'") Ptr SDL_VirtualJoystickSensorDesc
ptr0 CFieldType SDL_VirtualJoystickSensorDesc "type'"
SDL_SensorType
type'2
              IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "rate"
-> Ptr SDL_VirtualJoystickSensorDesc
-> CFieldType SDL_VirtualJoystickSensorDesc "rate"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"rate") Ptr SDL_VirtualJoystickSensorDesc
ptr0 CFloat
CFieldType SDL_VirtualJoystickSensorDesc "rate"
rate3

deriving via
  Marshal.EquivStorable SDL_VirtualJoystickSensorDesc
  instance
    BG.Storable SDL_VirtualJoystickSensorDesc

deriving via
  Struct.IsStructViaReadRaw SDL_VirtualJoystickSensorDesc
  instance
    Struct.IsStruct SDL_VirtualJoystickSensorDesc

-- | the type of this sensor
--
--     [C declaration]: @type@, defined at @SDL3\/SDL_joystick.h 448:20@
instance
  (ty ~ SDL3.Sys.Bindgen.Sensor.SDL_SensorType)
  => BG.CompatHasField.HasField "type'" SDL_VirtualJoystickSensorDesc ty
  where
  hasField :: SDL_VirtualJoystickSensorDesc
-> (ty -> SDL_VirtualJoystickSensorDesc, ty)
hasField =
    \SDL_VirtualJoystickSensorDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickSensorDesc{type' :: SDL_SensorType
type' = ty
SDL_SensorType
y1, rate :: CFloat
rate = 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 @"rate" SDL_VirtualJoystickSensorDesc
x0}
      , 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 @"type'" SDL_VirtualJoystickSensorDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Sensor.SDL_SensorType)
  => BG.HasField "type'" (BG.Ptr SDL_VirtualJoystickSensorDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickSensorDesc -> Ptr ty
getField = Proxy "type'"
-> Ptr SDL_VirtualJoystickSensorDesc
-> Ptr (CFieldType SDL_VirtualJoystickSensorDesc "type'")
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 @"type'")

instance HasCField.HasCField SDL_VirtualJoystickSensorDesc "type'" where
  type
    CFieldType SDL_VirtualJoystickSensorDesc "type'" =
      SDL3.Sys.Bindgen.Sensor.SDL_SensorType

  offset# :: Proxy# SDL_VirtualJoystickSensorDesc -> Proxy# "type'" -> Int
offset# = \Proxy# SDL_VirtualJoystickSensorDesc
_ -> \Proxy# "type'"
_ -> Int
0

-- | the update frequency of this sensor, may be 0.0f
--
--     [C declaration]: @rate@, defined at @SDL3\/SDL_joystick.h 449:11@
instance
  (ty ~ BG.CFloat)
  => BG.CompatHasField.HasField "rate" SDL_VirtualJoystickSensorDesc ty
  where
  hasField :: SDL_VirtualJoystickSensorDesc
-> (ty -> SDL_VirtualJoystickSensorDesc, ty)
hasField =
    \SDL_VirtualJoystickSensorDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickSensorDesc{rate :: CFloat
rate = ty
CFloat
y1, type' :: SDL_SensorType
type' = 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 @"type'" SDL_VirtualJoystickSensorDesc
x0}
      , 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 @"rate" SDL_VirtualJoystickSensorDesc
x0
      )

instance
  (ty ~ BG.CFloat)
  => BG.HasField "rate" (BG.Ptr SDL_VirtualJoystickSensorDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickSensorDesc -> Ptr ty
getField = Proxy "rate"
-> Ptr SDL_VirtualJoystickSensorDesc
-> Ptr (CFieldType SDL_VirtualJoystickSensorDesc "rate")
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 @"rate")

instance HasCField.HasCField SDL_VirtualJoystickSensorDesc "rate" where
  type
    CFieldType SDL_VirtualJoystickSensorDesc "rate" =
      BG.CFloat

  offset# :: Proxy# SDL_VirtualJoystickSensorDesc -> Proxy# "rate" -> Int
offset# = \Proxy# SDL_VirtualJoystickSensorDesc
_ -> \Proxy# "rate"
_ -> Int
4

-- | The structure that describes a virtual joystick.
--
--     This structure should be initialized using SDL_INIT_INTERFACE(). All elements of this structure are optional.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_AttachVirtualJoystick', SDL_INIT_INTERFACE, 'SDL_VirtualJoystickSensorDesc', 'SDL_VirtualJoystickTouchpadDesc'
--
--     [C declaration]: @struct SDL_VirtualJoystickDesc@, defined at @SDL3\/SDL_joystick.h 465:16@
data SDL_VirtualJoystickDesc = SDL_VirtualJoystickDesc
  { SDL_VirtualJoystickDesc -> Uint32
version :: SDL3.Sys.Bindgen.Stdinc.Uint32
  -- ^ the version of this interface
  --
  --          [C declaration]: @version@, defined at @SDL3\/SDL_joystick.h 467:12@
  , SDL_VirtualJoystickDesc -> Uint16
type' :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ @'SDL_JoystickType'@
  --
  --          [C declaration]: @type@, defined at @SDL3\/SDL_joystick.h 468:12@
  , SDL_VirtualJoystickDesc -> Uint16
padding :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ unused
  --
  --          [C declaration]: @padding@, defined at @SDL3\/SDL_joystick.h 469:12@
  , SDL_VirtualJoystickDesc -> Uint16
vendor_id :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ the USB vendor ID of this joystick
  --
  --          [C declaration]: @vendor_id@, defined at @SDL3\/SDL_joystick.h 470:12@
  , SDL_VirtualJoystickDesc -> Uint16
product_id :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ the USB product ID of this joystick
  --
  --          [C declaration]: @product_id@, defined at @SDL3\/SDL_joystick.h 471:12@
  , SDL_VirtualJoystickDesc -> Uint16
naxes :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ the number of axes on this joystick
  --
  --          [C declaration]: @naxes@, defined at @SDL3\/SDL_joystick.h 472:12@
  , SDL_VirtualJoystickDesc -> Uint16
nbuttons :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ the number of buttons on this joystick
  --
  --          [C declaration]: @nbuttons@, defined at @SDL3\/SDL_joystick.h 473:12@
  , SDL_VirtualJoystickDesc -> Uint16
nballs :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ the number of balls on this joystick
  --
  --          [C declaration]: @nballs@, defined at @SDL3\/SDL_joystick.h 474:12@
  , SDL_VirtualJoystickDesc -> Uint16
nhats :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ the number of hats on this joystick
  --
  --          [C declaration]: @nhats@, defined at @SDL3\/SDL_joystick.h 475:12@
  , SDL_VirtualJoystickDesc -> Uint16
ntouchpads :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ the number of touchpads on this joystick, requires @touchpads@ to point at valid descriptions
  --
  --          [C declaration]: @ntouchpads@, defined at @SDL3\/SDL_joystick.h 476:12@
  , SDL_VirtualJoystickDesc -> Uint16
nsensors :: SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ the number of sensors on this joystick, requires @sensors@ to point at valid descriptions
  --
  --          [C declaration]: @nsensors@, defined at @SDL3\/SDL_joystick.h 477:12@
  , SDL_VirtualJoystickDesc -> ConstantArray 2 Uint16
padding2 :: CA.ConstantArray 2 SDL3.Sys.Bindgen.Stdinc.Uint16
  -- ^ unused
  --
  --          [C declaration]: @padding2@, defined at @SDL3\/SDL_joystick.h 478:12@
  , SDL_VirtualJoystickDesc -> Uint32
button_mask :: SDL3.Sys.Bindgen.Stdinc.Uint32
  -- ^ A mask of which buttons are valid for this controller e.g. (1 \<\< SDL_GAMEPAD_BUTTON_SOUTH)
  --
  --          [C declaration]: @button_mask@, defined at @SDL3\/SDL_joystick.h 479:12@
  , SDL_VirtualJoystickDesc -> Uint32
axis_mask :: SDL3.Sys.Bindgen.Stdinc.Uint32
  -- ^ A mask of which axes are valid for this controller e.g. (1 \<\< SDL_GAMEPAD_AXIS_LEFTX)
  --
  --          [C declaration]: @axis_mask@, defined at @SDL3\/SDL_joystick.h 481:12@
  , SDL_VirtualJoystickDesc -> PtrConst CChar
name :: PtrConst.PtrConst BG.CChar
  -- ^ the name of the joystick
  --
  --          [C declaration]: @name@, defined at @SDL3\/SDL_joystick.h 483:17@
  , SDL_VirtualJoystickDesc -> PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads :: PtrConst.PtrConst SDL_VirtualJoystickTouchpadDesc
  -- ^ A pointer to an array of touchpad descriptions, required if @ntouchpads@ is > 0
  --
  --          [C declaration]: @touchpads@, defined at @SDL3\/SDL_joystick.h 484:44@
  , SDL_VirtualJoystickDesc -> PtrConst SDL_VirtualJoystickSensorDesc
sensors :: PtrConst.PtrConst SDL_VirtualJoystickSensorDesc
  -- ^ A pointer to an array of sensor descriptions, required if @nsensors@ is > 0
  --
  --          [C declaration]: @sensors@, defined at @SDL3\/SDL_joystick.h 485:42@
  , SDL_VirtualJoystickDesc -> Ptr Void
userdata :: BG.Ptr BG.Void
  -- ^ User data pointer passed to callbacks
  --
  --          [C declaration]: @userdata@, defined at @SDL3\/SDL_joystick.h 487:11@
  , SDL_VirtualJoystickDesc -> FunPtr (Ptr Void -> IO ())
update :: BG.FunPtr (BG.Ptr BG.Void -> IO ())
  -- ^ [C declaration]: @Update@, defined at @SDL3\/SDL_joystick.h 488:20@
  , SDL_VirtualJoystickDesc -> FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex :: BG.FunPtr (BG.Ptr BG.Void -> BG.CInt -> IO ())
  -- ^ [C declaration]: @SetPlayerIndex@, defined at @SDL3\/SDL_joystick.h 489:20@
  , SDL_VirtualJoystickDesc
-> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble
      :: BG.FunPtr
           (BG.Ptr BG.Void -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> IO BG.CBool)
  -- ^ [C declaration]: @Rumble@, defined at @SDL3\/SDL_joystick.h 490:20@
  , SDL_VirtualJoystickDesc
-> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers
      :: BG.FunPtr
           (BG.Ptr BG.Void -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> IO BG.CBool)
  -- ^ [C declaration]: @RumbleTriggers@, defined at @SDL3\/SDL_joystick.h 491:20@
  , SDL_VirtualJoystickDesc
-> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED
      :: BG.FunPtr
           ( BG.Ptr BG.Void
             -> SDL3.Sys.Bindgen.Stdinc.Uint8
             -> SDL3.Sys.Bindgen.Stdinc.Uint8
             -> SDL3.Sys.Bindgen.Stdinc.Uint8
             -> IO BG.CBool
           )
  -- ^ [C declaration]: @SetLED@, defined at @SDL3\/SDL_joystick.h 492:20@
  , SDL_VirtualJoystickDesc
-> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect :: BG.FunPtr (BG.Ptr BG.Void -> PtrConst.PtrConst BG.Void -> BG.CInt -> IO BG.CBool)
  -- ^ [C declaration]: @SendEffect@, defined at @SDL3\/SDL_joystick.h 493:20@
  , SDL_VirtualJoystickDesc -> FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled :: BG.FunPtr (BG.Ptr BG.Void -> BG.CBool -> IO BG.CBool)
  -- ^ [C declaration]: @SetSensorsEnabled@, defined at @SDL3\/SDL_joystick.h 494:20@
  , SDL_VirtualJoystickDesc -> FunPtr (Ptr Void -> IO ())
cleanup :: BG.FunPtr (BG.Ptr BG.Void -> IO ())
  -- ^ [C declaration]: @Cleanup@, defined at @SDL3\/SDL_joystick.h 495:20@
  }
  deriving stock ((forall x.
 SDL_VirtualJoystickDesc -> Rep SDL_VirtualJoystickDesc x)
-> (forall x.
    Rep SDL_VirtualJoystickDesc x -> SDL_VirtualJoystickDesc)
-> Generic SDL_VirtualJoystickDesc
forall x. Rep SDL_VirtualJoystickDesc x -> SDL_VirtualJoystickDesc
forall x. SDL_VirtualJoystickDesc -> Rep SDL_VirtualJoystickDesc x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_VirtualJoystickDesc -> Rep SDL_VirtualJoystickDesc x
from :: forall x. SDL_VirtualJoystickDesc -> Rep SDL_VirtualJoystickDesc x
$cto :: forall x. Rep SDL_VirtualJoystickDesc x -> SDL_VirtualJoystickDesc
to :: forall x. Rep SDL_VirtualJoystickDesc x -> SDL_VirtualJoystickDesc
BG.Generic, SDL_VirtualJoystickDesc -> SDL_VirtualJoystickDesc -> Bool
(SDL_VirtualJoystickDesc -> SDL_VirtualJoystickDesc -> Bool)
-> (SDL_VirtualJoystickDesc -> SDL_VirtualJoystickDesc -> Bool)
-> Eq SDL_VirtualJoystickDesc
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_VirtualJoystickDesc -> SDL_VirtualJoystickDesc -> Bool
== :: SDL_VirtualJoystickDesc -> SDL_VirtualJoystickDesc -> Bool
$c/= :: SDL_VirtualJoystickDesc -> SDL_VirtualJoystickDesc -> Bool
/= :: SDL_VirtualJoystickDesc -> SDL_VirtualJoystickDesc -> Bool
Eq, Int -> SDL_VirtualJoystickDesc -> ShowS
[SDL_VirtualJoystickDesc] -> ShowS
SDL_VirtualJoystickDesc -> String
(Int -> SDL_VirtualJoystickDesc -> ShowS)
-> (SDL_VirtualJoystickDesc -> String)
-> ([SDL_VirtualJoystickDesc] -> ShowS)
-> Show SDL_VirtualJoystickDesc
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_VirtualJoystickDesc -> ShowS
showsPrec :: Int -> SDL_VirtualJoystickDesc -> ShowS
$cshow :: SDL_VirtualJoystickDesc -> String
show :: SDL_VirtualJoystickDesc -> String
$cshowList :: [SDL_VirtualJoystickDesc] -> ShowS
showList :: [SDL_VirtualJoystickDesc] -> ShowS
Show)

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

  staticAlignment :: Proxy SDL_VirtualJoystickDesc -> Int
staticAlignment = \Proxy SDL_VirtualJoystickDesc
_ -> (Int
8 :: Int)

instance Marshal.ReadRaw SDL_VirtualJoystickDesc where
  readRaw :: Ptr SDL_VirtualJoystickDesc -> IO SDL_VirtualJoystickDesc
readRaw =
    \Ptr SDL_VirtualJoystickDesc
ptr0 ->
      (Uint32
 -> Uint16
 -> Uint16
 -> Uint16
 -> Uint16
 -> Uint16
 -> Uint16
 -> Uint16
 -> Uint16
 -> Uint16
 -> Uint16
 -> ConstantArray 2 Uint16
 -> Uint32
 -> Uint32
 -> PtrConst CChar
 -> PtrConst SDL_VirtualJoystickTouchpadDesc
 -> PtrConst SDL_VirtualJoystickSensorDesc
 -> Ptr Void
 -> FunPtr (Ptr Void -> IO ())
 -> FunPtr (Ptr Void -> CInt -> IO ())
 -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
 -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
 -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
 -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
 -> FunPtr (Ptr Void -> CBool -> IO CBool)
 -> FunPtr (Ptr Void -> IO ())
 -> SDL_VirtualJoystickDesc)
-> IO
     (Uint32
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Uint32
-> Uint16
-> Uint16
-> Uint16
-> Uint16
-> Uint16
-> Uint16
-> Uint16
-> Uint16
-> Uint16
-> Uint16
-> ConstantArray 2 Uint16
-> Uint32
-> Uint32
-> PtrConst CChar
-> PtrConst SDL_VirtualJoystickTouchpadDesc
-> PtrConst SDL_VirtualJoystickSensorDesc
-> Ptr Void
-> FunPtr (Ptr Void -> IO ())
-> FunPtr (Ptr Void -> CInt -> IO ())
-> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
-> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
-> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
-> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
-> FunPtr (Ptr Void -> CBool -> IO CBool)
-> FunPtr (Ptr Void -> IO ())
-> SDL_VirtualJoystickDesc
SDL_VirtualJoystickDesc
        IO
  (Uint32
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint32
-> IO
     (Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "version"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "version")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"version") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint16
-> IO
     (Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "type'"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "type'")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"type'") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint16
-> IO
     (Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "padding"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "padding")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"padding") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint16
-> IO
     (Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "vendor_id"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "vendor_id")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"vendor_id") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint16
-> IO
     (Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "product_id"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "product_id")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"product_id") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint16
-> IO
     (Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "naxes"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "naxes")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"naxes") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint16
-> IO
     (Uint16
      -> Uint16
      -> Uint16
      -> Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "nbuttons"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "nbuttons")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"nbuttons") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint16
   -> Uint16
   -> Uint16
   -> Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint16
-> IO
     (Uint16
      -> Uint16
      -> Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "nballs"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "nballs")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"nballs") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint16
   -> Uint16
   -> Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint16
-> IO
     (Uint16
      -> Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "nhats"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "nhats")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"nhats") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint16
   -> Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint16
-> IO
     (Uint16
      -> ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "ntouchpads"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "ntouchpads")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"ntouchpads") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint16
   -> ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint16
-> IO
     (ConstantArray 2 Uint16
      -> Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "nsensors"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "nsensors")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"nsensors") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (ConstantArray 2 Uint16
   -> Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (ConstantArray 2 Uint16)
-> IO
     (Uint32
      -> Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "padding2"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "padding2")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"padding2") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint32
   -> Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint32
-> IO
     (Uint32
      -> PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "button_mask"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "button_mask")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"button_mask") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Uint32
   -> PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO Uint32
-> IO
     (PtrConst CChar
      -> PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "axis_mask"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "axis_mask")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"axis_mask") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (PtrConst CChar
   -> PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (PtrConst CChar)
-> IO
     (PtrConst SDL_VirtualJoystickTouchpadDesc
      -> PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "name"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "name")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"name") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (PtrConst SDL_VirtualJoystickTouchpadDesc
   -> PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (PtrConst SDL_VirtualJoystickTouchpadDesc)
-> IO
     (PtrConst SDL_VirtualJoystickSensorDesc
      -> Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "touchpads"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "touchpads")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"touchpads") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (PtrConst SDL_VirtualJoystickSensorDesc
   -> Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (PtrConst SDL_VirtualJoystickSensorDesc)
-> IO
     (Ptr Void
      -> FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "sensors"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "sensors")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"sensors") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (Ptr Void
   -> FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (Ptr Void)
-> IO
     (FunPtr (Ptr Void -> IO ())
      -> FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "userdata"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "userdata")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"userdata") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (FunPtr (Ptr Void -> IO ())
   -> FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (FunPtr (Ptr Void -> IO ()))
-> IO
     (FunPtr (Ptr Void -> CInt -> IO ())
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "update"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "update")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"update") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (FunPtr (Ptr Void -> CInt -> IO ())
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (FunPtr (Ptr Void -> CInt -> IO ()))
-> IO
     (FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "setPlayerIndex"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "setPlayerIndex")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"setPlayerIndex") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool))
-> IO
     (FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
      -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "rumble"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "rumble")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"rumble") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
   -> FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool))
-> IO
     (FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
      -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "rumbleTriggers"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "rumbleTriggers")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"rumbleTriggers") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
   -> FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool))
-> IO
     (FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
      -> FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ())
      -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "setLED"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "setLED")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"setLED") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
   -> FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ())
   -> SDL_VirtualJoystickDesc)
-> IO (FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool))
-> IO
     (FunPtr (Ptr Void -> CBool -> IO CBool)
      -> FunPtr (Ptr Void -> IO ()) -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "sendEffect"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "sendEffect")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"sendEffect") Ptr SDL_VirtualJoystickDesc
ptr0
        IO
  (FunPtr (Ptr Void -> CBool -> IO CBool)
   -> FunPtr (Ptr Void -> IO ()) -> SDL_VirtualJoystickDesc)
-> IO (FunPtr (Ptr Void -> CBool -> IO CBool))
-> IO (FunPtr (Ptr Void -> IO ()) -> SDL_VirtualJoystickDesc)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "setSensorsEnabled"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "setSensorsEnabled")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"setSensorsEnabled") Ptr SDL_VirtualJoystickDesc
ptr0
        IO (FunPtr (Ptr Void -> IO ()) -> SDL_VirtualJoystickDesc)
-> IO (FunPtr (Ptr Void -> IO ())) -> IO SDL_VirtualJoystickDesc
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "cleanup"
-> Ptr SDL_VirtualJoystickDesc
-> IO (CFieldType SDL_VirtualJoystickDesc "cleanup")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"cleanup") Ptr SDL_VirtualJoystickDesc
ptr0

instance Marshal.WriteRaw SDL_VirtualJoystickDesc where
  writeRaw :: Ptr SDL_VirtualJoystickDesc -> SDL_VirtualJoystickDesc -> IO ()
writeRaw =
    \Ptr SDL_VirtualJoystickDesc
ptr0 ->
      \SDL_VirtualJoystickDesc
s1 ->
        case SDL_VirtualJoystickDesc
s1 of
          SDL_VirtualJoystickDesc
            Uint32
version2
            Uint16
type'3
            Uint16
padding4
            Uint16
vendor_id5
            Uint16
product_id6
            Uint16
naxes7
            Uint16
nbuttons8
            Uint16
nballs9
            Uint16
nhats10
            Uint16
ntouchpads11
            Uint16
nsensors12
            ConstantArray 2 Uint16
padding213
            Uint32
button_mask14
            Uint32
axis_mask15
            PtrConst CChar
name16
            PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads17
            PtrConst SDL_VirtualJoystickSensorDesc
sensors18
            Ptr Void
userdata19
            FunPtr (Ptr Void -> IO ())
update20
            FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex21
            FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble22
            FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers23
            FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED24
            FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect25
            FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled26
            FunPtr (Ptr Void -> IO ())
cleanup27 ->
              Proxy "version"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "version"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"version") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "version"
Uint32
version2
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "type'"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "type'"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"type'") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "type'"
Uint16
type'3
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "padding"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "padding"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"padding") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "padding"
Uint16
padding4
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "vendor_id"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "vendor_id"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"vendor_id") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "vendor_id"
Uint16
vendor_id5
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "product_id"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "product_id"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"product_id") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "product_id"
Uint16
product_id6
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "naxes"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "naxes"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"naxes") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "naxes"
Uint16
naxes7
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "nbuttons"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "nbuttons"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"nbuttons") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "nbuttons"
Uint16
nbuttons8
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "nballs"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "nballs"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"nballs") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "nballs"
Uint16
nballs9
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "nhats"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "nhats"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"nhats") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "nhats"
Uint16
nhats10
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "ntouchpads"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "ntouchpads"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"ntouchpads") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "ntouchpads"
Uint16
ntouchpads11
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "nsensors"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "nsensors"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"nsensors") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "nsensors"
Uint16
nsensors12
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "padding2"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "padding2"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"padding2") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "padding2"
ConstantArray 2 Uint16
padding213
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "button_mask"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "button_mask"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"button_mask") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "button_mask"
Uint32
button_mask14
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "axis_mask"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "axis_mask"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"axis_mask") Ptr SDL_VirtualJoystickDesc
ptr0 CFieldType SDL_VirtualJoystickDesc "axis_mask"
Uint32
axis_mask15
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "name"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "name"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"name") Ptr SDL_VirtualJoystickDesc
ptr0 PtrConst CChar
CFieldType SDL_VirtualJoystickDesc "name"
name16
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "touchpads"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "touchpads"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"touchpads") Ptr SDL_VirtualJoystickDesc
ptr0 PtrConst SDL_VirtualJoystickTouchpadDesc
CFieldType SDL_VirtualJoystickDesc "touchpads"
touchpads17
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "sensors"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "sensors"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"sensors") Ptr SDL_VirtualJoystickDesc
ptr0 PtrConst SDL_VirtualJoystickSensorDesc
CFieldType SDL_VirtualJoystickDesc "sensors"
sensors18
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "userdata"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "userdata"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"userdata") Ptr SDL_VirtualJoystickDesc
ptr0 Ptr Void
CFieldType SDL_VirtualJoystickDesc "userdata"
userdata19
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "update"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "update"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"update") Ptr SDL_VirtualJoystickDesc
ptr0 FunPtr (Ptr Void -> IO ())
CFieldType SDL_VirtualJoystickDesc "update"
update20
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "setPlayerIndex"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "setPlayerIndex"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"setPlayerIndex") Ptr SDL_VirtualJoystickDesc
ptr0 FunPtr (Ptr Void -> CInt -> IO ())
CFieldType SDL_VirtualJoystickDesc "setPlayerIndex"
setPlayerIndex21
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "rumble"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "rumble"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"rumble") Ptr SDL_VirtualJoystickDesc
ptr0 FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
CFieldType SDL_VirtualJoystickDesc "rumble"
rumble22
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "rumbleTriggers"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "rumbleTriggers"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"rumbleTriggers") Ptr SDL_VirtualJoystickDesc
ptr0 FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
CFieldType SDL_VirtualJoystickDesc "rumbleTriggers"
rumbleTriggers23
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "setLED"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "setLED"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"setLED") Ptr SDL_VirtualJoystickDesc
ptr0 FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
CFieldType SDL_VirtualJoystickDesc "setLED"
setLED24
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "sendEffect"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "sendEffect"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"sendEffect") Ptr SDL_VirtualJoystickDesc
ptr0 FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
CFieldType SDL_VirtualJoystickDesc "sendEffect"
sendEffect25
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "setSensorsEnabled"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "setSensorsEnabled"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"setSensorsEnabled") Ptr SDL_VirtualJoystickDesc
ptr0 FunPtr (Ptr Void -> CBool -> IO CBool)
CFieldType SDL_VirtualJoystickDesc "setSensorsEnabled"
setSensorsEnabled26
                IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "cleanup"
-> Ptr SDL_VirtualJoystickDesc
-> CFieldType SDL_VirtualJoystickDesc "cleanup"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"cleanup") Ptr SDL_VirtualJoystickDesc
ptr0 FunPtr (Ptr Void -> IO ())
CFieldType SDL_VirtualJoystickDesc "cleanup"
cleanup27

deriving via
  Marshal.EquivStorable SDL_VirtualJoystickDesc
  instance
    BG.Storable SDL_VirtualJoystickDesc

deriving via
  Struct.IsStructViaReadRaw SDL_VirtualJoystickDesc
  instance
    Struct.IsStruct SDL_VirtualJoystickDesc

-- | the version of this interface
--
--     [C declaration]: @version@, defined at @SDL3\/SDL_joystick.h 467:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.CompatHasField.HasField "version" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { version :: Uint32
version = ty
Uint32
y1
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"version" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.HasField "version" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "version"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "version")
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 @"version")

instance HasCField.HasCField SDL_VirtualJoystickDesc "version" where
  type
    CFieldType SDL_VirtualJoystickDesc "version" =
      SDL3.Sys.Bindgen.Stdinc.Uint32

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "version" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "version"
_ -> Int
0

-- | @'SDL_JoystickType'@
--
--     [C declaration]: @type@, defined at @SDL3\/SDL_joystick.h 468:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "type'" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { type' :: Uint16
type' = ty
Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"type'" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "type'" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "type'"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "type'")
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 @"type'")

instance HasCField.HasCField SDL_VirtualJoystickDesc "type'" where
  type
    CFieldType SDL_VirtualJoystickDesc "type'" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "type'" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "type'"
_ -> Int
4

-- | unused
--
--     [C declaration]: @padding@, defined at @SDL3\/SDL_joystick.h 469:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "padding" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { padding :: Uint16
padding = ty
Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"padding" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "padding" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "padding"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "padding")
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 @"padding")

instance HasCField.HasCField SDL_VirtualJoystickDesc "padding" where
  type
    CFieldType SDL_VirtualJoystickDesc "padding" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "padding" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "padding"
_ -> Int
6

-- | the USB vendor ID of this joystick
--
--     [C declaration]: @vendor_id@, defined at @SDL3\/SDL_joystick.h 470:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "vendor_id" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { vendor_id :: Uint16
vendor_id = ty
Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "vendor_id" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "vendor_id"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "vendor_id")
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 @"vendor_id")

instance HasCField.HasCField SDL_VirtualJoystickDesc "vendor_id" where
  type
    CFieldType SDL_VirtualJoystickDesc "vendor_id" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "vendor_id" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "vendor_id"
_ -> Int
8

-- | the USB product ID of this joystick
--
--     [C declaration]: @product_id@, defined at @SDL3\/SDL_joystick.h 471:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "product_id" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { product_id :: Uint16
product_id = ty
Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"product_id" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "product_id" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "product_id"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "product_id")
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 @"product_id")

instance HasCField.HasCField SDL_VirtualJoystickDesc "product_id" where
  type
    CFieldType SDL_VirtualJoystickDesc "product_id" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "product_id" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "product_id"
_ -> Int
10

-- | the number of axes on this joystick
--
--     [C declaration]: @naxes@, defined at @SDL3\/SDL_joystick.h 472:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "naxes" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { naxes :: Uint16
naxes = ty
Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"naxes" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "naxes" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "naxes"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "naxes")
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 @"naxes")

instance HasCField.HasCField SDL_VirtualJoystickDesc "naxes" where
  type
    CFieldType SDL_VirtualJoystickDesc "naxes" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "naxes" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "naxes"
_ -> Int
12

-- | the number of buttons on this joystick
--
--     [C declaration]: @nbuttons@, defined at @SDL3\/SDL_joystick.h 473:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "nbuttons" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { nbuttons :: Uint16
nbuttons = ty
Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "nbuttons" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "nbuttons"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "nbuttons")
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 @"nbuttons")

instance HasCField.HasCField SDL_VirtualJoystickDesc "nbuttons" where
  type
    CFieldType SDL_VirtualJoystickDesc "nbuttons" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "nbuttons" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "nbuttons"
_ -> Int
14

-- | the number of balls on this joystick
--
--     [C declaration]: @nballs@, defined at @SDL3\/SDL_joystick.h 474:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "nballs" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { nballs :: Uint16
nballs = ty
Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"nballs" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "nballs" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "nballs"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "nballs")
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 @"nballs")

instance HasCField.HasCField SDL_VirtualJoystickDesc "nballs" where
  type
    CFieldType SDL_VirtualJoystickDesc "nballs" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "nballs" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "nballs"
_ -> Int
16

-- | the number of hats on this joystick
--
--     [C declaration]: @nhats@, defined at @SDL3\/SDL_joystick.h 475:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "nhats" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { nhats :: Uint16
nhats = ty
Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"nhats" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "nhats" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "nhats"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "nhats")
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 @"nhats")

instance HasCField.HasCField SDL_VirtualJoystickDesc "nhats" where
  type
    CFieldType SDL_VirtualJoystickDesc "nhats" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "nhats" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "nhats"
_ -> Int
18

-- | the number of touchpads on this joystick, requires @touchpads@ to point at valid descriptions
--
--     [C declaration]: @ntouchpads@, defined at @SDL3\/SDL_joystick.h 476:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "ntouchpads" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { ntouchpads :: Uint16
ntouchpads = ty
Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "ntouchpads" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "ntouchpads"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "ntouchpads")
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 @"ntouchpads")

instance HasCField.HasCField SDL_VirtualJoystickDesc "ntouchpads" where
  type
    CFieldType SDL_VirtualJoystickDesc "ntouchpads" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "ntouchpads" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "ntouchpads"
_ -> Int
20

-- | the number of sensors on this joystick, requires @sensors@ to point at valid descriptions
--
--     [C declaration]: @nsensors@, defined at @SDL3\/SDL_joystick.h 477:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "nsensors" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { nsensors :: Uint16
nsensors = ty
Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"nsensors" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "nsensors" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "nsensors"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "nsensors")
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 @"nsensors")

instance HasCField.HasCField SDL_VirtualJoystickDesc "nsensors" where
  type
    CFieldType SDL_VirtualJoystickDesc "nsensors" =
      SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "nsensors" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "nsensors"
_ -> Int
22

-- | unused
--
--     [C declaration]: @padding2@, defined at @SDL3\/SDL_joystick.h 478:12@
instance
  (ty ~ CA.ConstantArray 2 SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.CompatHasField.HasField "padding2" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { padding2 :: ConstantArray 2 Uint16
padding2 = ty
ConstantArray 2 Uint16
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"padding2" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ CA.ConstantArray 2 SDL3.Sys.Bindgen.Stdinc.Uint16)
  => BG.HasField "padding2" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "padding2"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "padding2")
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 @"padding2")

instance HasCField.HasCField SDL_VirtualJoystickDesc "padding2" where
  type
    CFieldType SDL_VirtualJoystickDesc "padding2" =
      CA.ConstantArray 2 SDL3.Sys.Bindgen.Stdinc.Uint16

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "padding2" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "padding2"
_ -> Int
24

-- | A mask of which buttons are valid for this controller e.g. (1 \<\< SDL_GAMEPAD_BUTTON_SOUTH)
--
--     [C declaration]: @button_mask@, defined at @SDL3\/SDL_joystick.h 479:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.CompatHasField.HasField "button_mask" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { button_mask :: Uint32
button_mask = ty
Uint32
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"button_mask" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.HasField "button_mask" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField =
    Proxy "button_mask"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "button_mask")
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 @"button_mask")

instance HasCField.HasCField SDL_VirtualJoystickDesc "button_mask" where
  type
    CFieldType SDL_VirtualJoystickDesc "button_mask" =
      SDL3.Sys.Bindgen.Stdinc.Uint32

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "button_mask" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "button_mask"
_ -> Int
28

-- | A mask of which axes are valid for this controller e.g. (1 \<\< SDL_GAMEPAD_AXIS_LEFTX)
--
--     [C declaration]: @axis_mask@, defined at @SDL3\/SDL_joystick.h 481:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.CompatHasField.HasField "axis_mask" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { axis_mask :: Uint32
axis_mask = ty
Uint32
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.HasField "axis_mask" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "axis_mask"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "axis_mask")
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 @"axis_mask")

instance HasCField.HasCField SDL_VirtualJoystickDesc "axis_mask" where
  type
    CFieldType SDL_VirtualJoystickDesc "axis_mask" =
      SDL3.Sys.Bindgen.Stdinc.Uint32

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "axis_mask" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "axis_mask"
_ -> Int
32

-- | the name of the joystick
--
--     [C declaration]: @name@, defined at @SDL3\/SDL_joystick.h 483:17@
instance
  (ty ~ PtrConst.PtrConst BG.CChar)
  => BG.CompatHasField.HasField "name" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { name :: PtrConst CChar
name = ty
PtrConst CChar
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"name" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ PtrConst.PtrConst BG.CChar)
  => BG.HasField "name" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "name"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "name")
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 @"name")

instance HasCField.HasCField SDL_VirtualJoystickDesc "name" where
  type
    CFieldType SDL_VirtualJoystickDesc "name" =
      PtrConst.PtrConst BG.CChar

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "name" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "name"
_ -> Int
40

-- | A pointer to an array of touchpad descriptions, required if @ntouchpads@ is > 0
--
--     [C declaration]: @touchpads@, defined at @SDL3\/SDL_joystick.h 484:44@
instance
  (ty ~ PtrConst.PtrConst SDL_VirtualJoystickTouchpadDesc)
  => BG.CompatHasField.HasField "touchpads" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = ty
PtrConst SDL_VirtualJoystickTouchpadDesc
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"touchpads" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ PtrConst.PtrConst SDL_VirtualJoystickTouchpadDesc)
  => BG.HasField "touchpads" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "touchpads"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "touchpads")
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 @"touchpads")

instance HasCField.HasCField SDL_VirtualJoystickDesc "touchpads" where
  type
    CFieldType SDL_VirtualJoystickDesc "touchpads" =
      PtrConst.PtrConst SDL_VirtualJoystickTouchpadDesc

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "touchpads" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "touchpads"
_ -> Int
48

-- | A pointer to an array of sensor descriptions, required if @nsensors@ is > 0
--
--     [C declaration]: @sensors@, defined at @SDL3\/SDL_joystick.h 485:42@
instance
  (ty ~ PtrConst.PtrConst SDL_VirtualJoystickSensorDesc)
  => BG.CompatHasField.HasField "sensors" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = ty
PtrConst SDL_VirtualJoystickSensorDesc
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"sensors" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ PtrConst.PtrConst SDL_VirtualJoystickSensorDesc)
  => BG.HasField "sensors" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "sensors"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "sensors")
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 @"sensors")

instance HasCField.HasCField SDL_VirtualJoystickDesc "sensors" where
  type
    CFieldType SDL_VirtualJoystickDesc "sensors" =
      PtrConst.PtrConst SDL_VirtualJoystickSensorDesc

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "sensors" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "sensors"
_ -> Int
56

-- | User data pointer passed to callbacks
--
--     [C declaration]: @userdata@, defined at @SDL3\/SDL_joystick.h 487:11@
instance
  (ty ~ BG.Ptr BG.Void)
  => BG.CompatHasField.HasField "userdata" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { userdata :: Ptr Void
userdata = ty
Ptr Void
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"userdata" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ BG.Ptr BG.Void)
  => BG.HasField "userdata" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "userdata"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "userdata")
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 @"userdata")

instance HasCField.HasCField SDL_VirtualJoystickDesc "userdata" where
  type
    CFieldType SDL_VirtualJoystickDesc "userdata" =
      BG.Ptr BG.Void

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "userdata" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "userdata"
_ -> Int
64

-- | [C declaration]: @Update@, defined at @SDL3\/SDL_joystick.h 488:20@
instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> IO ()))
  => BG.CompatHasField.HasField "update" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { update :: FunPtr (Ptr Void -> IO ())
update = ty
FunPtr (Ptr Void -> IO ())
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"update" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> IO ()))
  => BG.HasField "update" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "update"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "update")
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 @"update")

instance HasCField.HasCField SDL_VirtualJoystickDesc "update" where
  type
    CFieldType SDL_VirtualJoystickDesc "update" =
      BG.FunPtr (BG.Ptr BG.Void -> IO ())

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "update" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "update"
_ -> Int
72

-- | [C declaration]: @SetPlayerIndex@, defined at @SDL3\/SDL_joystick.h 489:20@
instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> BG.CInt -> IO ()))
  => BG.CompatHasField.HasField "setPlayerIndex" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = ty
FunPtr (Ptr Void -> CInt -> IO ())
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> BG.CInt -> IO ()))
  => BG.HasField "setPlayerIndex" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField =
    Proxy "setPlayerIndex"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "setPlayerIndex")
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 @"setPlayerIndex")

instance HasCField.HasCField SDL_VirtualJoystickDesc "setPlayerIndex" where
  type
    CFieldType SDL_VirtualJoystickDesc "setPlayerIndex" =
      BG.FunPtr (BG.Ptr BG.Void -> BG.CInt -> IO ())

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "setPlayerIndex" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "setPlayerIndex"
_ -> Int
80

-- | [C declaration]: @Rumble@, defined at @SDL3\/SDL_joystick.h 490:20@
instance
  ( ty
      ~ BG.FunPtr
          (BG.Ptr BG.Void -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> IO BG.CBool)
  )
  => BG.CompatHasField.HasField "rumble" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = ty
FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"rumble" SDL_VirtualJoystickDesc
x0
      )

instance
  ( ty
      ~ BG.FunPtr
          (BG.Ptr BG.Void -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> IO BG.CBool)
  )
  => BG.HasField "rumble" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "rumble"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "rumble")
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 @"rumble")

instance HasCField.HasCField SDL_VirtualJoystickDesc "rumble" where
  type
    CFieldType SDL_VirtualJoystickDesc "rumble" =
      BG.FunPtr
        (BG.Ptr BG.Void -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> IO BG.CBool)

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "rumble" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "rumble"
_ -> Int
88

-- | [C declaration]: @RumbleTriggers@, defined at @SDL3\/SDL_joystick.h 491:20@
instance
  ( ty
      ~ BG.FunPtr
          (BG.Ptr BG.Void -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> IO BG.CBool)
  )
  => BG.CompatHasField.HasField "rumbleTriggers" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = ty
FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
      )

instance
  ( ty
      ~ BG.FunPtr
          (BG.Ptr BG.Void -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> IO BG.CBool)
  )
  => BG.HasField "rumbleTriggers" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField =
    Proxy "rumbleTriggers"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "rumbleTriggers")
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 @"rumbleTriggers")

instance HasCField.HasCField SDL_VirtualJoystickDesc "rumbleTriggers" where
  type
    CFieldType SDL_VirtualJoystickDesc "rumbleTriggers" =
      BG.FunPtr
        (BG.Ptr BG.Void -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> SDL3.Sys.Bindgen.Stdinc.Uint16 -> IO BG.CBool)

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "rumbleTriggers" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "rumbleTriggers"
_ -> Int
96

-- | [C declaration]: @SetLED@, defined at @SDL3\/SDL_joystick.h 492:20@
instance
  ( ty
      ~ BG.FunPtr
          ( BG.Ptr BG.Void
            -> SDL3.Sys.Bindgen.Stdinc.Uint8
            -> SDL3.Sys.Bindgen.Stdinc.Uint8
            -> SDL3.Sys.Bindgen.Stdinc.Uint8
            -> IO BG.CBool
          )
  )
  => BG.CompatHasField.HasField "setLED" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = ty
FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"setLED" SDL_VirtualJoystickDesc
x0
      )

instance
  ( ty
      ~ BG.FunPtr
          ( BG.Ptr BG.Void
            -> SDL3.Sys.Bindgen.Stdinc.Uint8
            -> SDL3.Sys.Bindgen.Stdinc.Uint8
            -> SDL3.Sys.Bindgen.Stdinc.Uint8
            -> IO BG.CBool
          )
  )
  => BG.HasField "setLED" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "setLED"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "setLED")
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 @"setLED")

instance HasCField.HasCField SDL_VirtualJoystickDesc "setLED" where
  type
    CFieldType SDL_VirtualJoystickDesc "setLED" =
      BG.FunPtr
        ( BG.Ptr BG.Void
          -> SDL3.Sys.Bindgen.Stdinc.Uint8
          -> SDL3.Sys.Bindgen.Stdinc.Uint8
          -> SDL3.Sys.Bindgen.Stdinc.Uint8
          -> IO BG.CBool
        )

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "setLED" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "setLED"
_ -> Int
104

-- | [C declaration]: @SendEffect@, defined at @SDL3\/SDL_joystick.h 493:20@
instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> PtrConst.PtrConst BG.Void -> BG.CInt -> IO BG.CBool))
  => BG.CompatHasField.HasField "sendEffect" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = ty
FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> PtrConst.PtrConst BG.Void -> BG.CInt -> IO BG.CBool))
  => BG.HasField "sendEffect" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "sendEffect"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "sendEffect")
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 @"sendEffect")

instance HasCField.HasCField SDL_VirtualJoystickDesc "sendEffect" where
  type
    CFieldType SDL_VirtualJoystickDesc "sendEffect" =
      BG.FunPtr (BG.Ptr BG.Void -> PtrConst.PtrConst BG.Void -> BG.CInt -> IO BG.CBool)

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "sendEffect" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "sendEffect"
_ -> Int
112

-- | [C declaration]: @SetSensorsEnabled@, defined at @SDL3\/SDL_joystick.h 494:20@
instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> BG.CBool -> IO BG.CBool))
  => BG.CompatHasField.HasField "setSensorsEnabled" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = ty
FunPtr (Ptr Void -> CBool -> IO CBool)
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = 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 @"cleanup" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> BG.CBool -> IO BG.CBool))
  => BG.HasField "setSensorsEnabled" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField =
    Proxy "setSensorsEnabled"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "setSensorsEnabled")
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 @"setSensorsEnabled")

instance HasCField.HasCField SDL_VirtualJoystickDesc "setSensorsEnabled" where
  type
    CFieldType SDL_VirtualJoystickDesc "setSensorsEnabled" =
      BG.FunPtr (BG.Ptr BG.Void -> BG.CBool -> IO BG.CBool)

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "setSensorsEnabled" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "setSensorsEnabled"
_ -> Int
120

-- | [C declaration]: @Cleanup@, defined at @SDL3\/SDL_joystick.h 495:20@
instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> IO ()))
  => BG.CompatHasField.HasField "cleanup" SDL_VirtualJoystickDesc ty
  where
  hasField :: SDL_VirtualJoystickDesc -> (ty -> SDL_VirtualJoystickDesc, ty)
hasField =
    \SDL_VirtualJoystickDesc
x0 ->
      ( \ty
y1 ->
          SDL_VirtualJoystickDesc
            { cleanup :: FunPtr (Ptr Void -> IO ())
cleanup = ty
FunPtr (Ptr Void -> IO ())
y1
            , version :: Uint32
version = 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 @"version" SDL_VirtualJoystickDesc
x0
            , type' :: Uint16
type' = 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 @"type'" SDL_VirtualJoystickDesc
x0
            , padding :: Uint16
padding = 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 @"padding" SDL_VirtualJoystickDesc
x0
            , vendor_id :: Uint16
vendor_id = 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 @"vendor_id" SDL_VirtualJoystickDesc
x0
            , product_id :: Uint16
product_id = 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 @"product_id" SDL_VirtualJoystickDesc
x0
            , naxes :: Uint16
naxes = 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 @"naxes" SDL_VirtualJoystickDesc
x0
            , nbuttons :: Uint16
nbuttons = 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 @"nbuttons" SDL_VirtualJoystickDesc
x0
            , nballs :: Uint16
nballs = 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 @"nballs" SDL_VirtualJoystickDesc
x0
            , nhats :: Uint16
nhats = 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 @"nhats" SDL_VirtualJoystickDesc
x0
            , ntouchpads :: Uint16
ntouchpads = 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 @"ntouchpads" SDL_VirtualJoystickDesc
x0
            , nsensors :: Uint16
nsensors = 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 @"nsensors" SDL_VirtualJoystickDesc
x0
            , padding2 :: ConstantArray 2 Uint16
padding2 = 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 @"padding2" SDL_VirtualJoystickDesc
x0
            , button_mask :: Uint32
button_mask = 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 @"button_mask" SDL_VirtualJoystickDesc
x0
            , axis_mask :: Uint32
axis_mask = 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 @"axis_mask" SDL_VirtualJoystickDesc
x0
            , name :: PtrConst CChar
name = 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 @"name" SDL_VirtualJoystickDesc
x0
            , touchpads :: PtrConst SDL_VirtualJoystickTouchpadDesc
touchpads = 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 @"touchpads" SDL_VirtualJoystickDesc
x0
            , sensors :: PtrConst SDL_VirtualJoystickSensorDesc
sensors = 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 @"sensors" SDL_VirtualJoystickDesc
x0
            , userdata :: Ptr Void
userdata = 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 @"userdata" SDL_VirtualJoystickDesc
x0
            , update :: FunPtr (Ptr Void -> IO ())
update = 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 @"update" SDL_VirtualJoystickDesc
x0
            , setPlayerIndex :: FunPtr (Ptr Void -> CInt -> IO ())
setPlayerIndex = 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 @"setPlayerIndex" SDL_VirtualJoystickDesc
x0
            , rumble :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumble = 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 @"rumble" SDL_VirtualJoystickDesc
x0
            , rumbleTriggers :: FunPtr (Ptr Void -> Uint16 -> Uint16 -> IO CBool)
rumbleTriggers = 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 @"rumbleTriggers" SDL_VirtualJoystickDesc
x0
            , setLED :: FunPtr (Ptr Void -> Uint8 -> Uint8 -> Uint8 -> IO CBool)
setLED = 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 @"setLED" SDL_VirtualJoystickDesc
x0
            , sendEffect :: FunPtr (Ptr Void -> PtrConst Void -> CInt -> IO CBool)
sendEffect = 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 @"sendEffect" SDL_VirtualJoystickDesc
x0
            , setSensorsEnabled :: FunPtr (Ptr Void -> CBool -> IO CBool)
setSensorsEnabled = 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 @"setSensorsEnabled" SDL_VirtualJoystickDesc
x0
            }
      , 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 @"cleanup" SDL_VirtualJoystickDesc
x0
      )

instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> IO ()))
  => BG.HasField "cleanup" (BG.Ptr SDL_VirtualJoystickDesc) (BG.Ptr ty)
  where
  getField :: Ptr SDL_VirtualJoystickDesc -> Ptr ty
getField = Proxy "cleanup"
-> Ptr SDL_VirtualJoystickDesc
-> Ptr (CFieldType SDL_VirtualJoystickDesc "cleanup")
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 @"cleanup")

instance HasCField.HasCField SDL_VirtualJoystickDesc "cleanup" where
  type
    CFieldType SDL_VirtualJoystickDesc "cleanup" =
      BG.FunPtr (BG.Ptr BG.Void -> IO ())

  offset# :: Proxy# SDL_VirtualJoystickDesc -> Proxy# "cleanup" -> Int
offset# = \Proxy# SDL_VirtualJoystickDesc
_ -> \Proxy# "cleanup"
_ -> Int
128

-- | [C declaration]: @macro SDL_PROP_JOYSTICK_CAP_MONO_LED_BOOLEAN@, literal @\"SDL.joystick.cap.mono_led\"@, defined at @SDL3\/SDL_joystick.h 772:9@
sDL_PROP_JOYSTICK_CAP_MONO_LED_BOOLEAN :: BG.ByteString
sDL_PROP_JOYSTICK_CAP_MONO_LED_BOOLEAN :: ByteString
sDL_PROP_JOYSTICK_CAP_MONO_LED_BOOLEAN =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x6A
    , Word8
0x6F
    , Word8
0x79
    , Word8
0x73
    , Word8
0x74
    , Word8
0x69
    , Word8
0x63
    , Word8
0x6B
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x61
    , Word8
0x70
    , Word8
0x2E
    , Word8
0x6D
    , Word8
0x6F
    , Word8
0x6E
    , Word8
0x6F
    , Word8
0x5F
    , Word8
0x6C
    , Word8
0x65
    , Word8
0x64
    ]

-- | [C declaration]: @macro SDL_PROP_JOYSTICK_CAP_RGB_LED_BOOLEAN@, literal @\"SDL.joystick.cap.rgb_led\"@, defined at @SDL3\/SDL_joystick.h 773:9@
sDL_PROP_JOYSTICK_CAP_RGB_LED_BOOLEAN :: BG.ByteString
sDL_PROP_JOYSTICK_CAP_RGB_LED_BOOLEAN :: ByteString
sDL_PROP_JOYSTICK_CAP_RGB_LED_BOOLEAN =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x6A
    , Word8
0x6F
    , Word8
0x79
    , Word8
0x73
    , Word8
0x74
    , Word8
0x69
    , Word8
0x63
    , Word8
0x6B
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x61
    , Word8
0x70
    , Word8
0x2E
    , Word8
0x72
    , Word8
0x67
    , Word8
0x62
    , Word8
0x5F
    , Word8
0x6C
    , Word8
0x65
    , Word8
0x64
    ]

-- | [C declaration]: @macro SDL_PROP_JOYSTICK_CAP_PLAYER_LED_BOOLEAN@, literal @\"SDL.joystick.cap.player_led\"@, defined at @SDL3\/SDL_joystick.h 774:9@
sDL_PROP_JOYSTICK_CAP_PLAYER_LED_BOOLEAN :: BG.ByteString
sDL_PROP_JOYSTICK_CAP_PLAYER_LED_BOOLEAN :: ByteString
sDL_PROP_JOYSTICK_CAP_PLAYER_LED_BOOLEAN =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x6A
    , Word8
0x6F
    , Word8
0x79
    , Word8
0x73
    , Word8
0x74
    , Word8
0x69
    , Word8
0x63
    , Word8
0x6B
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x61
    , Word8
0x70
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x6C
    , Word8
0x61
    , Word8
0x79
    , Word8
0x65
    , Word8
0x72
    , Word8
0x5F
    , Word8
0x6C
    , Word8
0x65
    , Word8
0x64
    ]

-- | [C declaration]: @macro SDL_PROP_JOYSTICK_CAP_RUMBLE_BOOLEAN@, literal @\"SDL.joystick.cap.rumble\"@, defined at @SDL3\/SDL_joystick.h 775:9@
sDL_PROP_JOYSTICK_CAP_RUMBLE_BOOLEAN :: BG.ByteString
sDL_PROP_JOYSTICK_CAP_RUMBLE_BOOLEAN :: ByteString
sDL_PROP_JOYSTICK_CAP_RUMBLE_BOOLEAN =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x6A
    , Word8
0x6F
    , Word8
0x79
    , Word8
0x73
    , Word8
0x74
    , Word8
0x69
    , Word8
0x63
    , Word8
0x6B
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x61
    , Word8
0x70
    , Word8
0x2E
    , Word8
0x72
    , Word8
0x75
    , Word8
0x6D
    , Word8
0x62
    , Word8
0x6C
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_JOYSTICK_CAP_TRIGGER_RUMBLE_BOOLEAN@, literal @\"SDL.joystick.cap.trigger_rumble\"@, defined at @SDL3\/SDL_joystick.h 776:9@
sDL_PROP_JOYSTICK_CAP_TRIGGER_RUMBLE_BOOLEAN :: BG.ByteString
sDL_PROP_JOYSTICK_CAP_TRIGGER_RUMBLE_BOOLEAN :: ByteString
sDL_PROP_JOYSTICK_CAP_TRIGGER_RUMBLE_BOOLEAN =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x6A
    , Word8
0x6F
    , Word8
0x79
    , Word8
0x73
    , Word8
0x74
    , Word8
0x69
    , Word8
0x63
    , Word8
0x6B
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x61
    , Word8
0x70
    , Word8
0x2E
    , Word8
0x74
    , Word8
0x72
    , Word8
0x69
    , Word8
0x67
    , Word8
0x67
    , Word8
0x65
    , Word8
0x72
    , Word8
0x5F
    , Word8
0x72
    , Word8
0x75
    , Word8
0x6D
    , Word8
0x62
    , Word8
0x6C
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_HAT_CENTERED@, defined at @SDL3\/SDL_joystick.h 1212:9@
sDL_HAT_CENTERED :: BG.CUInt
sDL_HAT_CENTERED :: CUInt
sDL_HAT_CENTERED = (CUInt
0 :: BG.CUInt)

-- | [C declaration]: @macro SDL_HAT_UP@, defined at @SDL3\/SDL_joystick.h 1213:9@
sDL_HAT_UP :: BG.CUInt
sDL_HAT_UP :: CUInt
sDL_HAT_UP = (CUInt
1 :: BG.CUInt)

-- | [C declaration]: @macro SDL_HAT_RIGHT@, defined at @SDL3\/SDL_joystick.h 1214:9@
sDL_HAT_RIGHT :: BG.CUInt
sDL_HAT_RIGHT :: CUInt
sDL_HAT_RIGHT = (CUInt
2 :: BG.CUInt)

-- | [C declaration]: @macro SDL_HAT_DOWN@, defined at @SDL3\/SDL_joystick.h 1215:9@
sDL_HAT_DOWN :: BG.CUInt
sDL_HAT_DOWN :: CUInt
sDL_HAT_DOWN = (CUInt
4 :: BG.CUInt)

-- | [C declaration]: @macro SDL_HAT_LEFT@, defined at @SDL3\/SDL_joystick.h 1216:9@
sDL_HAT_LEFT :: BG.CUInt
sDL_HAT_LEFT :: CUInt
sDL_HAT_LEFT = (CUInt
8 :: BG.CUInt)

-- | [C declaration]: @macro SDL_HAT_RIGHTUP@, defined at @SDL3\/SDL_joystick.h 1217:9@
sDL_HAT_RIGHTUP :: BG.CUInt
sDL_HAT_RIGHTUP :: CUInt
sDL_HAT_RIGHTUP =
  CUInt -> CUInt -> BitsRes CUInt CUInt
forall a b. Bitwise a b => a -> b -> BitsRes a b
(C.Expr.HostPlatform..|.) CUInt
sDL_HAT_RIGHT CUInt
sDL_HAT_UP

-- | [C declaration]: @macro SDL_HAT_RIGHTDOWN@, defined at @SDL3\/SDL_joystick.h 1218:9@
sDL_HAT_RIGHTDOWN :: BG.CUInt
sDL_HAT_RIGHTDOWN :: CUInt
sDL_HAT_RIGHTDOWN =
  CUInt -> CUInt -> BitsRes CUInt CUInt
forall a b. Bitwise a b => a -> b -> BitsRes a b
(C.Expr.HostPlatform..|.) CUInt
sDL_HAT_RIGHT CUInt
sDL_HAT_DOWN

-- | [C declaration]: @macro SDL_HAT_LEFTUP@, defined at @SDL3\/SDL_joystick.h 1219:9@
sDL_HAT_LEFTUP :: BG.CUInt
sDL_HAT_LEFTUP :: CUInt
sDL_HAT_LEFTUP =
  CUInt -> CUInt -> BitsRes CUInt CUInt
forall a b. Bitwise a b => a -> b -> BitsRes a b
(C.Expr.HostPlatform..|.) CUInt
sDL_HAT_LEFT CUInt
sDL_HAT_UP

-- | [C declaration]: @macro SDL_HAT_LEFTDOWN@, defined at @SDL3\/SDL_joystick.h 1220:9@
sDL_HAT_LEFTDOWN :: BG.CUInt
sDL_HAT_LEFTDOWN :: CUInt
sDL_HAT_LEFTDOWN =
  CUInt -> CUInt -> BitsRes CUInt CUInt
forall a b. Bitwise a b => a -> b -> BitsRes a b
(C.Expr.HostPlatform..|.) CUInt
sDL_HAT_LEFT CUInt
sDL_HAT_DOWN