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

-- | SDL keyboard management.
--
--     Please refer to the Best Keyboard Practices document for details on how best to accept keyboard input in various types of programs:
--
--     [https:\/\/wiki.libsdl.org\/SDL3\/BestKeyboardPractices](https://wiki.libsdl.org/SDL3/BestKeyboardPractices) This is a unique ID for a keyboard for the time it is connected to the system, and is never reused for the lifetime of the application.
--
--     If the keyboard 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.Keyboard (
  SDL3.Sys.Bindgen.Keyboard.SDL_KeyboardID (..),
  SDL3.Sys.Bindgen.Keyboard.SDL_TextInputType (..),
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_TEXTINPUT_TYPE_TEXT,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_TEXTINPUT_TYPE_TEXT_NAME,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_TEXTINPUT_TYPE_TEXT_EMAIL,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_TEXTINPUT_TYPE_TEXT_USERNAME,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_HIDDEN,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_VISIBLE,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_TEXTINPUT_TYPE_NUMBER,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_HIDDEN,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_VISIBLE,
  SDL3.Sys.Bindgen.Keyboard.SDL_Capitalization (..),
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_CAPITALIZE_NONE,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_CAPITALIZE_SENTENCES,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_CAPITALIZE_WORDS,
  pattern SDL3.Sys.Bindgen.Keyboard.SDL_CAPITALIZE_LETTERS,
  SDL3.Sys.Bindgen.Keyboard.sDL_PROP_TEXTINPUT_TYPE_NUMBER,
  SDL3.Sys.Bindgen.Keyboard.sDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER,
  SDL3.Sys.Bindgen.Keyboard.sDL_PROP_TEXTINPUT_AUTOCORRECT_BOOLEAN,
  SDL3.Sys.Bindgen.Keyboard.sDL_PROP_TEXTINPUT_MULTILINE_BOOLEAN,
  SDL3.Sys.Bindgen.Keyboard.sDL_PROP_TEXTINPUT_ANDROID_INPUTTYPE_NUMBER,
)
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.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField
import SDL3.Sys.Bindgen.Stdinc qualified

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

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

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

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

-- | Text input type.
--
--     These are the valid values for SDL_PROP_TEXTINPUT_TYPE_NUMBER. Not every value is valid on every platform, but where a value isn\'t supported, a reasonable fallback will be used.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_StartTextInputWithProperties'
--
--     [C declaration]: @enum SDL_TextInputType@, defined at @SDL3\/SDL_keyboard.h 391:14@
newtype SDL_TextInputType = SDL_TextInputType
  { SDL_TextInputType -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_TextInputType -> Rep SDL_TextInputType x)
-> (forall x. Rep SDL_TextInputType x -> SDL_TextInputType)
-> Generic SDL_TextInputType
forall x. Rep SDL_TextInputType x -> SDL_TextInputType
forall x. SDL_TextInputType -> Rep SDL_TextInputType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_TextInputType -> Rep SDL_TextInputType x
from :: forall x. SDL_TextInputType -> Rep SDL_TextInputType x
$cto :: forall x. Rep SDL_TextInputType x -> SDL_TextInputType
to :: forall x. Rep SDL_TextInputType x -> SDL_TextInputType
BG.Generic, SDL_TextInputType -> SDL_TextInputType -> Bool
(SDL_TextInputType -> SDL_TextInputType -> Bool)
-> (SDL_TextInputType -> SDL_TextInputType -> Bool)
-> Eq SDL_TextInputType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_TextInputType -> SDL_TextInputType -> Bool
== :: SDL_TextInputType -> SDL_TextInputType -> Bool
$c/= :: SDL_TextInputType -> SDL_TextInputType -> Bool
/= :: SDL_TextInputType -> SDL_TextInputType -> Bool
Eq, Eq SDL_TextInputType
Eq SDL_TextInputType =>
(SDL_TextInputType -> SDL_TextInputType -> Ordering)
-> (SDL_TextInputType -> SDL_TextInputType -> Bool)
-> (SDL_TextInputType -> SDL_TextInputType -> Bool)
-> (SDL_TextInputType -> SDL_TextInputType -> Bool)
-> (SDL_TextInputType -> SDL_TextInputType -> Bool)
-> (SDL_TextInputType -> SDL_TextInputType -> SDL_TextInputType)
-> (SDL_TextInputType -> SDL_TextInputType -> SDL_TextInputType)
-> Ord SDL_TextInputType
SDL_TextInputType -> SDL_TextInputType -> Bool
SDL_TextInputType -> SDL_TextInputType -> Ordering
SDL_TextInputType -> SDL_TextInputType -> SDL_TextInputType
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_TextInputType -> SDL_TextInputType -> Ordering
compare :: SDL_TextInputType -> SDL_TextInputType -> Ordering
$c< :: SDL_TextInputType -> SDL_TextInputType -> Bool
< :: SDL_TextInputType -> SDL_TextInputType -> Bool
$c<= :: SDL_TextInputType -> SDL_TextInputType -> Bool
<= :: SDL_TextInputType -> SDL_TextInputType -> Bool
$c> :: SDL_TextInputType -> SDL_TextInputType -> Bool
> :: SDL_TextInputType -> SDL_TextInputType -> Bool
$c>= :: SDL_TextInputType -> SDL_TextInputType -> Bool
>= :: SDL_TextInputType -> SDL_TextInputType -> Bool
$cmax :: SDL_TextInputType -> SDL_TextInputType -> SDL_TextInputType
max :: SDL_TextInputType -> SDL_TextInputType -> SDL_TextInputType
$cmin :: SDL_TextInputType -> SDL_TextInputType -> SDL_TextInputType
min :: SDL_TextInputType -> SDL_TextInputType -> SDL_TextInputType
Ord)
  deriving newtype (FFIType SDL_TextInputType -> SDL_TextInputType
SDL_TextInputType -> FFIType SDL_TextInputType
(SDL_TextInputType -> FFIType SDL_TextInputType)
-> (FFIType SDL_TextInputType -> SDL_TextInputType)
-> HasFFIType SDL_TextInputType
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_TextInputType -> FFIType SDL_TextInputType
toFFIType :: SDL_TextInputType -> FFIType SDL_TextInputType
$cfromFFIType :: FFIType SDL_TextInputType -> SDL_TextInputType
fromFFIType :: FFIType SDL_TextInputType -> SDL_TextInputType
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_TextInputType instance BG.Storable SDL_TextInputType

deriving via BG.CUInt instance BG.Prim SDL_TextInputType

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

  toCEnum :: CEnumZ SDL_TextInputType -> SDL_TextInputType
toCEnum = CUInt -> SDL_TextInputType
CEnumZ SDL_TextInputType -> SDL_TextInputType
SDL_TextInputType

  fromCEnum :: SDL_TextInputType -> CEnumZ SDL_TextInputType
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_TextInputType -> DeclaredValues SDL_TextInputType
declaredValues =
    \proxy SDL_TextInputType
_ ->
      [(CEnumZ SDL_TextInputType, NonEmpty String)]
-> DeclaredValues SDL_TextInputType
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_TextInputType
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TEXTINPUT_TYPE_TEXT")
        , (CUInt
CEnumZ SDL_TextInputType
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TEXTINPUT_TYPE_TEXT_NAME")
        , (CUInt
CEnumZ SDL_TextInputType
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TEXTINPUT_TYPE_TEXT_EMAIL")
        , (CUInt
CEnumZ SDL_TextInputType
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TEXTINPUT_TYPE_TEXT_USERNAME")
        , (CUInt
CEnumZ SDL_TextInputType
4, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_HIDDEN")
        , (CUInt
CEnumZ SDL_TextInputType
5, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_VISIBLE")
        , (CUInt
CEnumZ SDL_TextInputType
6, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TEXTINPUT_TYPE_NUMBER")
        , (CUInt
CEnumZ SDL_TextInputType
7, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_HIDDEN")
        , (CUInt
CEnumZ SDL_TextInputType
8, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_VISIBLE")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_TextInputType where
  minDeclaredValue :: SDL_TextInputType
minDeclaredValue = SDL_TextInputType
SDL_TEXTINPUT_TYPE_TEXT

  maxDeclaredValue :: SDL_TextInputType
maxDeclaredValue =
    SDL_TextInputType
SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_VISIBLE

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

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

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

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

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

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

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

-- | The input is text
--
--     [C declaration]: @SDL_TEXTINPUT_TYPE_TEXT@, defined at @SDL3\/SDL_keyboard.h 393:5@
pattern SDL_TEXTINPUT_TYPE_TEXT :: SDL_TextInputType
pattern $mSDL_TEXTINPUT_TYPE_TEXT :: forall {r}. SDL_TextInputType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TEXTINPUT_TYPE_TEXT :: SDL_TextInputType
SDL_TEXTINPUT_TYPE_TEXT = SDL_TextInputType 0

-- | The input is a person\'s name
--
--     [C declaration]: @SDL_TEXTINPUT_TYPE_TEXT_NAME@, defined at @SDL3\/SDL_keyboard.h 394:5@
pattern SDL_TEXTINPUT_TYPE_TEXT_NAME :: SDL_TextInputType
pattern $mSDL_TEXTINPUT_TYPE_TEXT_NAME :: forall {r}. SDL_TextInputType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TEXTINPUT_TYPE_TEXT_NAME :: SDL_TextInputType
SDL_TEXTINPUT_TYPE_TEXT_NAME = SDL_TextInputType 1

-- | The input is an e-mail address
--
--     [C declaration]: @SDL_TEXTINPUT_TYPE_TEXT_EMAIL@, defined at @SDL3\/SDL_keyboard.h 395:5@
pattern SDL_TEXTINPUT_TYPE_TEXT_EMAIL :: SDL_TextInputType
pattern $mSDL_TEXTINPUT_TYPE_TEXT_EMAIL :: forall {r}. SDL_TextInputType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TEXTINPUT_TYPE_TEXT_EMAIL :: SDL_TextInputType
SDL_TEXTINPUT_TYPE_TEXT_EMAIL = SDL_TextInputType 2

-- | The input is a username
--
--     [C declaration]: @SDL_TEXTINPUT_TYPE_TEXT_USERNAME@, defined at @SDL3\/SDL_keyboard.h 396:5@
pattern SDL_TEXTINPUT_TYPE_TEXT_USERNAME :: SDL_TextInputType
pattern $mSDL_TEXTINPUT_TYPE_TEXT_USERNAME :: forall {r}. SDL_TextInputType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TEXTINPUT_TYPE_TEXT_USERNAME :: SDL_TextInputType
SDL_TEXTINPUT_TYPE_TEXT_USERNAME = SDL_TextInputType 3

-- | The input is a secure password that is hidden
--
--     [C declaration]: @SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_HIDDEN@, defined at @SDL3\/SDL_keyboard.h 397:5@
pattern SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_HIDDEN :: SDL_TextInputType
pattern $mSDL_TEXTINPUT_TYPE_TEXT_PASSWORD_HIDDEN :: forall {r}. SDL_TextInputType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TEXTINPUT_TYPE_TEXT_PASSWORD_HIDDEN :: SDL_TextInputType
SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_HIDDEN = SDL_TextInputType 4

-- | The input is a secure password that is visible
--
--     [C declaration]: @SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_VISIBLE@, defined at @SDL3\/SDL_keyboard.h 398:5@
pattern SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_VISIBLE :: SDL_TextInputType
pattern $mSDL_TEXTINPUT_TYPE_TEXT_PASSWORD_VISIBLE :: forall {r}. SDL_TextInputType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TEXTINPUT_TYPE_TEXT_PASSWORD_VISIBLE :: SDL_TextInputType
SDL_TEXTINPUT_TYPE_TEXT_PASSWORD_VISIBLE = SDL_TextInputType 5

-- | The input is a number
--
--     [C declaration]: @SDL_TEXTINPUT_TYPE_NUMBER@, defined at @SDL3\/SDL_keyboard.h 399:5@
pattern SDL_TEXTINPUT_TYPE_NUMBER :: SDL_TextInputType
pattern $mSDL_TEXTINPUT_TYPE_NUMBER :: forall {r}. SDL_TextInputType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TEXTINPUT_TYPE_NUMBER :: SDL_TextInputType
SDL_TEXTINPUT_TYPE_NUMBER = SDL_TextInputType 6

-- | The input is a secure PIN that is hidden
--
--     [C declaration]: @SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_HIDDEN@, defined at @SDL3\/SDL_keyboard.h 400:5@
pattern SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_HIDDEN :: SDL_TextInputType
pattern $mSDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_HIDDEN :: forall {r}. SDL_TextInputType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_HIDDEN :: SDL_TextInputType
SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_HIDDEN = SDL_TextInputType 7

-- | The input is a secure PIN that is visible
--
--     [C declaration]: @SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_VISIBLE@, defined at @SDL3\/SDL_keyboard.h 401:5@
pattern SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_VISIBLE :: SDL_TextInputType
pattern $mSDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_VISIBLE :: forall {r}. SDL_TextInputType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_VISIBLE :: SDL_TextInputType
SDL_TEXTINPUT_TYPE_NUMBER_PASSWORD_VISIBLE = SDL_TextInputType 8

-- | Auto capitalization type.
--
--     These are the valid values for SDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER. Not every value is valid on every platform, but where a value isn\'t supported, a reasonable fallback will be used.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_StartTextInputWithProperties'
--
--     [C declaration]: @enum SDL_Capitalization@, defined at @SDL3\/SDL_keyboard.h 415:14@
newtype SDL_Capitalization = SDL_Capitalization
  { SDL_Capitalization -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_Capitalization -> Rep SDL_Capitalization x)
-> (forall x. Rep SDL_Capitalization x -> SDL_Capitalization)
-> Generic SDL_Capitalization
forall x. Rep SDL_Capitalization x -> SDL_Capitalization
forall x. SDL_Capitalization -> Rep SDL_Capitalization x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_Capitalization -> Rep SDL_Capitalization x
from :: forall x. SDL_Capitalization -> Rep SDL_Capitalization x
$cto :: forall x. Rep SDL_Capitalization x -> SDL_Capitalization
to :: forall x. Rep SDL_Capitalization x -> SDL_Capitalization
BG.Generic, SDL_Capitalization -> SDL_Capitalization -> Bool
(SDL_Capitalization -> SDL_Capitalization -> Bool)
-> (SDL_Capitalization -> SDL_Capitalization -> Bool)
-> Eq SDL_Capitalization
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_Capitalization -> SDL_Capitalization -> Bool
== :: SDL_Capitalization -> SDL_Capitalization -> Bool
$c/= :: SDL_Capitalization -> SDL_Capitalization -> Bool
/= :: SDL_Capitalization -> SDL_Capitalization -> Bool
Eq, Eq SDL_Capitalization
Eq SDL_Capitalization =>
(SDL_Capitalization -> SDL_Capitalization -> Ordering)
-> (SDL_Capitalization -> SDL_Capitalization -> Bool)
-> (SDL_Capitalization -> SDL_Capitalization -> Bool)
-> (SDL_Capitalization -> SDL_Capitalization -> Bool)
-> (SDL_Capitalization -> SDL_Capitalization -> Bool)
-> (SDL_Capitalization -> SDL_Capitalization -> SDL_Capitalization)
-> (SDL_Capitalization -> SDL_Capitalization -> SDL_Capitalization)
-> Ord SDL_Capitalization
SDL_Capitalization -> SDL_Capitalization -> Bool
SDL_Capitalization -> SDL_Capitalization -> Ordering
SDL_Capitalization -> SDL_Capitalization -> SDL_Capitalization
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_Capitalization -> SDL_Capitalization -> Ordering
compare :: SDL_Capitalization -> SDL_Capitalization -> Ordering
$c< :: SDL_Capitalization -> SDL_Capitalization -> Bool
< :: SDL_Capitalization -> SDL_Capitalization -> Bool
$c<= :: SDL_Capitalization -> SDL_Capitalization -> Bool
<= :: SDL_Capitalization -> SDL_Capitalization -> Bool
$c> :: SDL_Capitalization -> SDL_Capitalization -> Bool
> :: SDL_Capitalization -> SDL_Capitalization -> Bool
$c>= :: SDL_Capitalization -> SDL_Capitalization -> Bool
>= :: SDL_Capitalization -> SDL_Capitalization -> Bool
$cmax :: SDL_Capitalization -> SDL_Capitalization -> SDL_Capitalization
max :: SDL_Capitalization -> SDL_Capitalization -> SDL_Capitalization
$cmin :: SDL_Capitalization -> SDL_Capitalization -> SDL_Capitalization
min :: SDL_Capitalization -> SDL_Capitalization -> SDL_Capitalization
Ord)
  deriving newtype (FFIType SDL_Capitalization -> SDL_Capitalization
SDL_Capitalization -> FFIType SDL_Capitalization
(SDL_Capitalization -> FFIType SDL_Capitalization)
-> (FFIType SDL_Capitalization -> SDL_Capitalization)
-> HasFFIType SDL_Capitalization
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_Capitalization -> FFIType SDL_Capitalization
toFFIType :: SDL_Capitalization -> FFIType SDL_Capitalization
$cfromFFIType :: FFIType SDL_Capitalization -> SDL_Capitalization
fromFFIType :: FFIType SDL_Capitalization -> SDL_Capitalization
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_Capitalization instance BG.Storable SDL_Capitalization

deriving via BG.CUInt instance BG.Prim SDL_Capitalization

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

  toCEnum :: CEnumZ SDL_Capitalization -> SDL_Capitalization
toCEnum = CUInt -> SDL_Capitalization
CEnumZ SDL_Capitalization -> SDL_Capitalization
SDL_Capitalization

  fromCEnum :: SDL_Capitalization -> CEnumZ SDL_Capitalization
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_Capitalization -> DeclaredValues SDL_Capitalization
declaredValues =
    \proxy SDL_Capitalization
_ ->
      [(CEnumZ SDL_Capitalization, NonEmpty String)]
-> DeclaredValues SDL_Capitalization
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_Capitalization
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_CAPITALIZE_NONE")
        , (CUInt
CEnumZ SDL_Capitalization
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_CAPITALIZE_SENTENCES")
        , (CUInt
CEnumZ SDL_Capitalization
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_CAPITALIZE_WORDS")
        , (CUInt
CEnumZ SDL_Capitalization
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_CAPITALIZE_LETTERS")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_Capitalization where
  minDeclaredValue :: SDL_Capitalization
minDeclaredValue = SDL_Capitalization
SDL_CAPITALIZE_NONE

  maxDeclaredValue :: SDL_Capitalization
maxDeclaredValue = SDL_Capitalization
SDL_CAPITALIZE_LETTERS

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

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

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

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

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

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

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

-- | No auto-capitalization will be done
--
--     [C declaration]: @SDL_CAPITALIZE_NONE@, defined at @SDL3\/SDL_keyboard.h 417:5@
pattern SDL_CAPITALIZE_NONE :: SDL_Capitalization
pattern $mSDL_CAPITALIZE_NONE :: forall {r}. SDL_Capitalization -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_CAPITALIZE_NONE :: SDL_Capitalization
SDL_CAPITALIZE_NONE = SDL_Capitalization 0

-- | The first letter of sentences will be capitalized
--
--     [C declaration]: @SDL_CAPITALIZE_SENTENCES@, defined at @SDL3\/SDL_keyboard.h 418:5@
pattern SDL_CAPITALIZE_SENTENCES :: SDL_Capitalization
pattern $mSDL_CAPITALIZE_SENTENCES :: forall {r}. SDL_Capitalization -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_CAPITALIZE_SENTENCES :: SDL_Capitalization
SDL_CAPITALIZE_SENTENCES = SDL_Capitalization 1

-- | The first letter of words will be capitalized
--
--     [C declaration]: @SDL_CAPITALIZE_WORDS@, defined at @SDL3\/SDL_keyboard.h 419:5@
pattern SDL_CAPITALIZE_WORDS :: SDL_Capitalization
pattern $mSDL_CAPITALIZE_WORDS :: forall {r}. SDL_Capitalization -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_CAPITALIZE_WORDS :: SDL_Capitalization
SDL_CAPITALIZE_WORDS = SDL_Capitalization 2

-- | All letters will be capitalized
--
--     [C declaration]: @SDL_CAPITALIZE_LETTERS@, defined at @SDL3\/SDL_keyboard.h 420:5@
pattern SDL_CAPITALIZE_LETTERS :: SDL_Capitalization
pattern $mSDL_CAPITALIZE_LETTERS :: forall {r}. SDL_Capitalization -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_CAPITALIZE_LETTERS :: SDL_Capitalization
SDL_CAPITALIZE_LETTERS = SDL_Capitalization 3

-- | [C declaration]: @macro SDL_PROP_TEXTINPUT_TYPE_NUMBER@, literal @\"SDL.textinput.type\"@, defined at @SDL3\/SDL_keyboard.h 475:9@
sDL_PROP_TEXTINPUT_TYPE_NUMBER :: BG.ByteString
sDL_PROP_TEXTINPUT_TYPE_NUMBER :: ByteString
sDL_PROP_TEXTINPUT_TYPE_NUMBER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x74
    , Word8
0x65
    , Word8
0x78
    , Word8
0x74
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x70
    , Word8
0x75
    , Word8
0x74
    , Word8
0x2E
    , Word8
0x74
    , Word8
0x79
    , Word8
0x70
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER@, literal @\"SDL.textinput.capitalization\"@, defined at @SDL3\/SDL_keyboard.h 476:9@
sDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER :: BG.ByteString
sDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER :: ByteString
sDL_PROP_TEXTINPUT_CAPITALIZATION_NUMBER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x74
    , Word8
0x65
    , Word8
0x78
    , Word8
0x74
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x70
    , Word8
0x75
    , Word8
0x74
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x61
    , Word8
0x70
    , Word8
0x69
    , Word8
0x74
    , Word8
0x61
    , Word8
0x6C
    , Word8
0x69
    , Word8
0x7A
    , Word8
0x61
    , Word8
0x74
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x6E
    ]

-- | [C declaration]: @macro SDL_PROP_TEXTINPUT_AUTOCORRECT_BOOLEAN@, literal @\"SDL.textinput.autocorrect\"@, defined at @SDL3\/SDL_keyboard.h 477:9@
sDL_PROP_TEXTINPUT_AUTOCORRECT_BOOLEAN :: BG.ByteString
sDL_PROP_TEXTINPUT_AUTOCORRECT_BOOLEAN :: ByteString
sDL_PROP_TEXTINPUT_AUTOCORRECT_BOOLEAN =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x74
    , Word8
0x65
    , Word8
0x78
    , Word8
0x74
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x70
    , Word8
0x75
    , Word8
0x74
    , Word8
0x2E
    , Word8
0x61
    , Word8
0x75
    , Word8
0x74
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x6F
    , Word8
0x72
    , Word8
0x72
    , Word8
0x65
    , Word8
0x63
    , Word8
0x74
    ]

-- | [C declaration]: @macro SDL_PROP_TEXTINPUT_MULTILINE_BOOLEAN@, literal @\"SDL.textinput.multiline\"@, defined at @SDL3\/SDL_keyboard.h 478:9@
sDL_PROP_TEXTINPUT_MULTILINE_BOOLEAN :: BG.ByteString
sDL_PROP_TEXTINPUT_MULTILINE_BOOLEAN :: ByteString
sDL_PROP_TEXTINPUT_MULTILINE_BOOLEAN =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x74
    , Word8
0x65
    , Word8
0x78
    , Word8
0x74
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x70
    , Word8
0x75
    , Word8
0x74
    , Word8
0x2E
    , Word8
0x6D
    , Word8
0x75
    , Word8
0x6C
    , Word8
0x74
    , Word8
0x69
    , Word8
0x6C
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_TEXTINPUT_ANDROID_INPUTTYPE_NUMBER@, literal @\"SDL.textinput.android.inputtype\"@, defined at @SDL3\/SDL_keyboard.h 479:9@
sDL_PROP_TEXTINPUT_ANDROID_INPUTTYPE_NUMBER :: BG.ByteString
sDL_PROP_TEXTINPUT_ANDROID_INPUTTYPE_NUMBER :: ByteString
sDL_PROP_TEXTINPUT_ANDROID_INPUTTYPE_NUMBER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x74
    , Word8
0x65
    , Word8
0x78
    , Word8
0x74
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x70
    , Word8
0x75
    , Word8
0x74
    , Word8
0x2E
    , Word8
0x61
    , Word8
0x6E
    , Word8
0x64
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x69
    , Word8
0x64
    , Word8
0x2E
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x70
    , Word8
0x75
    , Word8
0x74
    , Word8
0x74
    , Word8
0x79
    , Word8
0x70
    , Word8
0x65
    ]