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

-- | Any GUI application has to deal with the mouse, and SDL provides functions to manage mouse input and the displayed cursor.
--
--     Most interactions with the mouse will come through the event subsystem. Moving a mouse generates an SDL_EVENT_MOUSE_MOTION event, pushing a button generates SDL_EVENT_MOUSE_BUTTON_DOWN, etc, but one can also query the current state of the mouse at any time with @SDL_GetMouseState()@.
--
--     For certain games, it\'s useful to disassociate the mouse cursor from mouse input. An FPS, for example, would not want the player\'s motion to stop as the mouse hits the edge of the window. For these scenarios, use @SDL_SetWindowRelativeMouseMode()@, which hides the cursor, grabs mouse input to the window, and reads mouse input no matter how far it moves.
--
--     Games that want the system to track the mouse but want to draw their own cursor can use @SDL_HideCursor()@ and @SDL_ShowCursor()@. It might be more efficient to let the system manage the cursor, if possible, using @SDL_SetCursor()@ with a custom image made through @SDL_CreateColorCursor()@, or perhaps just a specific system cursor from @SDL_CreateSystemCursor()@.
--
--     SDL can, on many platforms, differentiate between multiple connected mice, allowing for interesting input scenarios and multiplayer games. They can be enumerated with @SDL_GetMice()@, and SDL will send SDL_EVENT_MOUSE_ADDED and SDL_EVENT_MOUSE_REMOVED events as they are connected and unplugged.
--
--     Since many apps only care about basic mouse input, SDL offers a virtual mouse device for touch and pen input, which often can make a desktop application work on a touchscreen phone without any code changes. Apps that care about touch\/pen separately from mouse input should filter out events with a @which@ field of SDL_TOUCH_MOUSEID\/SDL_PEN_MOUSEID. This is a unique ID for a mouse for the time it is connected to the system, and is never reused for the lifetime of the application.
--
--     If the mouse is disconnected and reconnected, it will get a new ID.
--
--     The value 0 is an invalid ID.
--
--     @since 3.2.0
module SDL3.Sys.Bindgen.Mouse (
  SDL3.Sys.Bindgen.Mouse.SDL_MouseID (..),
  SDL3.Sys.Bindgen.Mouse.SDL_Cursor,
  SDL3.Sys.Bindgen.Mouse.SDL_SystemCursor (..),
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_DEFAULT,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_TEXT,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_WAIT,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_CROSSHAIR,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_PROGRESS,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_NWSE_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_NESW_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_EW_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_NS_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_MOVE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_NOT_ALLOWED,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_POINTER,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_NW_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_N_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_NE_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_E_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_SE_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_S_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_SW_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_W_RESIZE,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_SYSTEM_CURSOR_COUNT,
  SDL3.Sys.Bindgen.Mouse.SDL_MouseWheelDirection (..),
  pattern SDL3.Sys.Bindgen.Mouse.SDL_MOUSEWHEEL_NORMAL,
  pattern SDL3.Sys.Bindgen.Mouse.SDL_MOUSEWHEEL_FLIPPED,
  SDL3.Sys.Bindgen.Mouse.SDL_CursorFrameInfo (..),
  SDL3.Sys.Bindgen.Mouse.SDL_MouseButtonFlags (..),
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_LEFT,
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_MIDDLE,
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_RIGHT,
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_X1,
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_X2,
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_MASK,
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_LMASK,
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_MMASK,
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_RMASK,
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_X1MASK,
  SDL3.Sys.Bindgen.Mouse.sDL_BUTTON_X2MASK,
  SDL3.Sys.Bindgen.Mouse.SDL_MouseMotionTransformCallback_Aux (..),
  SDL3.Sys.Bindgen.Mouse.SDL_MouseMotionTransformCallback (..),
)
where

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

import C.Expr.HostPlatform qualified
import HsBindgen.Runtime.CEnum qualified as CEnum
import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.LibC qualified
import HsBindgen.Runtime.Marshal qualified as Marshal
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.Stdinc qualified
import SDL3.Sys.Bindgen.Surface qualified
import SDL3.Sys.Bindgen.Video qualified

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

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

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

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

-- | The structure used to identify an SDL cursor.
--
--     This is opaque data.
--
--     @since 3.2.0
--
--     [C declaration]: @struct SDL_Cursor@, defined at @SDL3\/SDL_mouse.h 90:16@
data SDL_Cursor

-- | Cursor types for @SDL_CreateSystemCursor()@.
--
--     @since 3.2.0
--
--     [C declaration]: @enum SDL_SystemCursor@, defined at @SDL3\/SDL_mouse.h 97:14@
newtype SDL_SystemCursor = SDL_SystemCursor
  { SDL_SystemCursor -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_SystemCursor -> Rep SDL_SystemCursor x)
-> (forall x. Rep SDL_SystemCursor x -> SDL_SystemCursor)
-> Generic SDL_SystemCursor
forall x. Rep SDL_SystemCursor x -> SDL_SystemCursor
forall x. SDL_SystemCursor -> Rep SDL_SystemCursor x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_SystemCursor -> Rep SDL_SystemCursor x
from :: forall x. SDL_SystemCursor -> Rep SDL_SystemCursor x
$cto :: forall x. Rep SDL_SystemCursor x -> SDL_SystemCursor
to :: forall x. Rep SDL_SystemCursor x -> SDL_SystemCursor
BG.Generic, SDL_SystemCursor -> SDL_SystemCursor -> Bool
(SDL_SystemCursor -> SDL_SystemCursor -> Bool)
-> (SDL_SystemCursor -> SDL_SystemCursor -> Bool)
-> Eq SDL_SystemCursor
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
== :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
$c/= :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
/= :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
Eq, Eq SDL_SystemCursor
Eq SDL_SystemCursor =>
(SDL_SystemCursor -> SDL_SystemCursor -> Ordering)
-> (SDL_SystemCursor -> SDL_SystemCursor -> Bool)
-> (SDL_SystemCursor -> SDL_SystemCursor -> Bool)
-> (SDL_SystemCursor -> SDL_SystemCursor -> Bool)
-> (SDL_SystemCursor -> SDL_SystemCursor -> Bool)
-> (SDL_SystemCursor -> SDL_SystemCursor -> SDL_SystemCursor)
-> (SDL_SystemCursor -> SDL_SystemCursor -> SDL_SystemCursor)
-> Ord SDL_SystemCursor
SDL_SystemCursor -> SDL_SystemCursor -> Bool
SDL_SystemCursor -> SDL_SystemCursor -> Ordering
SDL_SystemCursor -> SDL_SystemCursor -> SDL_SystemCursor
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_SystemCursor -> SDL_SystemCursor -> Ordering
compare :: SDL_SystemCursor -> SDL_SystemCursor -> Ordering
$c< :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
< :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
$c<= :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
<= :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
$c> :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
> :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
$c>= :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
>= :: SDL_SystemCursor -> SDL_SystemCursor -> Bool
$cmax :: SDL_SystemCursor -> SDL_SystemCursor -> SDL_SystemCursor
max :: SDL_SystemCursor -> SDL_SystemCursor -> SDL_SystemCursor
$cmin :: SDL_SystemCursor -> SDL_SystemCursor -> SDL_SystemCursor
min :: SDL_SystemCursor -> SDL_SystemCursor -> SDL_SystemCursor
Ord)
  deriving newtype (FFIType SDL_SystemCursor -> SDL_SystemCursor
SDL_SystemCursor -> FFIType SDL_SystemCursor
(SDL_SystemCursor -> FFIType SDL_SystemCursor)
-> (FFIType SDL_SystemCursor -> SDL_SystemCursor)
-> HasFFIType SDL_SystemCursor
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_SystemCursor -> FFIType SDL_SystemCursor
toFFIType :: SDL_SystemCursor -> FFIType SDL_SystemCursor
$cfromFFIType :: FFIType SDL_SystemCursor -> SDL_SystemCursor
fromFFIType :: FFIType SDL_SystemCursor -> SDL_SystemCursor
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_SystemCursor instance BG.Storable SDL_SystemCursor

deriving via BG.CUInt instance BG.Prim SDL_SystemCursor

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

  toCEnum :: CEnumZ SDL_SystemCursor -> SDL_SystemCursor
toCEnum = CUInt -> SDL_SystemCursor
CEnumZ SDL_SystemCursor -> SDL_SystemCursor
SDL_SystemCursor

  fromCEnum :: SDL_SystemCursor -> CEnumZ SDL_SystemCursor
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_SystemCursor -> DeclaredValues SDL_SystemCursor
declaredValues =
    \proxy SDL_SystemCursor
_ ->
      [(CEnumZ SDL_SystemCursor, NonEmpty String)]
-> DeclaredValues SDL_SystemCursor
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_SystemCursor
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_DEFAULT")
        , (CUInt
CEnumZ SDL_SystemCursor
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_TEXT")
        , (CUInt
CEnumZ SDL_SystemCursor
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_WAIT")
        , (CUInt
CEnumZ SDL_SystemCursor
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_CROSSHAIR")
        , (CUInt
CEnumZ SDL_SystemCursor
4, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_PROGRESS")
        , (CUInt
CEnumZ SDL_SystemCursor
5, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_NWSE_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
6, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_NESW_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
7, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_EW_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
8, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_NS_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
9, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_MOVE")
        , (CUInt
CEnumZ SDL_SystemCursor
10, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_NOT_ALLOWED")
        , (CUInt
CEnumZ SDL_SystemCursor
11, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_POINTER")
        , (CUInt
CEnumZ SDL_SystemCursor
12, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_NW_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
13, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_N_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
14, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_NE_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
15, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_E_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
16, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_SE_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
17, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_S_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
18, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_SW_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
19, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_W_RESIZE")
        , (CUInt
CEnumZ SDL_SystemCursor
20, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_SYSTEM_CURSOR_COUNT")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_SystemCursor where
  minDeclaredValue :: SDL_SystemCursor
minDeclaredValue = SDL_SystemCursor
SDL_SYSTEM_CURSOR_DEFAULT

  maxDeclaredValue :: SDL_SystemCursor
maxDeclaredValue = SDL_SystemCursor
SDL_SYSTEM_CURSOR_COUNT

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

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

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

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

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

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

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

-- | Default cursor. Usually an arrow.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_DEFAULT@, defined at @SDL3\/SDL_mouse.h 99:5@
pattern SDL_SYSTEM_CURSOR_DEFAULT :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_DEFAULT :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_DEFAULT :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_DEFAULT = SDL_SystemCursor 0

-- | Text selection. Usually an I-beam.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_TEXT@, defined at @SDL3\/SDL_mouse.h 100:5@
pattern SDL_SYSTEM_CURSOR_TEXT :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_TEXT :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_TEXT :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_TEXT = SDL_SystemCursor 1

-- | Wait. Usually an hourglass or watch or spinning ball.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_WAIT@, defined at @SDL3\/SDL_mouse.h 101:5@
pattern SDL_SYSTEM_CURSOR_WAIT :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_WAIT :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_WAIT :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_WAIT = SDL_SystemCursor 2

-- | Crosshair.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_CROSSHAIR@, defined at @SDL3\/SDL_mouse.h 102:5@
pattern SDL_SYSTEM_CURSOR_CROSSHAIR :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_CROSSHAIR :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_CROSSHAIR :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_CROSSHAIR = SDL_SystemCursor 3

-- | Program is busy but still interactive. Usually it\'s WAIT with an arrow.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_PROGRESS@, defined at @SDL3\/SDL_mouse.h 103:5@
pattern SDL_SYSTEM_CURSOR_PROGRESS :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_PROGRESS :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_PROGRESS :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_PROGRESS = SDL_SystemCursor 4

-- | Double arrow pointing northwest and southeast.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_NWSE_RESIZE@, defined at @SDL3\/SDL_mouse.h 104:5@
pattern SDL_SYSTEM_CURSOR_NWSE_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_NWSE_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_NWSE_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_NWSE_RESIZE = SDL_SystemCursor 5

-- | Double arrow pointing northeast and southwest.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_NESW_RESIZE@, defined at @SDL3\/SDL_mouse.h 105:5@
pattern SDL_SYSTEM_CURSOR_NESW_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_NESW_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_NESW_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_NESW_RESIZE = SDL_SystemCursor 6

-- | Double arrow pointing west and east.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_EW_RESIZE@, defined at @SDL3\/SDL_mouse.h 106:5@
pattern SDL_SYSTEM_CURSOR_EW_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_EW_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_EW_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_EW_RESIZE = SDL_SystemCursor 7

-- | Double arrow pointing north and south.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_NS_RESIZE@, defined at @SDL3\/SDL_mouse.h 107:5@
pattern SDL_SYSTEM_CURSOR_NS_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_NS_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_NS_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_NS_RESIZE = SDL_SystemCursor 8

-- | Four pointed arrow pointing north, south, east, and west.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_MOVE@, defined at @SDL3\/SDL_mouse.h 108:5@
pattern SDL_SYSTEM_CURSOR_MOVE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_MOVE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_MOVE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_MOVE = SDL_SystemCursor 9

-- | Not permitted. Usually a slashed circle or crossbones.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_NOT_ALLOWED@, defined at @SDL3\/SDL_mouse.h 109:5@
pattern SDL_SYSTEM_CURSOR_NOT_ALLOWED :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_NOT_ALLOWED :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_NOT_ALLOWED :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_NOT_ALLOWED = SDL_SystemCursor 10

-- | Pointer that indicates a link. Usually a pointing hand.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_POINTER@, defined at @SDL3\/SDL_mouse.h 110:5@
pattern SDL_SYSTEM_CURSOR_POINTER :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_POINTER :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_POINTER :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_POINTER = SDL_SystemCursor 11

-- | Window resize top-left. This may be a single arrow or a double arrow like NWSE_RESIZE.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_NW_RESIZE@, defined at @SDL3\/SDL_mouse.h 111:5@
pattern SDL_SYSTEM_CURSOR_NW_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_NW_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_NW_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_NW_RESIZE = SDL_SystemCursor 12

-- | Window resize top. May be NS_RESIZE.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_N_RESIZE@, defined at @SDL3\/SDL_mouse.h 112:5@
pattern SDL_SYSTEM_CURSOR_N_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_N_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_N_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_N_RESIZE = SDL_SystemCursor 13

-- | Window resize top-right. May be NESW_RESIZE.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_NE_RESIZE@, defined at @SDL3\/SDL_mouse.h 113:5@
pattern SDL_SYSTEM_CURSOR_NE_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_NE_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_NE_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_NE_RESIZE = SDL_SystemCursor 14

-- | Window resize right. May be EW_RESIZE.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_E_RESIZE@, defined at @SDL3\/SDL_mouse.h 114:5@
pattern SDL_SYSTEM_CURSOR_E_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_E_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_E_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_E_RESIZE = SDL_SystemCursor 15

-- | Window resize bottom-right. May be NWSE_RESIZE.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_SE_RESIZE@, defined at @SDL3\/SDL_mouse.h 115:5@
pattern SDL_SYSTEM_CURSOR_SE_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_SE_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_SE_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_SE_RESIZE = SDL_SystemCursor 16

-- | Window resize bottom. May be NS_RESIZE.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_S_RESIZE@, defined at @SDL3\/SDL_mouse.h 116:5@
pattern SDL_SYSTEM_CURSOR_S_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_S_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_S_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_S_RESIZE = SDL_SystemCursor 17

-- | Window resize bottom-left. May be NESW_RESIZE.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_SW_RESIZE@, defined at @SDL3\/SDL_mouse.h 117:5@
pattern SDL_SYSTEM_CURSOR_SW_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_SW_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_SW_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_SW_RESIZE = SDL_SystemCursor 18

-- | Window resize left. May be EW_RESIZE.
--
--     [C declaration]: @SDL_SYSTEM_CURSOR_W_RESIZE@, defined at @SDL3\/SDL_mouse.h 118:5@
pattern SDL_SYSTEM_CURSOR_W_RESIZE :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_W_RESIZE :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_W_RESIZE :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_W_RESIZE = SDL_SystemCursor 19

-- | [C declaration]: @SDL_SYSTEM_CURSOR_COUNT@, defined at @SDL3\/SDL_mouse.h 119:5@
pattern SDL_SYSTEM_CURSOR_COUNT :: SDL_SystemCursor
pattern $mSDL_SYSTEM_CURSOR_COUNT :: forall {r}. SDL_SystemCursor -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_SYSTEM_CURSOR_COUNT :: SDL_SystemCursor
SDL_SYSTEM_CURSOR_COUNT = SDL_SystemCursor 20

-- | Scroll direction types for the Scroll event
--
--     @since 3.2.0
--
--     [C declaration]: @enum SDL_MouseWheelDirection@, defined at @SDL3\/SDL_mouse.h 127:14@
newtype SDL_MouseWheelDirection = SDL_MouseWheelDirection
  { SDL_MouseWheelDirection -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x.
 SDL_MouseWheelDirection -> Rep SDL_MouseWheelDirection x)
-> (forall x.
    Rep SDL_MouseWheelDirection x -> SDL_MouseWheelDirection)
-> Generic SDL_MouseWheelDirection
forall x. Rep SDL_MouseWheelDirection x -> SDL_MouseWheelDirection
forall x. SDL_MouseWheelDirection -> Rep SDL_MouseWheelDirection x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_MouseWheelDirection -> Rep SDL_MouseWheelDirection x
from :: forall x. SDL_MouseWheelDirection -> Rep SDL_MouseWheelDirection x
$cto :: forall x. Rep SDL_MouseWheelDirection x -> SDL_MouseWheelDirection
to :: forall x. Rep SDL_MouseWheelDirection x -> SDL_MouseWheelDirection
BG.Generic, SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
(SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool)
-> (SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool)
-> Eq SDL_MouseWheelDirection
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
== :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
$c/= :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
/= :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
Eq, Eq SDL_MouseWheelDirection
Eq SDL_MouseWheelDirection =>
(SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Ordering)
-> (SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool)
-> (SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool)
-> (SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool)
-> (SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool)
-> (SDL_MouseWheelDirection
    -> SDL_MouseWheelDirection -> SDL_MouseWheelDirection)
-> (SDL_MouseWheelDirection
    -> SDL_MouseWheelDirection -> SDL_MouseWheelDirection)
-> Ord SDL_MouseWheelDirection
SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Ordering
SDL_MouseWheelDirection
-> SDL_MouseWheelDirection -> SDL_MouseWheelDirection
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_MouseWheelDirection -> SDL_MouseWheelDirection -> Ordering
compare :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Ordering
$c< :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
< :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
$c<= :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
<= :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
$c> :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
> :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
$c>= :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
>= :: SDL_MouseWheelDirection -> SDL_MouseWheelDirection -> Bool
$cmax :: SDL_MouseWheelDirection
-> SDL_MouseWheelDirection -> SDL_MouseWheelDirection
max :: SDL_MouseWheelDirection
-> SDL_MouseWheelDirection -> SDL_MouseWheelDirection
$cmin :: SDL_MouseWheelDirection
-> SDL_MouseWheelDirection -> SDL_MouseWheelDirection
min :: SDL_MouseWheelDirection
-> SDL_MouseWheelDirection -> SDL_MouseWheelDirection
Ord)
  deriving newtype (FFIType SDL_MouseWheelDirection -> SDL_MouseWheelDirection
SDL_MouseWheelDirection -> FFIType SDL_MouseWheelDirection
(SDL_MouseWheelDirection -> FFIType SDL_MouseWheelDirection)
-> (FFIType SDL_MouseWheelDirection -> SDL_MouseWheelDirection)
-> HasFFIType SDL_MouseWheelDirection
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_MouseWheelDirection -> FFIType SDL_MouseWheelDirection
toFFIType :: SDL_MouseWheelDirection -> FFIType SDL_MouseWheelDirection
$cfromFFIType :: FFIType SDL_MouseWheelDirection -> SDL_MouseWheelDirection
fromFFIType :: FFIType SDL_MouseWheelDirection -> SDL_MouseWheelDirection
BG.HasFFIType)

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

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

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

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

deriving via
  Marshal.EquivStorable SDL_MouseWheelDirection
  instance
    BG.Storable SDL_MouseWheelDirection

deriving via BG.CUInt instance BG.Prim SDL_MouseWheelDirection

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

  toCEnum :: CEnumZ SDL_MouseWheelDirection -> SDL_MouseWheelDirection
toCEnum = CUInt -> SDL_MouseWheelDirection
CEnumZ SDL_MouseWheelDirection -> SDL_MouseWheelDirection
SDL_MouseWheelDirection

  fromCEnum :: SDL_MouseWheelDirection -> CEnumZ SDL_MouseWheelDirection
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_MouseWheelDirection
-> DeclaredValues SDL_MouseWheelDirection
declaredValues =
    \proxy SDL_MouseWheelDirection
_ ->
      [(CEnumZ SDL_MouseWheelDirection, NonEmpty String)]
-> DeclaredValues SDL_MouseWheelDirection
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_MouseWheelDirection
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_MOUSEWHEEL_NORMAL")
        , (CUInt
CEnumZ SDL_MouseWheelDirection
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_MOUSEWHEEL_FLIPPED")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_MouseWheelDirection where
  minDeclaredValue :: SDL_MouseWheelDirection
minDeclaredValue = SDL_MouseWheelDirection
SDL_MOUSEWHEEL_NORMAL

  maxDeclaredValue :: SDL_MouseWheelDirection
maxDeclaredValue = SDL_MouseWheelDirection
SDL_MOUSEWHEEL_FLIPPED

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

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

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

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

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

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

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

-- | The scroll direction is normal
--
--     [C declaration]: @SDL_MOUSEWHEEL_NORMAL@, defined at @SDL3\/SDL_mouse.h 129:5@
pattern SDL_MOUSEWHEEL_NORMAL :: SDL_MouseWheelDirection
pattern $mSDL_MOUSEWHEEL_NORMAL :: forall {r}.
SDL_MouseWheelDirection -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_MOUSEWHEEL_NORMAL :: SDL_MouseWheelDirection
SDL_MOUSEWHEEL_NORMAL = SDL_MouseWheelDirection 0

-- | The scroll direction is flipped \/ natural
--
--     [C declaration]: @SDL_MOUSEWHEEL_FLIPPED@, defined at @SDL3\/SDL_mouse.h 130:5@
pattern SDL_MOUSEWHEEL_FLIPPED :: SDL_MouseWheelDirection
pattern $mSDL_MOUSEWHEEL_FLIPPED :: forall {r}.
SDL_MouseWheelDirection -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_MOUSEWHEEL_FLIPPED :: SDL_MouseWheelDirection
SDL_MOUSEWHEEL_FLIPPED = SDL_MouseWheelDirection 1

-- | Animated cursor frame info.
--
--     @since 3.4.0
--
--     [C declaration]: @struct SDL_CursorFrameInfo@, defined at @SDL3\/SDL_mouse.h 138:16@
data SDL_CursorFrameInfo = SDL_CursorFrameInfo
  { SDL_CursorFrameInfo -> Ptr SDL_Surface
surface :: BG.Ptr SDL3.Sys.Bindgen.Surface.SDL_Surface
  -- ^ The surface data for this frame
  --
  --          [C declaration]: @surface@, defined at @SDL3\/SDL_mouse.h 140:18@
  , SDL_CursorFrameInfo -> Uint32
duration :: SDL3.Sys.Bindgen.Stdinc.Uint32
  -- ^ The frame duration in milliseconds (a duration of 0 is infinite)
  --
  --          [C declaration]: @duration@, defined at @SDL3\/SDL_mouse.h 141:12@
  }
  deriving stock ((forall x. SDL_CursorFrameInfo -> Rep SDL_CursorFrameInfo x)
-> (forall x. Rep SDL_CursorFrameInfo x -> SDL_CursorFrameInfo)
-> Generic SDL_CursorFrameInfo
forall x. Rep SDL_CursorFrameInfo x -> SDL_CursorFrameInfo
forall x. SDL_CursorFrameInfo -> Rep SDL_CursorFrameInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_CursorFrameInfo -> Rep SDL_CursorFrameInfo x
from :: forall x. SDL_CursorFrameInfo -> Rep SDL_CursorFrameInfo x
$cto :: forall x. Rep SDL_CursorFrameInfo x -> SDL_CursorFrameInfo
to :: forall x. Rep SDL_CursorFrameInfo x -> SDL_CursorFrameInfo
BG.Generic, SDL_CursorFrameInfo -> SDL_CursorFrameInfo -> Bool
(SDL_CursorFrameInfo -> SDL_CursorFrameInfo -> Bool)
-> (SDL_CursorFrameInfo -> SDL_CursorFrameInfo -> Bool)
-> Eq SDL_CursorFrameInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_CursorFrameInfo -> SDL_CursorFrameInfo -> Bool
== :: SDL_CursorFrameInfo -> SDL_CursorFrameInfo -> Bool
$c/= :: SDL_CursorFrameInfo -> SDL_CursorFrameInfo -> Bool
/= :: SDL_CursorFrameInfo -> SDL_CursorFrameInfo -> Bool
Eq, Int -> SDL_CursorFrameInfo -> ShowS
[SDL_CursorFrameInfo] -> ShowS
SDL_CursorFrameInfo -> String
(Int -> SDL_CursorFrameInfo -> ShowS)
-> (SDL_CursorFrameInfo -> String)
-> ([SDL_CursorFrameInfo] -> ShowS)
-> Show SDL_CursorFrameInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_CursorFrameInfo -> ShowS
showsPrec :: Int -> SDL_CursorFrameInfo -> ShowS
$cshow :: SDL_CursorFrameInfo -> String
show :: SDL_CursorFrameInfo -> String
$cshowList :: [SDL_CursorFrameInfo] -> ShowS
showList :: [SDL_CursorFrameInfo] -> ShowS
Show)

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

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

instance Marshal.ReadRaw SDL_CursorFrameInfo where
  readRaw :: Ptr SDL_CursorFrameInfo -> IO SDL_CursorFrameInfo
readRaw =
    \Ptr SDL_CursorFrameInfo
ptr0 ->
      (Ptr SDL_Surface -> Uint32 -> SDL_CursorFrameInfo)
-> IO (Ptr SDL_Surface -> Uint32 -> SDL_CursorFrameInfo)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Ptr SDL_Surface -> Uint32 -> SDL_CursorFrameInfo
SDL_CursorFrameInfo
        IO (Ptr SDL_Surface -> Uint32 -> SDL_CursorFrameInfo)
-> IO (Ptr SDL_Surface) -> IO (Uint32 -> SDL_CursorFrameInfo)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "surface"
-> Ptr SDL_CursorFrameInfo
-> IO (CFieldType SDL_CursorFrameInfo "surface")
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 @"surface") Ptr SDL_CursorFrameInfo
ptr0
        IO (Uint32 -> SDL_CursorFrameInfo)
-> IO Uint32 -> IO SDL_CursorFrameInfo
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "duration"
-> Ptr SDL_CursorFrameInfo
-> IO (CFieldType SDL_CursorFrameInfo "duration")
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 @"duration") Ptr SDL_CursorFrameInfo
ptr0

instance Marshal.WriteRaw SDL_CursorFrameInfo where
  writeRaw :: Ptr SDL_CursorFrameInfo -> SDL_CursorFrameInfo -> IO ()
writeRaw =
    \Ptr SDL_CursorFrameInfo
ptr0 ->
      \SDL_CursorFrameInfo
s1 ->
        case SDL_CursorFrameInfo
s1 of
          SDL_CursorFrameInfo Ptr SDL_Surface
surface2 Uint32
duration3 ->
            Proxy "surface"
-> Ptr SDL_CursorFrameInfo
-> CFieldType SDL_CursorFrameInfo "surface"
-> 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 @"surface") Ptr SDL_CursorFrameInfo
ptr0 Ptr SDL_Surface
CFieldType SDL_CursorFrameInfo "surface"
surface2
              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 "duration"
-> Ptr SDL_CursorFrameInfo
-> CFieldType SDL_CursorFrameInfo "duration"
-> 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 @"duration") Ptr SDL_CursorFrameInfo
ptr0 CFieldType SDL_CursorFrameInfo "duration"
Uint32
duration3

deriving via Marshal.EquivStorable SDL_CursorFrameInfo instance BG.Storable SDL_CursorFrameInfo

deriving via
  Struct.IsStructViaReadRaw SDL_CursorFrameInfo
  instance
    Struct.IsStruct SDL_CursorFrameInfo

-- | The surface data for this frame
--
--     [C declaration]: @surface@, defined at @SDL3\/SDL_mouse.h 140:18@
instance
  (ty ~ BG.Ptr SDL3.Sys.Bindgen.Surface.SDL_Surface)
  => BG.CompatHasField.HasField "surface" SDL_CursorFrameInfo ty
  where
  hasField :: SDL_CursorFrameInfo -> (ty -> SDL_CursorFrameInfo, ty)
hasField =
    \SDL_CursorFrameInfo
x0 ->
      ( \ty
y1 ->
          SDL_CursorFrameInfo{surface :: Ptr SDL_Surface
surface = ty
Ptr SDL_Surface
y1, duration :: Uint32
duration = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"duration" SDL_CursorFrameInfo
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 @"surface" SDL_CursorFrameInfo
x0
      )

instance
  (ty ~ BG.Ptr SDL3.Sys.Bindgen.Surface.SDL_Surface)
  => BG.HasField "surface" (BG.Ptr SDL_CursorFrameInfo) (BG.Ptr ty)
  where
  getField :: Ptr SDL_CursorFrameInfo -> Ptr ty
getField = Proxy "surface"
-> Ptr SDL_CursorFrameInfo
-> Ptr (CFieldType SDL_CursorFrameInfo "surface")
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 @"surface")

instance HasCField.HasCField SDL_CursorFrameInfo "surface" where
  type
    CFieldType SDL_CursorFrameInfo "surface" =
      BG.Ptr SDL3.Sys.Bindgen.Surface.SDL_Surface

  offset# :: Proxy# SDL_CursorFrameInfo -> Proxy# "surface" -> Int
offset# = \Proxy# SDL_CursorFrameInfo
_ -> \Proxy# "surface"
_ -> Int
0

-- | The frame duration in milliseconds (a duration of 0 is infinite)
--
--     [C declaration]: @duration@, defined at @SDL3\/SDL_mouse.h 141:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.CompatHasField.HasField "duration" SDL_CursorFrameInfo ty
  where
  hasField :: SDL_CursorFrameInfo -> (ty -> SDL_CursorFrameInfo, ty)
hasField =
    \SDL_CursorFrameInfo
x0 ->
      ( \ty
y1 ->
          SDL_CursorFrameInfo{duration :: Uint32
duration = ty
Uint32
y1, surface :: Ptr SDL_Surface
surface = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"surface" SDL_CursorFrameInfo
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 @"duration" SDL_CursorFrameInfo
x0
      )

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

instance HasCField.HasCField SDL_CursorFrameInfo "duration" where
  type
    CFieldType SDL_CursorFrameInfo "duration" =
      SDL3.Sys.Bindgen.Stdinc.Uint32

  offset# :: Proxy# SDL_CursorFrameInfo -> Proxy# "duration" -> Int
offset# = \Proxy# SDL_CursorFrameInfo
_ -> \Proxy# "duration"
_ -> Int
8

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

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

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

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

-- | [C declaration]: @macro SDL_BUTTON_LEFT@, defined at @SDL3\/SDL_mouse.h 161:9@
sDL_BUTTON_LEFT :: BG.CInt
sDL_BUTTON_LEFT :: CInt
sDL_BUTTON_LEFT = (CInt
1 :: BG.CInt)

-- | [C declaration]: @macro SDL_BUTTON_MIDDLE@, defined at @SDL3\/SDL_mouse.h 162:9@
sDL_BUTTON_MIDDLE :: BG.CInt
sDL_BUTTON_MIDDLE :: CInt
sDL_BUTTON_MIDDLE = (CInt
2 :: BG.CInt)

-- | [C declaration]: @macro SDL_BUTTON_RIGHT@, defined at @SDL3\/SDL_mouse.h 163:9@
sDL_BUTTON_RIGHT :: BG.CInt
sDL_BUTTON_RIGHT :: CInt
sDL_BUTTON_RIGHT = (CInt
3 :: BG.CInt)

-- | [C declaration]: @macro SDL_BUTTON_X1@, defined at @SDL3\/SDL_mouse.h 164:9@
sDL_BUTTON_X1 :: BG.CInt
sDL_BUTTON_X1 :: CInt
sDL_BUTTON_X1 = (CInt
4 :: BG.CInt)

-- | [C declaration]: @macro SDL_BUTTON_X2@, defined at @SDL3\/SDL_mouse.h 165:9@
sDL_BUTTON_X2 :: BG.CInt
sDL_BUTTON_X2 :: CInt
sDL_BUTTON_X2 = (CInt
5 :: BG.CInt)

-- | [C declaration]: @macro SDL_BUTTON_MASK@, defined at @SDL3\/SDL_mouse.h 167:9@
sDL_BUTTON_MASK
  :: forall a0
   . (C.Expr.HostPlatform.Sub a0 BG.CInt)
  => (C.Expr.HostPlatform.Shift BG.CUInt (C.Expr.HostPlatform.SubRes a0 BG.CInt))
  => a0 -> BG.CUInt
sDL_BUTTON_MASK :: forall a0.
(Sub a0 CInt, Shift CUInt (SubRes a0 CInt)) =>
a0 -> CUInt
sDL_BUTTON_MASK =
  \a0
x0 ->
    CUInt -> SubRes a0 CInt -> ShiftRes CUInt
forall a i. Shift a i => a -> i -> ShiftRes a
(C.Expr.HostPlatform.<<) (CUInt
1 :: BG.CUInt) (a0 -> CInt -> SubRes a0 CInt
forall a b. Sub a b => a -> b -> SubRes a b
(C.Expr.HostPlatform.-) a0
x0 (CInt
1 :: BG.CInt))

-- | [C declaration]: @macro SDL_BUTTON_LMASK@, defined at @SDL3\/SDL_mouse.h 168:9@
sDL_BUTTON_LMASK :: BG.CUInt
sDL_BUTTON_LMASK :: CUInt
sDL_BUTTON_LMASK = CInt -> CUInt
forall a0.
(Sub a0 CInt, Shift CUInt (SubRes a0 CInt)) =>
a0 -> CUInt
sDL_BUTTON_MASK CInt
sDL_BUTTON_LEFT

-- | [C declaration]: @macro SDL_BUTTON_MMASK@, defined at @SDL3\/SDL_mouse.h 169:9@
sDL_BUTTON_MMASK :: BG.CUInt
sDL_BUTTON_MMASK :: CUInt
sDL_BUTTON_MMASK = CInt -> CUInt
forall a0.
(Sub a0 CInt, Shift CUInt (SubRes a0 CInt)) =>
a0 -> CUInt
sDL_BUTTON_MASK CInt
sDL_BUTTON_MIDDLE

-- | [C declaration]: @macro SDL_BUTTON_RMASK@, defined at @SDL3\/SDL_mouse.h 170:9@
sDL_BUTTON_RMASK :: BG.CUInt
sDL_BUTTON_RMASK :: CUInt
sDL_BUTTON_RMASK = CInt -> CUInt
forall a0.
(Sub a0 CInt, Shift CUInt (SubRes a0 CInt)) =>
a0 -> CUInt
sDL_BUTTON_MASK CInt
sDL_BUTTON_RIGHT

-- | [C declaration]: @macro SDL_BUTTON_X1MASK@, defined at @SDL3\/SDL_mouse.h 171:9@
sDL_BUTTON_X1MASK :: BG.CUInt
sDL_BUTTON_X1MASK :: CUInt
sDL_BUTTON_X1MASK = CInt -> CUInt
forall a0.
(Sub a0 CInt, Shift CUInt (SubRes a0 CInt)) =>
a0 -> CUInt
sDL_BUTTON_MASK CInt
sDL_BUTTON_X1

-- | [C declaration]: @macro SDL_BUTTON_X2MASK@, defined at @SDL3\/SDL_mouse.h 172:9@
sDL_BUTTON_X2MASK :: BG.CUInt
sDL_BUTTON_X2MASK :: CUInt
sDL_BUTTON_X2MASK = CInt -> CUInt
forall a0.
(Sub a0 CInt, Shift CUInt (SubRes a0 CInt)) =>
a0 -> CUInt
sDL_BUTTON_MASK CInt
sDL_BUTTON_X2

-- | Auxiliary type used by 'SDL_MouseMotionTransformCallback'
--
--     [C declaration]: @SDL_MouseMotionTransformCallback@, defined at @SDL3\/SDL_mouse.h 205:24@
newtype SDL_MouseMotionTransformCallback_Aux = SDL_MouseMotionTransformCallback_Aux
  { SDL_MouseMotionTransformCallback_Aux
-> Ptr Void
-> Uint64
-> Ptr SDL_Window
-> SDL_MouseID
-> Ptr CFloat
-> Ptr CFloat
-> IO ()
unwrap
      :: BG.Ptr BG.Void
      -> SDL3.Sys.Bindgen.Stdinc.Uint64
      -> BG.Ptr SDL3.Sys.Bindgen.Video.SDL_Window
      -> SDL_MouseID
      -> BG.Ptr BG.CFloat
      -> BG.Ptr BG.CFloat
      -> IO ()
  }
  deriving stock ((forall x.
 SDL_MouseMotionTransformCallback_Aux
 -> Rep SDL_MouseMotionTransformCallback_Aux x)
-> (forall x.
    Rep SDL_MouseMotionTransformCallback_Aux x
    -> SDL_MouseMotionTransformCallback_Aux)
-> Generic SDL_MouseMotionTransformCallback_Aux
forall x.
Rep SDL_MouseMotionTransformCallback_Aux x
-> SDL_MouseMotionTransformCallback_Aux
forall x.
SDL_MouseMotionTransformCallback_Aux
-> Rep SDL_MouseMotionTransformCallback_Aux x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_MouseMotionTransformCallback_Aux
-> Rep SDL_MouseMotionTransformCallback_Aux x
from :: forall x.
SDL_MouseMotionTransformCallback_Aux
-> Rep SDL_MouseMotionTransformCallback_Aux x
$cto :: forall x.
Rep SDL_MouseMotionTransformCallback_Aux x
-> SDL_MouseMotionTransformCallback_Aux
to :: forall x.
Rep SDL_MouseMotionTransformCallback_Aux x
-> SDL_MouseMotionTransformCallback_Aux
BG.Generic)

-- __unique:__ @toSDL_MouseMotionTransformCallback_Aux@
foreign import ccall safe "wrapper"
  hs_bindgen_3e4a2d15fbbe81d6_base
    :: ( BG.Ptr BG.Void
         -> HsBindgen.Runtime.LibC.Word64
         -> BG.Ptr BG.Void
         -> HsBindgen.Runtime.LibC.Word32
         -> BG.Ptr BG.Void
         -> BG.Ptr BG.Void
         -> IO ()
       )
    -> IO
         ( BG.FunPtr
             ( BG.Ptr BG.Void
               -> HsBindgen.Runtime.LibC.Word64
               -> BG.Ptr BG.Void
               -> HsBindgen.Runtime.LibC.Word32
               -> BG.Ptr BG.Void
               -> BG.Ptr BG.Void
               -> IO ()
             )
         )

-- __unique:__ @toSDL_MouseMotionTransformCallback_Aux@
hs_bindgen_3e4a2d15fbbe81d6
  :: SDL_MouseMotionTransformCallback_Aux
  -> IO (BG.FunPtr SDL_MouseMotionTransformCallback_Aux)
hs_bindgen_3e4a2d15fbbe81d6 :: SDL_MouseMotionTransformCallback_Aux
-> IO (FunPtr SDL_MouseMotionTransformCallback_Aux)
hs_bindgen_3e4a2d15fbbe81d6 =
  \SDL_MouseMotionTransformCallback_Aux
fun0 ->
    (FunPtr
   (Ptr Void
    -> Word64 -> Ptr Void -> Word32 -> Ptr Void -> Ptr Void -> IO ())
 -> FunPtr SDL_MouseMotionTransformCallback_Aux)
-> IO
     (FunPtr
        (Ptr Void
         -> Word64 -> Ptr Void -> Word32 -> Ptr Void -> Ptr Void -> IO ()))
-> IO (FunPtr SDL_MouseMotionTransformCallback_Aux)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
      FunPtr
  (Ptr Void
   -> Word64 -> Ptr Void -> Word32 -> Ptr Void -> Ptr Void -> IO ())
-> FunPtr SDL_MouseMotionTransformCallback_Aux
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr
      ( (Ptr Void
 -> Word64 -> Ptr Void -> Word32 -> Ptr Void -> Ptr Void -> IO ())
-> IO
     (FunPtr
        (Ptr Void
         -> Word64 -> Ptr Void -> Word32 -> Ptr Void -> Ptr Void -> IO ()))
hs_bindgen_3e4a2d15fbbe81d6_base
          ( \Ptr Void
x1 ->
              \Word64
x2 ->
                \Ptr Void
x3 ->
                  \Word32
x4 ->
                    \Ptr Void
x5 ->
                      \Ptr Void
x6 ->
                        forall {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_MouseMotionTransformCallback_Aux
fun0
                          (FFIType (Ptr Void) -> Ptr Void
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr Void)
x1)
                          (FFIType Uint64 -> Uint64
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Word64
FFIType Uint64
x2)
                          (FFIType (Ptr SDL_Window) -> Ptr SDL_Window
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr SDL_Window)
x3)
                          (FFIType SDL_MouseID -> SDL_MouseID
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Word32
FFIType SDL_MouseID
x4)
                          (FFIType (Ptr CFloat) -> Ptr CFloat
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr CFloat)
x5)
                          (FFIType (Ptr CFloat) -> Ptr CFloat
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr CFloat)
x6)
          )
      )

-- __unique:__ @fromSDL_MouseMotionTransformCallback_Aux@
foreign import ccall safe "dynamic"
  hs_bindgen_97a29d76d0ffd06f_base
    :: BG.FunPtr
         ( BG.Ptr BG.Void
           -> HsBindgen.Runtime.LibC.Word64
           -> BG.Ptr BG.Void
           -> HsBindgen.Runtime.LibC.Word32
           -> BG.Ptr BG.Void
           -> BG.Ptr BG.Void
           -> IO ()
         )
    -> BG.Ptr BG.Void
    -> HsBindgen.Runtime.LibC.Word64
    -> BG.Ptr BG.Void
    -> HsBindgen.Runtime.LibC.Word32
    -> BG.Ptr BG.Void
    -> BG.Ptr BG.Void
    -> IO ()

-- __unique:__ @fromSDL_MouseMotionTransformCallback_Aux@
hs_bindgen_97a29d76d0ffd06f
  :: BG.FunPtr SDL_MouseMotionTransformCallback_Aux
  -> SDL_MouseMotionTransformCallback_Aux
hs_bindgen_97a29d76d0ffd06f :: FunPtr SDL_MouseMotionTransformCallback_Aux
-> SDL_MouseMotionTransformCallback_Aux
hs_bindgen_97a29d76d0ffd06f =
  \FunPtr SDL_MouseMotionTransformCallback_Aux
funPtr0 ->
    (Ptr Void
 -> Uint64
 -> Ptr SDL_Window
 -> SDL_MouseID
 -> Ptr CFloat
 -> Ptr CFloat
 -> IO ())
-> SDL_MouseMotionTransformCallback_Aux
SDL_MouseMotionTransformCallback_Aux
      ( \Ptr Void
x1 ->
          \Uint64
x2 ->
            \Ptr SDL_Window
x3 ->
              \SDL_MouseID
x4 ->
                \Ptr CFloat
x5 ->
                  \Ptr CFloat
x6 ->
                    FunPtr
  (Ptr Void
   -> Word64 -> Ptr Void -> Word32 -> Ptr Void -> Ptr Void -> IO ())
-> Ptr Void
-> Word64
-> Ptr Void
-> Word32
-> Ptr Void
-> Ptr Void
-> IO ()
hs_bindgen_97a29d76d0ffd06f_base
                      (FunPtr SDL_MouseMotionTransformCallback_Aux
-> FunPtr
     (Ptr Void
      -> Word64 -> Ptr Void -> Word32 -> Ptr Void -> Ptr Void -> IO ())
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr FunPtr SDL_MouseMotionTransformCallback_Aux
funPtr0)
                      (Ptr Void -> FFIType (Ptr Void)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr Void
x1)
                      (Uint64 -> FFIType Uint64
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Uint64
x2)
                      (Ptr SDL_Window -> FFIType (Ptr SDL_Window)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr SDL_Window
x3)
                      (SDL_MouseID -> FFIType SDL_MouseID
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType SDL_MouseID
x4)
                      (Ptr CFloat -> FFIType (Ptr CFloat)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr CFloat
x5)
                      (Ptr CFloat -> FFIType (Ptr CFloat)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr CFloat
x6)
      )

instance BG.ToFunPtr SDL_MouseMotionTransformCallback_Aux where
  toFunPtr :: SDL_MouseMotionTransformCallback_Aux
-> IO (FunPtr SDL_MouseMotionTransformCallback_Aux)
toFunPtr = SDL_MouseMotionTransformCallback_Aux
-> IO (FunPtr SDL_MouseMotionTransformCallback_Aux)
hs_bindgen_3e4a2d15fbbe81d6

instance BG.FromFunPtr SDL_MouseMotionTransformCallback_Aux where
  fromFunPtr :: FunPtr SDL_MouseMotionTransformCallback_Aux
-> SDL_MouseMotionTransformCallback_Aux
fromFunPtr = FunPtr SDL_MouseMotionTransformCallback_Aux
-> SDL_MouseMotionTransformCallback_Aux
hs_bindgen_97a29d76d0ffd06f

instance
  ( ty
      ~ ( BG.Ptr BG.Void
          -> SDL3.Sys.Bindgen.Stdinc.Uint64
          -> BG.Ptr SDL3.Sys.Bindgen.Video.SDL_Window
          -> SDL_MouseID
          -> BG.Ptr BG.CFloat
          -> BG.Ptr BG.CFloat
          -> IO ()
        )
  )
  => BG.CompatHasField.HasField "unwrap" SDL_MouseMotionTransformCallback_Aux ty
  where
  hasField :: SDL_MouseMotionTransformCallback_Aux
-> (ty -> SDL_MouseMotionTransformCallback_Aux, ty)
hasField =
    \SDL_MouseMotionTransformCallback_Aux
x0 ->
      ( \ty
y1 ->
          SDL_MouseMotionTransformCallback_Aux{unwrap :: Ptr Void
-> Uint64
-> Ptr SDL_Window
-> SDL_MouseID
-> Ptr CFloat
-> Ptr CFloat
-> IO ()
unwrap = ty
Ptr Void
-> Uint64
-> Ptr SDL_Window
-> SDL_MouseID
-> Ptr CFloat
-> Ptr CFloat
-> IO ()
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_MouseMotionTransformCallback_Aux
x0
      )

instance
  ( ty
      ~ ( BG.Ptr BG.Void
          -> SDL3.Sys.Bindgen.Stdinc.Uint64
          -> BG.Ptr SDL3.Sys.Bindgen.Video.SDL_Window
          -> SDL_MouseID
          -> BG.Ptr BG.CFloat
          -> BG.Ptr BG.CFloat
          -> IO ()
        )
  )
  => BG.HasField "unwrap" (BG.Ptr SDL_MouseMotionTransformCallback_Aux) (BG.Ptr ty)
  where
  getField :: Ptr SDL_MouseMotionTransformCallback_Aux -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_MouseMotionTransformCallback_Aux
-> Ptr (CFieldType SDL_MouseMotionTransformCallback_Aux "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_MouseMotionTransformCallback_Aux "unwrap" where
  type
    CFieldType SDL_MouseMotionTransformCallback_Aux "unwrap" =
      BG.Ptr BG.Void
      -> SDL3.Sys.Bindgen.Stdinc.Uint64
      -> BG.Ptr SDL3.Sys.Bindgen.Video.SDL_Window
      -> SDL_MouseID
      -> BG.Ptr BG.CFloat
      -> BG.Ptr BG.CFloat
      -> IO ()

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

-- | A callback used to transform mouse motion delta from raw values.
--
--     This is called during SDL\'s handling of platform mouse events to scale the values of the resulting motion delta.
--
--     [@userdata@]: what was passed as @userdata@ to @SDL_SetRelativeMouseTransform()@.
--
--     [@timestamp@]: the associated time at which this mouse motion event was received.
--
--     [@window@]: the associated window to which this mouse motion event was addressed.
--
--     [@mouseID@]: the associated mouse from which this mouse motion event was emitted.
--
--     [@x@]: pointer to a variable that will be treated as the resulting x-axis motion.
--
--     [@y@]: pointer to a variable that will be treated as the resulting y-axis motion.
--
--     [Thread safety]: This callback is called by SDL\'s internal mouse input processing procedure, which may be a thread separate from the main event loop that is run at realtime priority. Stalling this thread with too much work in the callback can therefore potentially freeze the entire system. Care should be taken with proper synchronization practices when adding other side effects beyond mutation of the x and y values.
--
--     @since 3.4.0
--
--     [See also]: 'sDL_SetRelativeMouseTransform'
--
--     [C declaration]: @SDL_MouseMotionTransformCallback@, defined at @SDL3\/SDL_mouse.h 205:24@
newtype SDL_MouseMotionTransformCallback = SDL_MouseMotionTransformCallback
  { SDL_MouseMotionTransformCallback
-> FunPtr SDL_MouseMotionTransformCallback_Aux
unwrap :: BG.FunPtr SDL_MouseMotionTransformCallback_Aux
  }
  deriving stock ((forall x.
 SDL_MouseMotionTransformCallback
 -> Rep SDL_MouseMotionTransformCallback x)
-> (forall x.
    Rep SDL_MouseMotionTransformCallback x
    -> SDL_MouseMotionTransformCallback)
-> Generic SDL_MouseMotionTransformCallback
forall x.
Rep SDL_MouseMotionTransformCallback x
-> SDL_MouseMotionTransformCallback
forall x.
SDL_MouseMotionTransformCallback
-> Rep SDL_MouseMotionTransformCallback x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_MouseMotionTransformCallback
-> Rep SDL_MouseMotionTransformCallback x
from :: forall x.
SDL_MouseMotionTransformCallback
-> Rep SDL_MouseMotionTransformCallback x
$cto :: forall x.
Rep SDL_MouseMotionTransformCallback x
-> SDL_MouseMotionTransformCallback
to :: forall x.
Rep SDL_MouseMotionTransformCallback x
-> SDL_MouseMotionTransformCallback
BG.Generic, SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
(SDL_MouseMotionTransformCallback
 -> SDL_MouseMotionTransformCallback -> Bool)
-> (SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback -> Bool)
-> Eq SDL_MouseMotionTransformCallback
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
== :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
$c/= :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
/= :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
Eq, Eq SDL_MouseMotionTransformCallback
Eq SDL_MouseMotionTransformCallback =>
(SDL_MouseMotionTransformCallback
 -> SDL_MouseMotionTransformCallback -> Ordering)
-> (SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback -> Bool)
-> (SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback -> Bool)
-> (SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback -> Bool)
-> (SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback -> Bool)
-> (SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback)
-> (SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback)
-> Ord SDL_MouseMotionTransformCallback
SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Ordering
SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
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_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Ordering
compare :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Ordering
$c< :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
< :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
$c<= :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
<= :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
$c> :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
> :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
$c>= :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
>= :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> Bool
$cmax :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
max :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
$cmin :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
min :: SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
Ord, Int -> SDL_MouseMotionTransformCallback -> ShowS
[SDL_MouseMotionTransformCallback] -> ShowS
SDL_MouseMotionTransformCallback -> String
(Int -> SDL_MouseMotionTransformCallback -> ShowS)
-> (SDL_MouseMotionTransformCallback -> String)
-> ([SDL_MouseMotionTransformCallback] -> ShowS)
-> Show SDL_MouseMotionTransformCallback
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_MouseMotionTransformCallback -> ShowS
showsPrec :: Int -> SDL_MouseMotionTransformCallback -> ShowS
$cshow :: SDL_MouseMotionTransformCallback -> String
show :: SDL_MouseMotionTransformCallback -> String
$cshowList :: [SDL_MouseMotionTransformCallback] -> ShowS
showList :: [SDL_MouseMotionTransformCallback] -> ShowS
Show)
  deriving newtype
    ( FFIType SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
SDL_MouseMotionTransformCallback
-> FFIType SDL_MouseMotionTransformCallback
(SDL_MouseMotionTransformCallback
 -> FFIType SDL_MouseMotionTransformCallback)
-> (FFIType SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback)
-> HasFFIType SDL_MouseMotionTransformCallback
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_MouseMotionTransformCallback
-> FFIType SDL_MouseMotionTransformCallback
toFFIType :: SDL_MouseMotionTransformCallback
-> FFIType SDL_MouseMotionTransformCallback
$cfromFFIType :: FFIType SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
fromFFIType :: FFIType SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback
BG.HasFFIType
    , Ptr SDL_MouseMotionTransformCallback
-> IO SDL_MouseMotionTransformCallback
Ptr SDL_MouseMotionTransformCallback
-> Int -> IO SDL_MouseMotionTransformCallback
Ptr SDL_MouseMotionTransformCallback
-> Int -> SDL_MouseMotionTransformCallback -> IO ()
Ptr SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> IO ()
SDL_MouseMotionTransformCallback -> Int
(SDL_MouseMotionTransformCallback -> Int)
-> (SDL_MouseMotionTransformCallback -> Int)
-> (Ptr SDL_MouseMotionTransformCallback
    -> Int -> IO SDL_MouseMotionTransformCallback)
-> (Ptr SDL_MouseMotionTransformCallback
    -> Int -> SDL_MouseMotionTransformCallback -> IO ())
-> (forall b. Ptr b -> Int -> IO SDL_MouseMotionTransformCallback)
-> (forall b.
    Ptr b -> Int -> SDL_MouseMotionTransformCallback -> IO ())
-> (Ptr SDL_MouseMotionTransformCallback
    -> IO SDL_MouseMotionTransformCallback)
-> (Ptr SDL_MouseMotionTransformCallback
    -> SDL_MouseMotionTransformCallback -> IO ())
-> Storable SDL_MouseMotionTransformCallback
forall b. Ptr b -> Int -> IO SDL_MouseMotionTransformCallback
forall b. Ptr b -> Int -> SDL_MouseMotionTransformCallback -> 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_MouseMotionTransformCallback -> Int
sizeOf :: SDL_MouseMotionTransformCallback -> Int
$calignment :: SDL_MouseMotionTransformCallback -> Int
alignment :: SDL_MouseMotionTransformCallback -> Int
$cpeekElemOff :: Ptr SDL_MouseMotionTransformCallback
-> Int -> IO SDL_MouseMotionTransformCallback
peekElemOff :: Ptr SDL_MouseMotionTransformCallback
-> Int -> IO SDL_MouseMotionTransformCallback
$cpokeElemOff :: Ptr SDL_MouseMotionTransformCallback
-> Int -> SDL_MouseMotionTransformCallback -> IO ()
pokeElemOff :: Ptr SDL_MouseMotionTransformCallback
-> Int -> SDL_MouseMotionTransformCallback -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SDL_MouseMotionTransformCallback
peekByteOff :: forall b. Ptr b -> Int -> IO SDL_MouseMotionTransformCallback
$cpokeByteOff :: forall b. Ptr b -> Int -> SDL_MouseMotionTransformCallback -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SDL_MouseMotionTransformCallback -> IO ()
$cpeek :: Ptr SDL_MouseMotionTransformCallback
-> IO SDL_MouseMotionTransformCallback
peek :: Ptr SDL_MouseMotionTransformCallback
-> IO SDL_MouseMotionTransformCallback
$cpoke :: Ptr SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> IO ()
poke :: Ptr SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> IO ()
BG.Storable
    , Ptr SDL_MouseMotionTransformCallback
-> IO SDL_MouseMotionTransformCallback
(Ptr SDL_MouseMotionTransformCallback
 -> IO SDL_MouseMotionTransformCallback)
-> ReadRaw SDL_MouseMotionTransformCallback
forall a. (Ptr a -> IO a) -> ReadRaw a
$creadRaw :: Ptr SDL_MouseMotionTransformCallback
-> IO SDL_MouseMotionTransformCallback
readRaw :: Ptr SDL_MouseMotionTransformCallback
-> IO SDL_MouseMotionTransformCallback
Marshal.ReadRaw
    , Proxy SDL_MouseMotionTransformCallback -> Int
(Proxy SDL_MouseMotionTransformCallback -> Int)
-> (Proxy SDL_MouseMotionTransformCallback -> Int)
-> StaticSize SDL_MouseMotionTransformCallback
forall a. (Proxy a -> Int) -> (Proxy a -> Int) -> StaticSize a
$cstaticSizeOf :: Proxy SDL_MouseMotionTransformCallback -> Int
staticSizeOf :: Proxy SDL_MouseMotionTransformCallback -> Int
$cstaticAlignment :: Proxy SDL_MouseMotionTransformCallback -> Int
staticAlignment :: Proxy SDL_MouseMotionTransformCallback -> Int
Marshal.StaticSize
    , Ptr SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> IO ()
(Ptr SDL_MouseMotionTransformCallback
 -> SDL_MouseMotionTransformCallback -> IO ())
-> WriteRaw SDL_MouseMotionTransformCallback
forall a. (Ptr a -> a -> IO ()) -> WriteRaw a
$cwriteRaw :: Ptr SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> IO ()
writeRaw :: Ptr SDL_MouseMotionTransformCallback
-> SDL_MouseMotionTransformCallback -> IO ()
Marshal.WriteRaw
    )

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

instance
  (ty ~ BG.FunPtr SDL_MouseMotionTransformCallback_Aux)
  => BG.HasField "unwrap" (BG.Ptr SDL_MouseMotionTransformCallback) (BG.Ptr ty)
  where
  getField :: Ptr SDL_MouseMotionTransformCallback -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_MouseMotionTransformCallback
-> Ptr (CFieldType SDL_MouseMotionTransformCallback "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_MouseMotionTransformCallback "unwrap" where
  type
    CFieldType SDL_MouseMotionTransformCallback "unwrap" =
      BG.FunPtr SDL_MouseMotionTransformCallback_Aux

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