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

-- | SDL offers touch input, on platforms that support it. It can manage multiple touch devices and track multiple fingers on those devices.
--
--     Touches are mostly dealt with through the event system, in the SDL_EVENT_FINGER_DOWN, SDL_EVENT_FINGER_MOTION, and SDL_EVENT_FINGER_UP events, but there are also functions to query for hardware details, etc.
--
--     The touch system, by default, will also send virtual mouse events; this can be useful for making a some desktop apps work on a phone without significant changes. For apps that care about mouse and touch input separately, they should ignore mouse events that have a @which@ field of SDL_TOUCH_MOUSEID. A unique ID for a touch device.
--
--     This ID is valid for the time the device is connected to the system, and is never reused for the lifetime of the application.
--
--     The value 0 is an invalid ID.
--
--     @since 3.2.0
module SDL3.Sys.Bindgen.Touch (
  SDL3.Sys.Bindgen.Touch.SDL_TouchID (..),
  SDL3.Sys.Bindgen.Touch.SDL_FingerID (..),
  SDL3.Sys.Bindgen.Touch.SDL_TouchDeviceType (..),
  pattern SDL3.Sys.Bindgen.Touch.SDL_TOUCH_DEVICE_INVALID,
  pattern SDL3.Sys.Bindgen.Touch.SDL_TOUCH_DEVICE_DIRECT,
  pattern SDL3.Sys.Bindgen.Touch.SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE,
  pattern SDL3.Sys.Bindgen.Touch.SDL_TOUCH_DEVICE_INDIRECT_RELATIVE,
  SDL3.Sys.Bindgen.Touch.SDL_Finger (..),
)
where

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

import HsBindgen.Runtime.CEnum qualified as CEnum
import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.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

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

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

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

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

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

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

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

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

-- | An enum that describes the type of a touch device.
--
--     @since 3.2.0
--
--     [C declaration]: @enum SDL_TouchDeviceType@, defined at @SDL3\/SDL_touch.h 83:14@
newtype SDL_TouchDeviceType = SDL_TouchDeviceType
  { SDL_TouchDeviceType -> CInt
unwrap :: BG.CInt
  }
  deriving stock ((forall x. SDL_TouchDeviceType -> Rep SDL_TouchDeviceType x)
-> (forall x. Rep SDL_TouchDeviceType x -> SDL_TouchDeviceType)
-> Generic SDL_TouchDeviceType
forall x. Rep SDL_TouchDeviceType x -> SDL_TouchDeviceType
forall x. SDL_TouchDeviceType -> Rep SDL_TouchDeviceType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_TouchDeviceType -> Rep SDL_TouchDeviceType x
from :: forall x. SDL_TouchDeviceType -> Rep SDL_TouchDeviceType x
$cto :: forall x. Rep SDL_TouchDeviceType x -> SDL_TouchDeviceType
to :: forall x. Rep SDL_TouchDeviceType x -> SDL_TouchDeviceType
BG.Generic, SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
(SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool)
-> (SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool)
-> Eq SDL_TouchDeviceType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
== :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
$c/= :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
/= :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
Eq, Eq SDL_TouchDeviceType
Eq SDL_TouchDeviceType =>
(SDL_TouchDeviceType -> SDL_TouchDeviceType -> Ordering)
-> (SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool)
-> (SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool)
-> (SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool)
-> (SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool)
-> (SDL_TouchDeviceType
    -> SDL_TouchDeviceType -> SDL_TouchDeviceType)
-> (SDL_TouchDeviceType
    -> SDL_TouchDeviceType -> SDL_TouchDeviceType)
-> Ord SDL_TouchDeviceType
SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
SDL_TouchDeviceType -> SDL_TouchDeviceType -> Ordering
SDL_TouchDeviceType -> SDL_TouchDeviceType -> SDL_TouchDeviceType
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_TouchDeviceType -> SDL_TouchDeviceType -> Ordering
compare :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Ordering
$c< :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
< :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
$c<= :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
<= :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
$c> :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
> :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
$c>= :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
>= :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> Bool
$cmax :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> SDL_TouchDeviceType
max :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> SDL_TouchDeviceType
$cmin :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> SDL_TouchDeviceType
min :: SDL_TouchDeviceType -> SDL_TouchDeviceType -> SDL_TouchDeviceType
Ord)
  deriving newtype (FFIType SDL_TouchDeviceType -> SDL_TouchDeviceType
SDL_TouchDeviceType -> FFIType SDL_TouchDeviceType
(SDL_TouchDeviceType -> FFIType SDL_TouchDeviceType)
-> (FFIType SDL_TouchDeviceType -> SDL_TouchDeviceType)
-> HasFFIType SDL_TouchDeviceType
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_TouchDeviceType -> FFIType SDL_TouchDeviceType
toFFIType :: SDL_TouchDeviceType -> FFIType SDL_TouchDeviceType
$cfromFFIType :: FFIType SDL_TouchDeviceType -> SDL_TouchDeviceType
fromFFIType :: FFIType SDL_TouchDeviceType -> SDL_TouchDeviceType
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_TouchDeviceType instance BG.Storable SDL_TouchDeviceType

deriving via BG.CInt instance BG.Prim SDL_TouchDeviceType

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

  toCEnum :: CEnumZ SDL_TouchDeviceType -> SDL_TouchDeviceType
toCEnum = CInt -> SDL_TouchDeviceType
CEnumZ SDL_TouchDeviceType -> SDL_TouchDeviceType
SDL_TouchDeviceType

  fromCEnum :: SDL_TouchDeviceType -> CEnumZ SDL_TouchDeviceType
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_TouchDeviceType -> DeclaredValues SDL_TouchDeviceType
declaredValues =
    \proxy SDL_TouchDeviceType
_ ->
      [(CEnumZ SDL_TouchDeviceType, NonEmpty String)]
-> DeclaredValues SDL_TouchDeviceType
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (-CInt
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TOUCH_DEVICE_INVALID")
        , (CInt
CEnumZ SDL_TouchDeviceType
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TOUCH_DEVICE_DIRECT")
        , (CInt
CEnumZ SDL_TouchDeviceType
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE")
        , (CInt
CEnumZ SDL_TouchDeviceType
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TOUCH_DEVICE_INDIRECT_RELATIVE")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_TouchDeviceType where
  minDeclaredValue :: SDL_TouchDeviceType
minDeclaredValue = SDL_TouchDeviceType
SDL_TOUCH_DEVICE_INVALID

  maxDeclaredValue :: SDL_TouchDeviceType
maxDeclaredValue = SDL_TouchDeviceType
SDL_TOUCH_DEVICE_INDIRECT_RELATIVE

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

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

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

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

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

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

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

-- | [C declaration]: @SDL_TOUCH_DEVICE_INVALID@, defined at @SDL3\/SDL_touch.h 85:5@
pattern SDL_TOUCH_DEVICE_INVALID :: SDL_TouchDeviceType
pattern $mSDL_TOUCH_DEVICE_INVALID :: forall {r}.
SDL_TouchDeviceType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TOUCH_DEVICE_INVALID :: SDL_TouchDeviceType
SDL_TOUCH_DEVICE_INVALID = SDL_TouchDeviceType (-1)

-- | touch screen with window-relative coordinates
--
--     [C declaration]: @SDL_TOUCH_DEVICE_DIRECT@, defined at @SDL3\/SDL_touch.h 86:5@
pattern SDL_TOUCH_DEVICE_DIRECT :: SDL_TouchDeviceType
pattern $mSDL_TOUCH_DEVICE_DIRECT :: forall {r}.
SDL_TouchDeviceType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TOUCH_DEVICE_DIRECT :: SDL_TouchDeviceType
SDL_TOUCH_DEVICE_DIRECT = SDL_TouchDeviceType 0

-- | trackpad with absolute device coordinates
--
--     [C declaration]: @SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE@, defined at @SDL3\/SDL_touch.h 87:5@
pattern SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE :: SDL_TouchDeviceType
pattern $mSDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE :: forall {r}.
SDL_TouchDeviceType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE :: SDL_TouchDeviceType
SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE = SDL_TouchDeviceType 1

-- | trackpad with screen cursor-relative coordinates
--
--     [C declaration]: @SDL_TOUCH_DEVICE_INDIRECT_RELATIVE@, defined at @SDL3\/SDL_touch.h 88:5@
pattern SDL_TOUCH_DEVICE_INDIRECT_RELATIVE :: SDL_TouchDeviceType
pattern $mSDL_TOUCH_DEVICE_INDIRECT_RELATIVE :: forall {r}.
SDL_TouchDeviceType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TOUCH_DEVICE_INDIRECT_RELATIVE :: SDL_TouchDeviceType
SDL_TOUCH_DEVICE_INDIRECT_RELATIVE = SDL_TouchDeviceType 2

-- | Data about a single finger in a multitouch event.
--
--     Each touch event is a collection of fingers that are simultaneously in contact with the touch device (so a \"touch\" can be a \"multitouch,\" in reality), and this struct reports details of the specific fingers.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_GetTouchFingers'
--
--     [C declaration]: @struct SDL_Finger@, defined at @SDL3\/SDL_touch.h 102:16@
data SDL_Finger = SDL_Finger
  { SDL_Finger -> SDL_FingerID
id :: SDL_FingerID
  -- ^ the finger ID
  --
  --          [C declaration]: @id@, defined at @SDL3\/SDL_touch.h 104:18@
  , SDL_Finger -> CFloat
x :: BG.CFloat
  -- ^ the x-axis location of the touch event, normalized (0...1)
  --
  --          [C declaration]: @x@, defined at @SDL3\/SDL_touch.h 105:11@
  , SDL_Finger -> CFloat
y :: BG.CFloat
  -- ^ the y-axis location of the touch event, normalized (0...1)
  --
  --          [C declaration]: @y@, defined at @SDL3\/SDL_touch.h 106:11@
  , SDL_Finger -> CFloat
pressure :: BG.CFloat
  -- ^ the quantity of pressure applied, normalized (0...1)
  --
  --          [C declaration]: @pressure@, defined at @SDL3\/SDL_touch.h 107:11@
  }
  deriving stock ((forall x. SDL_Finger -> Rep SDL_Finger x)
-> (forall x. Rep SDL_Finger x -> SDL_Finger) -> Generic SDL_Finger
forall x. Rep SDL_Finger x -> SDL_Finger
forall x. SDL_Finger -> Rep SDL_Finger x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_Finger -> Rep SDL_Finger x
from :: forall x. SDL_Finger -> Rep SDL_Finger x
$cto :: forall x. Rep SDL_Finger x -> SDL_Finger
to :: forall x. Rep SDL_Finger x -> SDL_Finger
BG.Generic, SDL_Finger -> SDL_Finger -> Bool
(SDL_Finger -> SDL_Finger -> Bool)
-> (SDL_Finger -> SDL_Finger -> Bool) -> Eq SDL_Finger
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_Finger -> SDL_Finger -> Bool
== :: SDL_Finger -> SDL_Finger -> Bool
$c/= :: SDL_Finger -> SDL_Finger -> Bool
/= :: SDL_Finger -> SDL_Finger -> Bool
Eq, Int -> SDL_Finger -> ShowS
[SDL_Finger] -> ShowS
SDL_Finger -> String
(Int -> SDL_Finger -> ShowS)
-> (SDL_Finger -> String)
-> ([SDL_Finger] -> ShowS)
-> Show SDL_Finger
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_Finger -> ShowS
showsPrec :: Int -> SDL_Finger -> ShowS
$cshow :: SDL_Finger -> String
show :: SDL_Finger -> String
$cshowList :: [SDL_Finger] -> ShowS
showList :: [SDL_Finger] -> ShowS
Show)

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

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

instance Marshal.ReadRaw SDL_Finger where
  readRaw :: Ptr SDL_Finger -> IO SDL_Finger
readRaw =
    \Ptr SDL_Finger
ptr0 ->
      (SDL_FingerID -> CFloat -> CFloat -> CFloat -> SDL_Finger)
-> IO (SDL_FingerID -> CFloat -> CFloat -> CFloat -> SDL_Finger)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure SDL_FingerID -> CFloat -> CFloat -> CFloat -> SDL_Finger
SDL_Finger
        IO (SDL_FingerID -> CFloat -> CFloat -> CFloat -> SDL_Finger)
-> IO SDL_FingerID -> IO (CFloat -> CFloat -> CFloat -> SDL_Finger)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "id" -> Ptr SDL_Finger -> IO (CFieldType SDL_Finger "id")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"id") Ptr SDL_Finger
ptr0
        IO (CFloat -> CFloat -> CFloat -> SDL_Finger)
-> IO CFloat -> IO (CFloat -> CFloat -> SDL_Finger)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "x" -> Ptr SDL_Finger -> IO (CFieldType SDL_Finger "x")
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 @"x") Ptr SDL_Finger
ptr0
        IO (CFloat -> CFloat -> SDL_Finger)
-> IO CFloat -> IO (CFloat -> SDL_Finger)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "y" -> Ptr SDL_Finger -> IO (CFieldType SDL_Finger "y")
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 @"y") Ptr SDL_Finger
ptr0
        IO (CFloat -> SDL_Finger) -> IO CFloat -> IO SDL_Finger
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "pressure"
-> Ptr SDL_Finger -> IO (CFieldType SDL_Finger "pressure")
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 @"pressure") Ptr SDL_Finger
ptr0

instance Marshal.WriteRaw SDL_Finger where
  writeRaw :: Ptr SDL_Finger -> SDL_Finger -> IO ()
writeRaw =
    \Ptr SDL_Finger
ptr0 ->
      \SDL_Finger
s1 ->
        case SDL_Finger
s1 of
          SDL_Finger SDL_FingerID
id2 CFloat
x3 CFloat
y4 CFloat
pressure5 ->
            Proxy "id" -> Ptr SDL_Finger -> CFieldType SDL_Finger "id" -> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"id") Ptr SDL_Finger
ptr0 CFieldType SDL_Finger "id"
SDL_FingerID
id2
              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 "x" -> Ptr SDL_Finger -> CFieldType SDL_Finger "x" -> 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 @"x") Ptr SDL_Finger
ptr0 CFloat
CFieldType SDL_Finger "x"
x3
              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 "y" -> Ptr SDL_Finger -> CFieldType SDL_Finger "y" -> 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 @"y") Ptr SDL_Finger
ptr0 CFloat
CFieldType SDL_Finger "y"
y4
              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 "pressure"
-> Ptr SDL_Finger -> CFieldType SDL_Finger "pressure" -> 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 @"pressure") Ptr SDL_Finger
ptr0 CFloat
CFieldType SDL_Finger "pressure"
pressure5

deriving via Marshal.EquivStorable SDL_Finger instance BG.Storable SDL_Finger

deriving via Struct.IsStructViaReadRaw SDL_Finger instance Struct.IsStruct SDL_Finger

-- | the finger ID
--
--     [C declaration]: @id@, defined at @SDL3\/SDL_touch.h 104:18@
instance
  (ty ~ SDL_FingerID)
  => BG.CompatHasField.HasField "id" SDL_Finger ty
  where
  hasField :: SDL_Finger -> (ty -> SDL_Finger, ty)
hasField =
    \SDL_Finger
x0 ->
      ( \ty
y1 ->
          SDL_Finger
            { id :: SDL_FingerID
id = ty
SDL_FingerID
y1
            , x :: CFloat
x = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"x" SDL_Finger
x0
            , y :: CFloat
y = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"y" SDL_Finger
x0
            , pressure :: CFloat
pressure = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"pressure" SDL_Finger
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 @"id" SDL_Finger
x0
      )

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

instance HasCField.HasCField SDL_Finger "id" where
  type CFieldType SDL_Finger "id" = SDL_FingerID

  offset# :: Proxy# SDL_Finger -> Proxy# "id" -> Int
offset# = \Proxy# SDL_Finger
_ -> \Proxy# "id"
_ -> Int
0

-- | the x-axis location of the touch event, normalized (0...1)
--
--     [C declaration]: @x@, defined at @SDL3\/SDL_touch.h 105:11@
instance (ty ~ BG.CFloat) => BG.CompatHasField.HasField "x" SDL_Finger ty where
  hasField :: SDL_Finger -> (ty -> SDL_Finger, ty)
hasField =
    \SDL_Finger
x0 ->
      ( \ty
y1 ->
          SDL_Finger
            { x :: CFloat
x = ty
CFloat
y1
            , id :: SDL_FingerID
id = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"id" SDL_Finger
x0
            , y :: CFloat
y = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"y" SDL_Finger
x0
            , pressure :: CFloat
pressure = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"pressure" SDL_Finger
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 @"x" SDL_Finger
x0
      )

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

instance HasCField.HasCField SDL_Finger "x" where
  type CFieldType SDL_Finger "x" = BG.CFloat

  offset# :: Proxy# SDL_Finger -> Proxy# "x" -> Int
offset# = \Proxy# SDL_Finger
_ -> \Proxy# "x"
_ -> Int
8

-- | the y-axis location of the touch event, normalized (0...1)
--
--     [C declaration]: @y@, defined at @SDL3\/SDL_touch.h 106:11@
instance (ty ~ BG.CFloat) => BG.CompatHasField.HasField "y" SDL_Finger ty where
  hasField :: SDL_Finger -> (ty -> SDL_Finger, ty)
hasField =
    \SDL_Finger
x0 ->
      ( \ty
y1 ->
          SDL_Finger
            { y :: CFloat
y = ty
CFloat
y1
            , id :: SDL_FingerID
id = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"id" SDL_Finger
x0
            , x :: CFloat
x = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"x" SDL_Finger
x0
            , pressure :: CFloat
pressure = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"pressure" SDL_Finger
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 @"y" SDL_Finger
x0
      )

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

instance HasCField.HasCField SDL_Finger "y" where
  type CFieldType SDL_Finger "y" = BG.CFloat

  offset# :: Proxy# SDL_Finger -> Proxy# "y" -> Int
offset# = \Proxy# SDL_Finger
_ -> \Proxy# "y"
_ -> Int
12

-- | the quantity of pressure applied, normalized (0...1)
--
--     [C declaration]: @pressure@, defined at @SDL3\/SDL_touch.h 107:11@
instance
  (ty ~ BG.CFloat)
  => BG.CompatHasField.HasField "pressure" SDL_Finger ty
  where
  hasField :: SDL_Finger -> (ty -> SDL_Finger, ty)
hasField =
    \SDL_Finger
x0 ->
      ( \ty
y1 ->
          SDL_Finger
            { pressure :: CFloat
pressure = ty
CFloat
y1
            , id :: SDL_FingerID
id = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"id" SDL_Finger
x0
            , x :: CFloat
x = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"x" SDL_Finger
x0
            , y :: CFloat
y = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"y" SDL_Finger
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 @"pressure" SDL_Finger
x0
      )

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

instance HasCField.HasCField SDL_Finger "pressure" where
  type CFieldType SDL_Finger "pressure" = BG.CFloat

  offset# :: Proxy# SDL_Finger -> Proxy# "pressure" -> Int
offset# = \Proxy# SDL_Finger
_ -> \Proxy# "pressure"
_ -> Int
16