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

-- | SDL provides an abstract interface for reading and writing data streams. It offers implementations for files, memory, etc, and the app can provide their own implementations, too.
--
--     'SDL_IOStream' is not related to the standard C++ iostream class, other than both are abstract interfaces to read\/write data. 'SDL_IOStream' status, set by a read or write operation.
--
--     @since 3.2.0
module SDL3.Sys.Bindgen.Iostream (
  SDL3.Sys.Bindgen.Iostream.SDL_IOStatus (..),
  pattern SDL3.Sys.Bindgen.Iostream.SDL_IO_STATUS_READY,
  pattern SDL3.Sys.Bindgen.Iostream.SDL_IO_STATUS_ERROR,
  pattern SDL3.Sys.Bindgen.Iostream.SDL_IO_STATUS_EOF,
  pattern SDL3.Sys.Bindgen.Iostream.SDL_IO_STATUS_NOT_READY,
  pattern SDL3.Sys.Bindgen.Iostream.SDL_IO_STATUS_READONLY,
  pattern SDL3.Sys.Bindgen.Iostream.SDL_IO_STATUS_WRITEONLY,
  SDL3.Sys.Bindgen.Iostream.SDL_IOWhence (..),
  pattern SDL3.Sys.Bindgen.Iostream.SDL_IO_SEEK_SET,
  pattern SDL3.Sys.Bindgen.Iostream.SDL_IO_SEEK_CUR,
  pattern SDL3.Sys.Bindgen.Iostream.SDL_IO_SEEK_END,
  SDL3.Sys.Bindgen.Iostream.SDL_IOStreamInterface (..),
  SDL3.Sys.Bindgen.Iostream.SDL_IOStream,
  SDL3.Sys.Bindgen.Iostream.sDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER,
  SDL3.Sys.Bindgen.Iostream.sDL_PROP_IOSTREAM_STDIO_FILE_POINTER,
  SDL3.Sys.Bindgen.Iostream.sDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER,
  SDL3.Sys.Bindgen.Iostream.sDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER,
  SDL3.Sys.Bindgen.Iostream.sDL_PROP_IOSTREAM_MEMORY_POINTER,
  SDL3.Sys.Bindgen.Iostream.sDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER,
  SDL3.Sys.Bindgen.Iostream.sDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER,
  SDL3.Sys.Bindgen.Iostream.sDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER,
  SDL3.Sys.Bindgen.Iostream.sDL_PROP_IOSTREAM_DYNAMIC_CHUNKSIZE_NUMBER,
)
where

import Prelude (Eq, IO, Int, Ord, Read, Show, pure, (<*>), (>>), type (~))

import HsBindgen.Runtime.CEnum qualified as CEnum
import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.LibC qualified
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.PtrConst qualified as PtrConst
import HsBindgen.Runtime.Struct qualified as Struct
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField
import SDL3.Sys.Bindgen.Stdinc qualified

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

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

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

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

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

deriving via Marshal.EquivStorable SDL_IOStatus instance BG.Storable SDL_IOStatus

deriving via BG.CUInt instance BG.Prim SDL_IOStatus

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

  toCEnum :: CEnumZ SDL_IOStatus -> SDL_IOStatus
toCEnum = CUInt -> SDL_IOStatus
CEnumZ SDL_IOStatus -> SDL_IOStatus
SDL_IOStatus

  fromCEnum :: SDL_IOStatus -> CEnumZ SDL_IOStatus
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_IOStatus -> DeclaredValues SDL_IOStatus
declaredValues =
    \proxy SDL_IOStatus
_ ->
      [(CEnumZ SDL_IOStatus, NonEmpty String)]
-> DeclaredValues SDL_IOStatus
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_IOStatus
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_IO_STATUS_READY")
        , (CUInt
CEnumZ SDL_IOStatus
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_IO_STATUS_ERROR")
        , (CUInt
CEnumZ SDL_IOStatus
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_IO_STATUS_EOF")
        , (CUInt
CEnumZ SDL_IOStatus
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_IO_STATUS_NOT_READY")
        , (CUInt
CEnumZ SDL_IOStatus
4, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_IO_STATUS_READONLY")
        , (CUInt
CEnumZ SDL_IOStatus
5, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_IO_STATUS_WRITEONLY")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_IOStatus where
  minDeclaredValue :: SDL_IOStatus
minDeclaredValue = SDL_IOStatus
SDL_IO_STATUS_READY

  maxDeclaredValue :: SDL_IOStatus
maxDeclaredValue = SDL_IOStatus
SDL_IO_STATUS_WRITEONLY

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

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

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

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

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

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

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

-- | Everything is ready (no errors and not EOF).
--
--     [C declaration]: @SDL_IO_STATUS_READY@, defined at @SDL3\/SDL_iostream.h 55:5@
pattern SDL_IO_STATUS_READY :: SDL_IOStatus
pattern $mSDL_IO_STATUS_READY :: forall {r}. SDL_IOStatus -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_IO_STATUS_READY :: SDL_IOStatus
SDL_IO_STATUS_READY = SDL_IOStatus 0

-- | Read or write I\/O error
--
--     [C declaration]: @SDL_IO_STATUS_ERROR@, defined at @SDL3\/SDL_iostream.h 56:5@
pattern SDL_IO_STATUS_ERROR :: SDL_IOStatus
pattern $mSDL_IO_STATUS_ERROR :: forall {r}. SDL_IOStatus -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_IO_STATUS_ERROR :: SDL_IOStatus
SDL_IO_STATUS_ERROR = SDL_IOStatus 1

-- | End of file
--
--     [C declaration]: @SDL_IO_STATUS_EOF@, defined at @SDL3\/SDL_iostream.h 57:5@
pattern SDL_IO_STATUS_EOF :: SDL_IOStatus
pattern $mSDL_IO_STATUS_EOF :: forall {r}. SDL_IOStatus -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_IO_STATUS_EOF :: SDL_IOStatus
SDL_IO_STATUS_EOF = SDL_IOStatus 2

-- | Non blocking I\/O, not ready
--
--     [C declaration]: @SDL_IO_STATUS_NOT_READY@, defined at @SDL3\/SDL_iostream.h 58:5@
pattern SDL_IO_STATUS_NOT_READY :: SDL_IOStatus
pattern $mSDL_IO_STATUS_NOT_READY :: forall {r}. SDL_IOStatus -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_IO_STATUS_NOT_READY :: SDL_IOStatus
SDL_IO_STATUS_NOT_READY = SDL_IOStatus 3

-- | Tried to write a read-only buffer
--
--     [C declaration]: @SDL_IO_STATUS_READONLY@, defined at @SDL3\/SDL_iostream.h 59:5@
pattern SDL_IO_STATUS_READONLY :: SDL_IOStatus
pattern $mSDL_IO_STATUS_READONLY :: forall {r}. SDL_IOStatus -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_IO_STATUS_READONLY :: SDL_IOStatus
SDL_IO_STATUS_READONLY = SDL_IOStatus 4

-- | Tried to read a write-only buffer
--
--     [C declaration]: @SDL_IO_STATUS_WRITEONLY@, defined at @SDL3\/SDL_iostream.h 60:5@
pattern SDL_IO_STATUS_WRITEONLY :: SDL_IOStatus
pattern $mSDL_IO_STATUS_WRITEONLY :: forall {r}. SDL_IOStatus -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_IO_STATUS_WRITEONLY :: SDL_IOStatus
SDL_IO_STATUS_WRITEONLY = SDL_IOStatus 5

-- | Possible @whence@ values for 'SDL_IOStream' seeking.
--
--     These map to the same \"whence\" concept that @fseek@ or @lseek@ use in the standard C runtime.
--
--     @since 3.2.0
--
--     [C declaration]: @enum SDL_IOWhence@, defined at @SDL3\/SDL_iostream.h 71:14@
newtype SDL_IOWhence = SDL_IOWhence
  { SDL_IOWhence -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_IOWhence -> Rep SDL_IOWhence x)
-> (forall x. Rep SDL_IOWhence x -> SDL_IOWhence)
-> Generic SDL_IOWhence
forall x. Rep SDL_IOWhence x -> SDL_IOWhence
forall x. SDL_IOWhence -> Rep SDL_IOWhence x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_IOWhence -> Rep SDL_IOWhence x
from :: forall x. SDL_IOWhence -> Rep SDL_IOWhence x
$cto :: forall x. Rep SDL_IOWhence x -> SDL_IOWhence
to :: forall x. Rep SDL_IOWhence x -> SDL_IOWhence
BG.Generic, SDL_IOWhence -> SDL_IOWhence -> Bool
(SDL_IOWhence -> SDL_IOWhence -> Bool)
-> (SDL_IOWhence -> SDL_IOWhence -> Bool) -> Eq SDL_IOWhence
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_IOWhence -> SDL_IOWhence -> Bool
== :: SDL_IOWhence -> SDL_IOWhence -> Bool
$c/= :: SDL_IOWhence -> SDL_IOWhence -> Bool
/= :: SDL_IOWhence -> SDL_IOWhence -> Bool
Eq, Eq SDL_IOWhence
Eq SDL_IOWhence =>
(SDL_IOWhence -> SDL_IOWhence -> Ordering)
-> (SDL_IOWhence -> SDL_IOWhence -> Bool)
-> (SDL_IOWhence -> SDL_IOWhence -> Bool)
-> (SDL_IOWhence -> SDL_IOWhence -> Bool)
-> (SDL_IOWhence -> SDL_IOWhence -> Bool)
-> (SDL_IOWhence -> SDL_IOWhence -> SDL_IOWhence)
-> (SDL_IOWhence -> SDL_IOWhence -> SDL_IOWhence)
-> Ord SDL_IOWhence
SDL_IOWhence -> SDL_IOWhence -> Bool
SDL_IOWhence -> SDL_IOWhence -> Ordering
SDL_IOWhence -> SDL_IOWhence -> SDL_IOWhence
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_IOWhence -> SDL_IOWhence -> Ordering
compare :: SDL_IOWhence -> SDL_IOWhence -> Ordering
$c< :: SDL_IOWhence -> SDL_IOWhence -> Bool
< :: SDL_IOWhence -> SDL_IOWhence -> Bool
$c<= :: SDL_IOWhence -> SDL_IOWhence -> Bool
<= :: SDL_IOWhence -> SDL_IOWhence -> Bool
$c> :: SDL_IOWhence -> SDL_IOWhence -> Bool
> :: SDL_IOWhence -> SDL_IOWhence -> Bool
$c>= :: SDL_IOWhence -> SDL_IOWhence -> Bool
>= :: SDL_IOWhence -> SDL_IOWhence -> Bool
$cmax :: SDL_IOWhence -> SDL_IOWhence -> SDL_IOWhence
max :: SDL_IOWhence -> SDL_IOWhence -> SDL_IOWhence
$cmin :: SDL_IOWhence -> SDL_IOWhence -> SDL_IOWhence
min :: SDL_IOWhence -> SDL_IOWhence -> SDL_IOWhence
Ord)
  deriving newtype (FFIType SDL_IOWhence -> SDL_IOWhence
SDL_IOWhence -> FFIType SDL_IOWhence
(SDL_IOWhence -> FFIType SDL_IOWhence)
-> (FFIType SDL_IOWhence -> SDL_IOWhence)
-> HasFFIType SDL_IOWhence
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_IOWhence -> FFIType SDL_IOWhence
toFFIType :: SDL_IOWhence -> FFIType SDL_IOWhence
$cfromFFIType :: FFIType SDL_IOWhence -> SDL_IOWhence
fromFFIType :: FFIType SDL_IOWhence -> SDL_IOWhence
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_IOWhence instance BG.Storable SDL_IOWhence

deriving via BG.CUInt instance BG.Prim SDL_IOWhence

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

  toCEnum :: CEnumZ SDL_IOWhence -> SDL_IOWhence
toCEnum = CUInt -> SDL_IOWhence
CEnumZ SDL_IOWhence -> SDL_IOWhence
SDL_IOWhence

  fromCEnum :: SDL_IOWhence -> CEnumZ SDL_IOWhence
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_IOWhence -> DeclaredValues SDL_IOWhence
declaredValues =
    \proxy SDL_IOWhence
_ ->
      [(CEnumZ SDL_IOWhence, NonEmpty String)]
-> DeclaredValues SDL_IOWhence
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_IOWhence
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_IO_SEEK_SET")
        , (CUInt
CEnumZ SDL_IOWhence
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_IO_SEEK_CUR")
        , (CUInt
CEnumZ SDL_IOWhence
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_IO_SEEK_END")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_IOWhence where
  minDeclaredValue :: SDL_IOWhence
minDeclaredValue = SDL_IOWhence
SDL_IO_SEEK_SET

  maxDeclaredValue :: SDL_IOWhence
maxDeclaredValue = SDL_IOWhence
SDL_IO_SEEK_END

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

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

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

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

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

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

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

-- | Seek from the beginning of data
--
--     [C declaration]: @SDL_IO_SEEK_SET@, defined at @SDL3\/SDL_iostream.h 73:5@
pattern SDL_IO_SEEK_SET :: SDL_IOWhence
pattern $mSDL_IO_SEEK_SET :: forall {r}. SDL_IOWhence -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_IO_SEEK_SET :: SDL_IOWhence
SDL_IO_SEEK_SET = SDL_IOWhence 0

-- | Seek relative to current read point
--
--     [C declaration]: @SDL_IO_SEEK_CUR@, defined at @SDL3\/SDL_iostream.h 74:5@
pattern SDL_IO_SEEK_CUR :: SDL_IOWhence
pattern $mSDL_IO_SEEK_CUR :: forall {r}. SDL_IOWhence -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_IO_SEEK_CUR :: SDL_IOWhence
SDL_IO_SEEK_CUR = SDL_IOWhence 1

-- | Seek relative to the end of data
--
--     [C declaration]: @SDL_IO_SEEK_END@, defined at @SDL3\/SDL_iostream.h 75:5@
pattern SDL_IO_SEEK_END :: SDL_IOWhence
pattern $mSDL_IO_SEEK_END :: forall {r}. SDL_IOWhence -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_IO_SEEK_END :: SDL_IOWhence
SDL_IO_SEEK_END = SDL_IOWhence 2

-- | The function pointers that drive an 'SDL_IOStream'.
--
--     Applications can provide this struct to @SDL_OpenIO()@ to create their own implementation of 'SDL_IOStream'. This is not necessarily required, as SDL already offers several common types of I\/O streams, via functions like @SDL_IOFromFile()@ and @SDL_IOFromMem()@.
--
--     This structure should be initialized using SDL_INIT_INTERFACE()
--
--     @since 3.2.0
--
--     [See also]: SDL_INIT_INTERFACE
--
--     [C declaration]: @struct SDL_IOStreamInterface@, defined at @SDL3\/SDL_iostream.h 92:16@
data SDL_IOStreamInterface = SDL_IOStreamInterface
  { SDL_IOStreamInterface -> Uint32
version :: SDL3.Sys.Bindgen.Stdinc.Uint32
  -- ^ [C declaration]: @version@, defined at @SDL3\/SDL_iostream.h 95:12@
  , SDL_IOStreamInterface -> FunPtr (Ptr Void -> IO Sint64)
size :: BG.FunPtr (BG.Ptr BG.Void -> IO SDL3.Sys.Bindgen.Stdinc.Sint64)
  -- ^ [C declaration]: @size@, defined at @SDL3\/SDL_iostream.h 102:22@
  , SDL_IOStreamInterface
-> FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
seek
      :: BG.FunPtr
           ( BG.Ptr BG.Void
             -> SDL3.Sys.Bindgen.Stdinc.Sint64
             -> SDL_IOWhence
             -> IO SDL3.Sys.Bindgen.Stdinc.Sint64
           )
  -- ^ [C declaration]: @seek@, defined at @SDL3\/SDL_iostream.h 110:22@
  , SDL_IOStreamInterface
-> FunPtr
     (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
read
      :: BG.FunPtr
           ( BG.Ptr BG.Void
             -> BG.Ptr BG.Void
             -> HsBindgen.Runtime.LibC.CSize
             -> BG.Ptr SDL_IOStatus
             -> IO HsBindgen.Runtime.LibC.CSize
           )
  -- ^ [C declaration]: @read@, defined at @SDL3\/SDL_iostream.h 122:22@
  , SDL_IOStreamInterface
-> FunPtr
     (Ptr Void
      -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
write
      :: BG.FunPtr
           ( BG.Ptr BG.Void
             -> PtrConst.PtrConst BG.Void
             -> HsBindgen.Runtime.LibC.CSize
             -> BG.Ptr SDL_IOStatus
             -> IO HsBindgen.Runtime.LibC.CSize
           )
  -- ^ [C declaration]: @write@, defined at @SDL3\/SDL_iostream.h 134:22@
  , SDL_IOStreamInterface
-> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
flush :: BG.FunPtr (BG.Ptr BG.Void -> BG.Ptr SDL_IOStatus -> IO BG.CBool)
  -- ^ [C declaration]: @flush@, defined at @SDL3\/SDL_iostream.h 145:20@
  , SDL_IOStreamInterface -> FunPtr (Ptr Void -> IO CBool)
close :: BG.FunPtr (BG.Ptr BG.Void -> IO BG.CBool)
  -- ^ [C declaration]: @close@, defined at @SDL3\/SDL_iostream.h 158:20@
  }
  deriving stock ((forall x. SDL_IOStreamInterface -> Rep SDL_IOStreamInterface x)
-> (forall x. Rep SDL_IOStreamInterface x -> SDL_IOStreamInterface)
-> Generic SDL_IOStreamInterface
forall x. Rep SDL_IOStreamInterface x -> SDL_IOStreamInterface
forall x. SDL_IOStreamInterface -> Rep SDL_IOStreamInterface x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_IOStreamInterface -> Rep SDL_IOStreamInterface x
from :: forall x. SDL_IOStreamInterface -> Rep SDL_IOStreamInterface x
$cto :: forall x. Rep SDL_IOStreamInterface x -> SDL_IOStreamInterface
to :: forall x. Rep SDL_IOStreamInterface x -> SDL_IOStreamInterface
BG.Generic, SDL_IOStreamInterface -> SDL_IOStreamInterface -> Bool
(SDL_IOStreamInterface -> SDL_IOStreamInterface -> Bool)
-> (SDL_IOStreamInterface -> SDL_IOStreamInterface -> Bool)
-> Eq SDL_IOStreamInterface
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_IOStreamInterface -> SDL_IOStreamInterface -> Bool
== :: SDL_IOStreamInterface -> SDL_IOStreamInterface -> Bool
$c/= :: SDL_IOStreamInterface -> SDL_IOStreamInterface -> Bool
/= :: SDL_IOStreamInterface -> SDL_IOStreamInterface -> Bool
Eq, Int -> SDL_IOStreamInterface -> ShowS
[SDL_IOStreamInterface] -> ShowS
SDL_IOStreamInterface -> String
(Int -> SDL_IOStreamInterface -> ShowS)
-> (SDL_IOStreamInterface -> String)
-> ([SDL_IOStreamInterface] -> ShowS)
-> Show SDL_IOStreamInterface
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_IOStreamInterface -> ShowS
showsPrec :: Int -> SDL_IOStreamInterface -> ShowS
$cshow :: SDL_IOStreamInterface -> String
show :: SDL_IOStreamInterface -> String
$cshowList :: [SDL_IOStreamInterface] -> ShowS
showList :: [SDL_IOStreamInterface] -> ShowS
Show)

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

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

instance Marshal.ReadRaw SDL_IOStreamInterface where
  readRaw :: Ptr SDL_IOStreamInterface -> IO SDL_IOStreamInterface
readRaw =
    \Ptr SDL_IOStreamInterface
ptr0 ->
      (Uint32
 -> FunPtr (Ptr Void -> IO Sint64)
 -> FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
 -> FunPtr
      (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
 -> FunPtr
      (Ptr Void
       -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
 -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
 -> FunPtr (Ptr Void -> IO CBool)
 -> SDL_IOStreamInterface)
-> IO
     (Uint32
      -> FunPtr (Ptr Void -> IO Sint64)
      -> FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
      -> FunPtr
           (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
      -> FunPtr
           (Ptr Void
            -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
      -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
      -> FunPtr (Ptr Void -> IO CBool)
      -> SDL_IOStreamInterface)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Uint32
-> FunPtr (Ptr Void -> IO Sint64)
-> FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
-> FunPtr
     (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
-> FunPtr
     (Ptr Void
      -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
-> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
-> FunPtr (Ptr Void -> IO CBool)
-> SDL_IOStreamInterface
SDL_IOStreamInterface
        IO
  (Uint32
   -> FunPtr (Ptr Void -> IO Sint64)
   -> FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
   -> FunPtr
        (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
   -> FunPtr
        (Ptr Void
         -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
   -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
   -> FunPtr (Ptr Void -> IO CBool)
   -> SDL_IOStreamInterface)
-> IO Uint32
-> IO
     (FunPtr (Ptr Void -> IO Sint64)
      -> FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
      -> FunPtr
           (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
      -> FunPtr
           (Ptr Void
            -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
      -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
      -> FunPtr (Ptr Void -> IO CBool)
      -> SDL_IOStreamInterface)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "version"
-> Ptr SDL_IOStreamInterface
-> IO (CFieldType SDL_IOStreamInterface "version")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"version") Ptr SDL_IOStreamInterface
ptr0
        IO
  (FunPtr (Ptr Void -> IO Sint64)
   -> FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
   -> FunPtr
        (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
   -> FunPtr
        (Ptr Void
         -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
   -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
   -> FunPtr (Ptr Void -> IO CBool)
   -> SDL_IOStreamInterface)
-> IO (FunPtr (Ptr Void -> IO Sint64))
-> IO
     (FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
      -> FunPtr
           (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
      -> FunPtr
           (Ptr Void
            -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
      -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
      -> FunPtr (Ptr Void -> IO CBool)
      -> SDL_IOStreamInterface)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "size"
-> Ptr SDL_IOStreamInterface
-> IO (CFieldType SDL_IOStreamInterface "size")
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 @"size") Ptr SDL_IOStreamInterface
ptr0
        IO
  (FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
   -> FunPtr
        (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
   -> FunPtr
        (Ptr Void
         -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
   -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
   -> FunPtr (Ptr Void -> IO CBool)
   -> SDL_IOStreamInterface)
-> IO (FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64))
-> IO
     (FunPtr
        (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
      -> FunPtr
           (Ptr Void
            -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
      -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
      -> FunPtr (Ptr Void -> IO CBool)
      -> SDL_IOStreamInterface)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "seek"
-> Ptr SDL_IOStreamInterface
-> IO (CFieldType SDL_IOStreamInterface "seek")
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 @"seek") Ptr SDL_IOStreamInterface
ptr0
        IO
  (FunPtr
     (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
   -> FunPtr
        (Ptr Void
         -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
   -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
   -> FunPtr (Ptr Void -> IO CBool)
   -> SDL_IOStreamInterface)
-> IO
     (FunPtr
        (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize))
-> IO
     (FunPtr
        (Ptr Void
         -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
      -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
      -> FunPtr (Ptr Void -> IO CBool)
      -> SDL_IOStreamInterface)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "read"
-> Ptr SDL_IOStreamInterface
-> IO (CFieldType SDL_IOStreamInterface "read")
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 @"read") Ptr SDL_IOStreamInterface
ptr0
        IO
  (FunPtr
     (Ptr Void
      -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
   -> FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
   -> FunPtr (Ptr Void -> IO CBool)
   -> SDL_IOStreamInterface)
-> IO
     (FunPtr
        (Ptr Void
         -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize))
-> IO
     (FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
      -> FunPtr (Ptr Void -> IO CBool) -> SDL_IOStreamInterface)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "write"
-> Ptr SDL_IOStreamInterface
-> IO (CFieldType SDL_IOStreamInterface "write")
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 @"write") Ptr SDL_IOStreamInterface
ptr0
        IO
  (FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
   -> FunPtr (Ptr Void -> IO CBool) -> SDL_IOStreamInterface)
-> IO (FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool))
-> IO (FunPtr (Ptr Void -> IO CBool) -> SDL_IOStreamInterface)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "flush"
-> Ptr SDL_IOStreamInterface
-> IO (CFieldType SDL_IOStreamInterface "flush")
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 @"flush") Ptr SDL_IOStreamInterface
ptr0
        IO (FunPtr (Ptr Void -> IO CBool) -> SDL_IOStreamInterface)
-> IO (FunPtr (Ptr Void -> IO CBool)) -> IO SDL_IOStreamInterface
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "close"
-> Ptr SDL_IOStreamInterface
-> IO (CFieldType SDL_IOStreamInterface "close")
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 @"close") Ptr SDL_IOStreamInterface
ptr0

instance Marshal.WriteRaw SDL_IOStreamInterface where
  writeRaw :: Ptr SDL_IOStreamInterface -> SDL_IOStreamInterface -> IO ()
writeRaw =
    \Ptr SDL_IOStreamInterface
ptr0 ->
      \SDL_IOStreamInterface
s1 ->
        case SDL_IOStreamInterface
s1 of
          SDL_IOStreamInterface Uint32
version2 FunPtr (Ptr Void -> IO Sint64)
size3 FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
seek4 FunPtr
  (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
read5 FunPtr
  (Ptr Void
   -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
write6 FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
flush7 FunPtr (Ptr Void -> IO CBool)
close8 ->
            Proxy "version"
-> Ptr SDL_IOStreamInterface
-> CFieldType SDL_IOStreamInterface "version"
-> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"version") Ptr SDL_IOStreamInterface
ptr0 CFieldType SDL_IOStreamInterface "version"
Uint32
version2
              IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "size"
-> Ptr SDL_IOStreamInterface
-> CFieldType SDL_IOStreamInterface "size"
-> 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 @"size") Ptr SDL_IOStreamInterface
ptr0 FunPtr (Ptr Void -> IO Sint64)
CFieldType SDL_IOStreamInterface "size"
size3
              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 "seek"
-> Ptr SDL_IOStreamInterface
-> CFieldType SDL_IOStreamInterface "seek"
-> 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 @"seek") Ptr SDL_IOStreamInterface
ptr0 FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
CFieldType SDL_IOStreamInterface "seek"
seek4
              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 "read"
-> Ptr SDL_IOStreamInterface
-> CFieldType SDL_IOStreamInterface "read"
-> 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 @"read") Ptr SDL_IOStreamInterface
ptr0 FunPtr
  (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
CFieldType SDL_IOStreamInterface "read"
read5
              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 "write"
-> Ptr SDL_IOStreamInterface
-> CFieldType SDL_IOStreamInterface "write"
-> 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 @"write") Ptr SDL_IOStreamInterface
ptr0 FunPtr
  (Ptr Void
   -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
CFieldType SDL_IOStreamInterface "write"
write6
              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 "flush"
-> Ptr SDL_IOStreamInterface
-> CFieldType SDL_IOStreamInterface "flush"
-> 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 @"flush") Ptr SDL_IOStreamInterface
ptr0 FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
CFieldType SDL_IOStreamInterface "flush"
flush7
              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 "close"
-> Ptr SDL_IOStreamInterface
-> CFieldType SDL_IOStreamInterface "close"
-> 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 @"close") Ptr SDL_IOStreamInterface
ptr0 FunPtr (Ptr Void -> IO CBool)
CFieldType SDL_IOStreamInterface "close"
close8

deriving via Marshal.EquivStorable SDL_IOStreamInterface instance BG.Storable SDL_IOStreamInterface

deriving via
  Struct.IsStructViaReadRaw SDL_IOStreamInterface
  instance
    Struct.IsStruct SDL_IOStreamInterface

-- | [C declaration]: @version@, defined at @SDL3\/SDL_iostream.h 95:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.CompatHasField.HasField "version" SDL_IOStreamInterface ty
  where
  hasField :: SDL_IOStreamInterface -> (ty -> SDL_IOStreamInterface, ty)
hasField =
    \SDL_IOStreamInterface
x0 ->
      ( \ty
y1 ->
          SDL_IOStreamInterface
            { version :: Uint32
version = ty
Uint32
y1
            , size :: FunPtr (Ptr Void -> IO Sint64)
size = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"size" SDL_IOStreamInterface
x0
            , seek :: FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
seek = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"seek" SDL_IOStreamInterface
x0
            , read :: FunPtr
  (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
read = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"read" SDL_IOStreamInterface
x0
            , write :: FunPtr
  (Ptr Void
   -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
write = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"write" SDL_IOStreamInterface
x0
            , flush :: FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
flush = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"flush" SDL_IOStreamInterface
x0
            , close :: FunPtr (Ptr Void -> IO CBool)
close = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"close" SDL_IOStreamInterface
x0
            }
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"version" SDL_IOStreamInterface
x0
      )

instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint32)
  => BG.HasField "version" (BG.Ptr SDL_IOStreamInterface) (BG.Ptr ty)
  where
  getField :: Ptr SDL_IOStreamInterface -> Ptr ty
getField = Proxy "version"
-> Ptr SDL_IOStreamInterface
-> Ptr (CFieldType SDL_IOStreamInterface "version")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"version")

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

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

-- | [C declaration]: @size@, defined at @SDL3\/SDL_iostream.h 102:22@
instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> IO SDL3.Sys.Bindgen.Stdinc.Sint64))
  => BG.CompatHasField.HasField "size" SDL_IOStreamInterface ty
  where
  hasField :: SDL_IOStreamInterface -> (ty -> SDL_IOStreamInterface, ty)
hasField =
    \SDL_IOStreamInterface
x0 ->
      ( \ty
y1 ->
          SDL_IOStreamInterface
            { size :: FunPtr (Ptr Void -> IO Sint64)
size = ty
FunPtr (Ptr Void -> IO Sint64)
y1
            , version :: Uint32
version = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"version" SDL_IOStreamInterface
x0
            , seek :: FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
seek = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"seek" SDL_IOStreamInterface
x0
            , read :: FunPtr
  (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
read = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"read" SDL_IOStreamInterface
x0
            , write :: FunPtr
  (Ptr Void
   -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
write = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"write" SDL_IOStreamInterface
x0
            , flush :: FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
flush = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"flush" SDL_IOStreamInterface
x0
            , close :: FunPtr (Ptr Void -> IO CBool)
close = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"close" SDL_IOStreamInterface
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 @"size" SDL_IOStreamInterface
x0
      )

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

instance HasCField.HasCField SDL_IOStreamInterface "size" where
  type
    CFieldType SDL_IOStreamInterface "size" =
      BG.FunPtr (BG.Ptr BG.Void -> IO SDL3.Sys.Bindgen.Stdinc.Sint64)

  offset# :: Proxy# SDL_IOStreamInterface -> Proxy# "size" -> Int
offset# = \Proxy# SDL_IOStreamInterface
_ -> \Proxy# "size"
_ -> Int
8

-- | [C declaration]: @seek@, defined at @SDL3\/SDL_iostream.h 110:22@
instance
  ( ty
      ~ BG.FunPtr
          ( BG.Ptr BG.Void
            -> SDL3.Sys.Bindgen.Stdinc.Sint64
            -> SDL_IOWhence
            -> IO SDL3.Sys.Bindgen.Stdinc.Sint64
          )
  )
  => BG.CompatHasField.HasField "seek" SDL_IOStreamInterface ty
  where
  hasField :: SDL_IOStreamInterface -> (ty -> SDL_IOStreamInterface, ty)
hasField =
    \SDL_IOStreamInterface
x0 ->
      ( \ty
y1 ->
          SDL_IOStreamInterface
            { seek :: FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
seek = ty
FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
y1
            , version :: Uint32
version = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"version" SDL_IOStreamInterface
x0
            , size :: FunPtr (Ptr Void -> IO Sint64)
size = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"size" SDL_IOStreamInterface
x0
            , read :: FunPtr
  (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
read = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"read" SDL_IOStreamInterface
x0
            , write :: FunPtr
  (Ptr Void
   -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
write = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"write" SDL_IOStreamInterface
x0
            , flush :: FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
flush = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"flush" SDL_IOStreamInterface
x0
            , close :: FunPtr (Ptr Void -> IO CBool)
close = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"close" SDL_IOStreamInterface
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 @"seek" SDL_IOStreamInterface
x0
      )

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

instance HasCField.HasCField SDL_IOStreamInterface "seek" where
  type
    CFieldType SDL_IOStreamInterface "seek" =
      BG.FunPtr
        ( BG.Ptr BG.Void
          -> SDL3.Sys.Bindgen.Stdinc.Sint64
          -> SDL_IOWhence
          -> IO SDL3.Sys.Bindgen.Stdinc.Sint64
        )

  offset# :: Proxy# SDL_IOStreamInterface -> Proxy# "seek" -> Int
offset# = \Proxy# SDL_IOStreamInterface
_ -> \Proxy# "seek"
_ -> Int
16

-- | [C declaration]: @read@, defined at @SDL3\/SDL_iostream.h 122:22@
instance
  ( ty
      ~ BG.FunPtr
          ( BG.Ptr BG.Void
            -> BG.Ptr BG.Void
            -> HsBindgen.Runtime.LibC.CSize
            -> BG.Ptr SDL_IOStatus
            -> IO HsBindgen.Runtime.LibC.CSize
          )
  )
  => BG.CompatHasField.HasField "read" SDL_IOStreamInterface ty
  where
  hasField :: SDL_IOStreamInterface -> (ty -> SDL_IOStreamInterface, ty)
hasField =
    \SDL_IOStreamInterface
x0 ->
      ( \ty
y1 ->
          SDL_IOStreamInterface
            { read :: FunPtr
  (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
read = ty
FunPtr
  (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
y1
            , version :: Uint32
version = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"version" SDL_IOStreamInterface
x0
            , size :: FunPtr (Ptr Void -> IO Sint64)
size = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"size" SDL_IOStreamInterface
x0
            , seek :: FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
seek = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"seek" SDL_IOStreamInterface
x0
            , write :: FunPtr
  (Ptr Void
   -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
write = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"write" SDL_IOStreamInterface
x0
            , flush :: FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
flush = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"flush" SDL_IOStreamInterface
x0
            , close :: FunPtr (Ptr Void -> IO CBool)
close = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"close" SDL_IOStreamInterface
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 @"read" SDL_IOStreamInterface
x0
      )

instance
  ( ty
      ~ BG.FunPtr
          ( BG.Ptr BG.Void
            -> BG.Ptr BG.Void
            -> HsBindgen.Runtime.LibC.CSize
            -> BG.Ptr SDL_IOStatus
            -> IO HsBindgen.Runtime.LibC.CSize
          )
  )
  => BG.HasField "read" (BG.Ptr SDL_IOStreamInterface) (BG.Ptr ty)
  where
  getField :: Ptr SDL_IOStreamInterface -> Ptr ty
getField = Proxy "read"
-> Ptr SDL_IOStreamInterface
-> Ptr (CFieldType SDL_IOStreamInterface "read")
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 @"read")

instance HasCField.HasCField SDL_IOStreamInterface "read" where
  type
    CFieldType SDL_IOStreamInterface "read" =
      BG.FunPtr
        ( BG.Ptr BG.Void
          -> BG.Ptr BG.Void
          -> HsBindgen.Runtime.LibC.CSize
          -> BG.Ptr SDL_IOStatus
          -> IO HsBindgen.Runtime.LibC.CSize
        )

  offset# :: Proxy# SDL_IOStreamInterface -> Proxy# "read" -> Int
offset# = \Proxy# SDL_IOStreamInterface
_ -> \Proxy# "read"
_ -> Int
24

-- | [C declaration]: @write@, defined at @SDL3\/SDL_iostream.h 134:22@
instance
  ( ty
      ~ BG.FunPtr
          ( BG.Ptr BG.Void
            -> PtrConst.PtrConst BG.Void
            -> HsBindgen.Runtime.LibC.CSize
            -> BG.Ptr SDL_IOStatus
            -> IO HsBindgen.Runtime.LibC.CSize
          )
  )
  => BG.CompatHasField.HasField "write" SDL_IOStreamInterface ty
  where
  hasField :: SDL_IOStreamInterface -> (ty -> SDL_IOStreamInterface, ty)
hasField =
    \SDL_IOStreamInterface
x0 ->
      ( \ty
y1 ->
          SDL_IOStreamInterface
            { write :: FunPtr
  (Ptr Void
   -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
write = ty
FunPtr
  (Ptr Void
   -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
y1
            , version :: Uint32
version = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"version" SDL_IOStreamInterface
x0
            , size :: FunPtr (Ptr Void -> IO Sint64)
size = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"size" SDL_IOStreamInterface
x0
            , seek :: FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
seek = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"seek" SDL_IOStreamInterface
x0
            , read :: FunPtr
  (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
read = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"read" SDL_IOStreamInterface
x0
            , flush :: FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
flush = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"flush" SDL_IOStreamInterface
x0
            , close :: FunPtr (Ptr Void -> IO CBool)
close = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"close" SDL_IOStreamInterface
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 @"write" SDL_IOStreamInterface
x0
      )

instance
  ( ty
      ~ BG.FunPtr
          ( BG.Ptr BG.Void
            -> PtrConst.PtrConst BG.Void
            -> HsBindgen.Runtime.LibC.CSize
            -> BG.Ptr SDL_IOStatus
            -> IO HsBindgen.Runtime.LibC.CSize
          )
  )
  => BG.HasField "write" (BG.Ptr SDL_IOStreamInterface) (BG.Ptr ty)
  where
  getField :: Ptr SDL_IOStreamInterface -> Ptr ty
getField = Proxy "write"
-> Ptr SDL_IOStreamInterface
-> Ptr (CFieldType SDL_IOStreamInterface "write")
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 @"write")

instance HasCField.HasCField SDL_IOStreamInterface "write" where
  type
    CFieldType SDL_IOStreamInterface "write" =
      BG.FunPtr
        ( BG.Ptr BG.Void
          -> PtrConst.PtrConst BG.Void
          -> HsBindgen.Runtime.LibC.CSize
          -> BG.Ptr SDL_IOStatus
          -> IO HsBindgen.Runtime.LibC.CSize
        )

  offset# :: Proxy# SDL_IOStreamInterface -> Proxy# "write" -> Int
offset# = \Proxy# SDL_IOStreamInterface
_ -> \Proxy# "write"
_ -> Int
32

-- | [C declaration]: @flush@, defined at @SDL3\/SDL_iostream.h 145:20@
instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> BG.Ptr SDL_IOStatus -> IO BG.CBool))
  => BG.CompatHasField.HasField "flush" SDL_IOStreamInterface ty
  where
  hasField :: SDL_IOStreamInterface -> (ty -> SDL_IOStreamInterface, ty)
hasField =
    \SDL_IOStreamInterface
x0 ->
      ( \ty
y1 ->
          SDL_IOStreamInterface
            { flush :: FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
flush = ty
FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
y1
            , version :: Uint32
version = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"version" SDL_IOStreamInterface
x0
            , size :: FunPtr (Ptr Void -> IO Sint64)
size = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"size" SDL_IOStreamInterface
x0
            , seek :: FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
seek = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"seek" SDL_IOStreamInterface
x0
            , read :: FunPtr
  (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
read = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"read" SDL_IOStreamInterface
x0
            , write :: FunPtr
  (Ptr Void
   -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
write = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"write" SDL_IOStreamInterface
x0
            , close :: FunPtr (Ptr Void -> IO CBool)
close = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"close" SDL_IOStreamInterface
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 @"flush" SDL_IOStreamInterface
x0
      )

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

instance HasCField.HasCField SDL_IOStreamInterface "flush" where
  type
    CFieldType SDL_IOStreamInterface "flush" =
      BG.FunPtr (BG.Ptr BG.Void -> BG.Ptr SDL_IOStatus -> IO BG.CBool)

  offset# :: Proxy# SDL_IOStreamInterface -> Proxy# "flush" -> Int
offset# = \Proxy# SDL_IOStreamInterface
_ -> \Proxy# "flush"
_ -> Int
40

-- | [C declaration]: @close@, defined at @SDL3\/SDL_iostream.h 158:20@
instance
  (ty ~ BG.FunPtr (BG.Ptr BG.Void -> IO BG.CBool))
  => BG.CompatHasField.HasField "close" SDL_IOStreamInterface ty
  where
  hasField :: SDL_IOStreamInterface -> (ty -> SDL_IOStreamInterface, ty)
hasField =
    \SDL_IOStreamInterface
x0 ->
      ( \ty
y1 ->
          SDL_IOStreamInterface
            { close :: FunPtr (Ptr Void -> IO CBool)
close = ty
FunPtr (Ptr Void -> IO CBool)
y1
            , version :: Uint32
version = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"version" SDL_IOStreamInterface
x0
            , size :: FunPtr (Ptr Void -> IO Sint64)
size = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"size" SDL_IOStreamInterface
x0
            , seek :: FunPtr (Ptr Void -> Sint64 -> SDL_IOWhence -> IO Sint64)
seek = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"seek" SDL_IOStreamInterface
x0
            , read :: FunPtr
  (Ptr Void -> Ptr Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
read = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"read" SDL_IOStreamInterface
x0
            , write :: FunPtr
  (Ptr Void
   -> PtrConst Void -> CSize -> Ptr SDL_IOStatus -> IO CSize)
write = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"write" SDL_IOStreamInterface
x0
            , flush :: FunPtr (Ptr Void -> Ptr SDL_IOStatus -> IO CBool)
flush = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"flush" SDL_IOStreamInterface
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 @"close" SDL_IOStreamInterface
x0
      )

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

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

  offset# :: Proxy# SDL_IOStreamInterface -> Proxy# "close" -> Int
offset# = \Proxy# SDL_IOStreamInterface
_ -> \Proxy# "close"
_ -> Int
48

-- | The read\/write operation structure.
--
--     This operates as an opaque handle. There are several APIs to create various types of I\/O streams, or an app can supply an 'SDL_IOStreamInterface' to @SDL_OpenIO()@ to provide their own stream implementation behind this struct\'s abstract interface.
--
--     @since 3.2.0
--
--     [C declaration]: @struct SDL_IOStream@, defined at @SDL3\/SDL_iostream.h 182:16@
data SDL_IOStream

-- | [C declaration]: @macro SDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER@, literal @\"SDL.iostream.windows.handle\"@, defined at @SDL3\/SDL_iostream.h 280:9@
sDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER :: BG.ByteString
sDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER :: ByteString
sDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x73
    , Word8
0x74
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x2E
    , Word8
0x77
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x64
    , Word8
0x6F
    , Word8
0x77
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x68
    , Word8
0x61
    , Word8
0x6E
    , Word8
0x64
    , Word8
0x6C
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_IOSTREAM_STDIO_FILE_POINTER@, literal @\"SDL.iostream.stdio.file\"@, defined at @SDL3\/SDL_iostream.h 281:9@
sDL_PROP_IOSTREAM_STDIO_FILE_POINTER :: BG.ByteString
sDL_PROP_IOSTREAM_STDIO_FILE_POINTER :: ByteString
sDL_PROP_IOSTREAM_STDIO_FILE_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x73
    , Word8
0x74
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x2E
    , Word8
0x66
    , Word8
0x69
    , Word8
0x6C
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER@, literal @\"SDL.iostream.file_descriptor\"@, defined at @SDL3\/SDL_iostream.h 282:9@
sDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER :: BG.ByteString
sDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER :: ByteString
sDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x73
    , Word8
0x74
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x2E
    , Word8
0x66
    , Word8
0x69
    , Word8
0x6C
    , Word8
0x65
    , Word8
0x5F
    , Word8
0x64
    , Word8
0x65
    , Word8
0x73
    , Word8
0x63
    , Word8
0x72
    , Word8
0x69
    , Word8
0x70
    , Word8
0x74
    , Word8
0x6F
    , Word8
0x72
    ]

-- | [C declaration]: @macro SDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER@, literal @\"SDL.iostream.android.aasset\"@, defined at @SDL3\/SDL_iostream.h 283:9@
sDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER :: BG.ByteString
sDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER :: ByteString
sDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x73
    , Word8
0x74
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x2E
    , Word8
0x61
    , Word8
0x6E
    , Word8
0x64
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x69
    , Word8
0x64
    , Word8
0x2E
    , Word8
0x61
    , Word8
0x61
    , Word8
0x73
    , Word8
0x73
    , Word8
0x65
    , Word8
0x74
    ]

-- | [C declaration]: @macro SDL_PROP_IOSTREAM_MEMORY_POINTER@, literal @\"SDL.iostream.memory.base\"@, defined at @SDL3\/SDL_iostream.h 332:9@
sDL_PROP_IOSTREAM_MEMORY_POINTER :: BG.ByteString
sDL_PROP_IOSTREAM_MEMORY_POINTER :: ByteString
sDL_PROP_IOSTREAM_MEMORY_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x73
    , Word8
0x74
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x2E
    , Word8
0x6D
    , Word8
0x65
    , Word8
0x6D
    , Word8
0x6F
    , Word8
0x72
    , Word8
0x79
    , Word8
0x2E
    , Word8
0x62
    , Word8
0x61
    , Word8
0x73
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER@, literal @\"SDL.iostream.memory.size\"@, defined at @SDL3\/SDL_iostream.h 333:9@
sDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER :: BG.ByteString
sDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER :: ByteString
sDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x73
    , Word8
0x74
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x2E
    , Word8
0x6D
    , Word8
0x65
    , Word8
0x6D
    , Word8
0x6F
    , Word8
0x72
    , Word8
0x79
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x69
    , Word8
0x7A
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER@, literal @\"SDL.iostream.memory.free\"@, defined at @SDL3\/SDL_iostream.h 334:9@
sDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER :: BG.ByteString
sDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER :: ByteString
sDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x73
    , Word8
0x74
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x2E
    , Word8
0x6D
    , Word8
0x65
    , Word8
0x6D
    , Word8
0x6F
    , Word8
0x72
    , Word8
0x79
    , Word8
0x2E
    , Word8
0x66
    , Word8
0x72
    , Word8
0x65
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER@, literal @\"SDL.iostream.dynamic.memory\"@, defined at @SDL3\/SDL_iostream.h 413:9@
sDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER :: BG.ByteString
sDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER :: ByteString
sDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x73
    , Word8
0x74
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x2E
    , Word8
0x64
    , Word8
0x79
    , Word8
0x6E
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x69
    , Word8
0x63
    , Word8
0x2E
    , Word8
0x6D
    , Word8
0x65
    , Word8
0x6D
    , Word8
0x6F
    , Word8
0x72
    , Word8
0x79
    ]

-- | [C declaration]: @macro SDL_PROP_IOSTREAM_DYNAMIC_CHUNKSIZE_NUMBER@, literal @\"SDL.iostream.dynamic.chunksize\"@, defined at @SDL3\/SDL_iostream.h 414:9@
sDL_PROP_IOSTREAM_DYNAMIC_CHUNKSIZE_NUMBER :: BG.ByteString
sDL_PROP_IOSTREAM_DYNAMIC_CHUNKSIZE_NUMBER :: ByteString
sDL_PROP_IOSTREAM_DYNAMIC_CHUNKSIZE_NUMBER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x73
    , Word8
0x74
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x2E
    , Word8
0x64
    , Word8
0x79
    , Word8
0x6E
    , Word8
0x61
    , Word8
0x6D
    , Word8
0x69
    , Word8
0x63
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x68
    , Word8
0x75
    , Word8
0x6E
    , Word8
0x6B
    , Word8
0x73
    , Word8
0x69
    , Word8
0x7A
    , Word8
0x65
    ]