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

-- | SDL offers an API for examining and manipulating the system\'s filesystem. This covers most things one would need to do with directories, except for actual file I\/O (which is covered by [CategoryIOStream](CategoryIOStream) and [CategoryAsyncIO](CategoryAsyncIO) instead).
--
--     There are functions to answer necessary path questions:
--
--     * Where is my app\'s data? @SDL_GetBasePath()@.
--
--     * Where can I safely write files? @SDL_GetPrefPath()@.
--
--     * Where are paths like Downloads, Desktop, Music? @SDL_GetUserFolder()@.
--
--     * What is this thing at this location? @SDL_GetPathInfo()@.
--
--     * What items live in this folder? @SDL_EnumerateDirectory()@.
--
--     * What items live in this folder by wildcard? @SDL_GlobDirectory()@.
--
--     * What is my current working directory? @SDL_GetCurrentDirectory()@.
--
--     SDL also offers functions to manipulate the directory tree: renaming, removing, copying files. Get the directory where the application was run from.
--
--     SDL caches the result of this call internally, but the first call to this function is not necessarily fast, so plan accordingly.
--
--     __macOS and iOS Specific Functionality__: If the application is in a \".app\" bundle, this function returns the Resource directory (e.g. MyApp.app\/Contents\/Resources\/). This behaviour can be overridden by adding a property to the Info.plist file. Adding a string key with the name SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the behaviour.
--
--     Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an application in \/Applications\/SDLApp\/MyApp.app):
--
--     * @resource@: bundle resource directory (the default). For example: @\/Applications\/SDLApp\/MyApp.app\/Contents\/Resources@
--
--     * @bundle@: the Bundle directory. For example: @\/Applications\/SDLApp\/MyApp.app\/@
--
--     * @parent@: the containing directory of the bundle. For example: @\/Applications\/SDLApp\/@
--
--     __Android Specific Functionality__: This function returns \".\/\", which allows filesystem operations to use internal storage and the asset system.
--
--     __Nintendo 3DS Specific Functionality__: This function returns \"romfs\" directory of the application as it is uncommon to store resources outside the executable. As such it is not a writable directory.
--
--     The returned path is guaranteed to end with a path separator (\'\\\' on Windows, \'\/\' on most other platforms).
--
--     [Returns]: an absolute path in UTF-8 encoding to the application data directory. NULL will be returned on error or when the platform doesn\'t implement this functionality, call SDL_GetError() for more information.
--
--     [Thread safety]: It is safe to call this function from any thread.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_GetPrefPath'
module SDL3.Sys.Bindgen.Filesystem (
  SDL3.Sys.Bindgen.Filesystem.SDL_Folder (..),
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_HOME,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_DESKTOP,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_DOCUMENTS,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_DOWNLOADS,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_MUSIC,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_PICTURES,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_PUBLICSHARE,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_SAVEDGAMES,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_SCREENSHOTS,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_TEMPLATES,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_VIDEOS,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_FOLDER_COUNT,
  SDL3.Sys.Bindgen.Filesystem.SDL_PathType (..),
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_PATHTYPE_NONE,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_PATHTYPE_FILE,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_PATHTYPE_DIRECTORY,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_PATHTYPE_OTHER,
  SDL3.Sys.Bindgen.Filesystem.SDL_PathInfo (..),
  SDL3.Sys.Bindgen.Filesystem.SDL_GlobFlags (..),
  SDL3.Sys.Bindgen.Filesystem.sDL_GLOB_CASEINSENSITIVE,
  SDL3.Sys.Bindgen.Filesystem.SDL_EnumerationResult (..),
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_ENUM_CONTINUE,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_ENUM_SUCCESS,
  pattern SDL3.Sys.Bindgen.Filesystem.SDL_ENUM_FAILURE,
  SDL3.Sys.Bindgen.Filesystem.SDL_EnumerateDirectoryCallback_Aux (..),
  SDL3.Sys.Bindgen.Filesystem.SDL_EnumerateDirectoryCallback (..),
)
where

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

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

-- | The type of the OS-provided default folder for a specific purpose.
--
--     Note that the Trash folder isn\'t included here, because trashing files usually involves extra OS-specific functionality to remember the file\'s original location.
--
--     The folders supported per platform are:
--
--     Windows
--
--     macOS\/iOS
--
--     tvOS
--
--     Unix (XDG)
--
--     Haiku
--
--     Emscripten
--
--     HOME
--
--     X
--
--     X
--
--     X
--
--     X
--
--     X
--
--     DESKTOP
--
--     X
--
--     X
--
--     X
--
--     X
--
--     DOCUMENTS
--
--     X
--
--     X
--
--     X
--
--     DOWNLOADS
--
--     Vista+
--
--     X
--
--     X
--
--     MUSIC
--
--     X
--
--     X
--
--     X
--
--     PICTURES
--
--     X
--
--     X
--
--     X
--
--     PUBLICSHARE
--
--     X
--
--     X
--
--     SAVEDGAMES
--
--     Vista+
--
--     SCREENSHOTS
--
--     Vista+
--
--     TEMPLATES
--
--     X
--
--     X
--
--     X
--
--     VIDEOS
--
--     X
--
--     X*
--
--     X
--
--     Note that on macOS\/iOS, the Videos folder is called \"Movies\".
--
--     @since 3.2.0
--
--     [See also]: 'sDL_GetUserFolder'
--
--     [C declaration]: @enum SDL_Folder@, defined at @SDL3\/SDL_filesystem.h 195:14@
newtype SDL_Folder = SDL_Folder
  { SDL_Folder -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_Folder -> Rep SDL_Folder x)
-> (forall x. Rep SDL_Folder x -> SDL_Folder) -> Generic SDL_Folder
forall x. Rep SDL_Folder x -> SDL_Folder
forall x. SDL_Folder -> Rep SDL_Folder x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_Folder -> Rep SDL_Folder x
from :: forall x. SDL_Folder -> Rep SDL_Folder x
$cto :: forall x. Rep SDL_Folder x -> SDL_Folder
to :: forall x. Rep SDL_Folder x -> SDL_Folder
BG.Generic, SDL_Folder -> SDL_Folder -> Bool
(SDL_Folder -> SDL_Folder -> Bool)
-> (SDL_Folder -> SDL_Folder -> Bool) -> Eq SDL_Folder
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_Folder -> SDL_Folder -> Bool
== :: SDL_Folder -> SDL_Folder -> Bool
$c/= :: SDL_Folder -> SDL_Folder -> Bool
/= :: SDL_Folder -> SDL_Folder -> Bool
Eq, Eq SDL_Folder
Eq SDL_Folder =>
(SDL_Folder -> SDL_Folder -> Ordering)
-> (SDL_Folder -> SDL_Folder -> Bool)
-> (SDL_Folder -> SDL_Folder -> Bool)
-> (SDL_Folder -> SDL_Folder -> Bool)
-> (SDL_Folder -> SDL_Folder -> Bool)
-> (SDL_Folder -> SDL_Folder -> SDL_Folder)
-> (SDL_Folder -> SDL_Folder -> SDL_Folder)
-> Ord SDL_Folder
SDL_Folder -> SDL_Folder -> Bool
SDL_Folder -> SDL_Folder -> Ordering
SDL_Folder -> SDL_Folder -> SDL_Folder
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_Folder -> SDL_Folder -> Ordering
compare :: SDL_Folder -> SDL_Folder -> Ordering
$c< :: SDL_Folder -> SDL_Folder -> Bool
< :: SDL_Folder -> SDL_Folder -> Bool
$c<= :: SDL_Folder -> SDL_Folder -> Bool
<= :: SDL_Folder -> SDL_Folder -> Bool
$c> :: SDL_Folder -> SDL_Folder -> Bool
> :: SDL_Folder -> SDL_Folder -> Bool
$c>= :: SDL_Folder -> SDL_Folder -> Bool
>= :: SDL_Folder -> SDL_Folder -> Bool
$cmax :: SDL_Folder -> SDL_Folder -> SDL_Folder
max :: SDL_Folder -> SDL_Folder -> SDL_Folder
$cmin :: SDL_Folder -> SDL_Folder -> SDL_Folder
min :: SDL_Folder -> SDL_Folder -> SDL_Folder
Ord)
  deriving newtype (FFIType SDL_Folder -> SDL_Folder
SDL_Folder -> FFIType SDL_Folder
(SDL_Folder -> FFIType SDL_Folder)
-> (FFIType SDL_Folder -> SDL_Folder) -> HasFFIType SDL_Folder
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_Folder -> FFIType SDL_Folder
toFFIType :: SDL_Folder -> FFIType SDL_Folder
$cfromFFIType :: FFIType SDL_Folder -> SDL_Folder
fromFFIType :: FFIType SDL_Folder -> SDL_Folder
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_Folder instance BG.Storable SDL_Folder

deriving via BG.CUInt instance BG.Prim SDL_Folder

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

  toCEnum :: CEnumZ SDL_Folder -> SDL_Folder
toCEnum = CUInt -> SDL_Folder
CEnumZ SDL_Folder -> SDL_Folder
SDL_Folder

  fromCEnum :: SDL_Folder -> CEnumZ SDL_Folder
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_Folder -> DeclaredValues SDL_Folder
declaredValues =
    \proxy SDL_Folder
_ ->
      [(CEnumZ SDL_Folder, NonEmpty String)] -> DeclaredValues SDL_Folder
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_Folder
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_HOME")
        , (CUInt
CEnumZ SDL_Folder
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_DESKTOP")
        , (CUInt
CEnumZ SDL_Folder
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_DOCUMENTS")
        , (CUInt
CEnumZ SDL_Folder
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_DOWNLOADS")
        , (CUInt
CEnumZ SDL_Folder
4, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_MUSIC")
        , (CUInt
CEnumZ SDL_Folder
5, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_PICTURES")
        , (CUInt
CEnumZ SDL_Folder
6, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_PUBLICSHARE")
        , (CUInt
CEnumZ SDL_Folder
7, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_SAVEDGAMES")
        , (CUInt
CEnumZ SDL_Folder
8, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_SCREENSHOTS")
        , (CUInt
CEnumZ SDL_Folder
9, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_TEMPLATES")
        , (CUInt
CEnumZ SDL_Folder
10, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_VIDEOS")
        , (CUInt
CEnumZ SDL_Folder
11, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_FOLDER_COUNT")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_Folder where
  minDeclaredValue :: SDL_Folder
minDeclaredValue = SDL_Folder
SDL_FOLDER_HOME

  maxDeclaredValue :: SDL_Folder
maxDeclaredValue = SDL_Folder
SDL_FOLDER_COUNT

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

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

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

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

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

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

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

-- | The folder which contains all of the current user\'s data, preferences, and documents. It usually contains most of the other folders. If a requested folder does not exist, the home folder can be considered a safe fallback to store a user\'s documents.
--
--     [C declaration]: @SDL_FOLDER_HOME@, defined at @SDL3\/SDL_filesystem.h 197:5@
pattern SDL_FOLDER_HOME :: SDL_Folder
pattern $mSDL_FOLDER_HOME :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_HOME :: SDL_Folder
SDL_FOLDER_HOME = SDL_Folder 0

-- | The folder of files that are displayed on the desktop. Note that the existence of a desktop folder does not guarantee that the system does show icons on its desktop; certain GNU\/Linux distros with a graphical environment may not have desktop icons.
--
--     [C declaration]: @SDL_FOLDER_DESKTOP@, defined at @SDL3\/SDL_filesystem.h 198:5@
pattern SDL_FOLDER_DESKTOP :: SDL_Folder
pattern $mSDL_FOLDER_DESKTOP :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_DESKTOP :: SDL_Folder
SDL_FOLDER_DESKTOP = SDL_Folder 1

-- | User document files, possibly application-specific. This is a good place to save a user\'s projects.
--
--     [C declaration]: @SDL_FOLDER_DOCUMENTS@, defined at @SDL3\/SDL_filesystem.h 199:5@
pattern SDL_FOLDER_DOCUMENTS :: SDL_Folder
pattern $mSDL_FOLDER_DOCUMENTS :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_DOCUMENTS :: SDL_Folder
SDL_FOLDER_DOCUMENTS = SDL_Folder 2

-- | Standard folder for user files downloaded from the internet.
--
--     [C declaration]: @SDL_FOLDER_DOWNLOADS@, defined at @SDL3\/SDL_filesystem.h 200:5@
pattern SDL_FOLDER_DOWNLOADS :: SDL_Folder
pattern $mSDL_FOLDER_DOWNLOADS :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_DOWNLOADS :: SDL_Folder
SDL_FOLDER_DOWNLOADS = SDL_Folder 3

-- | Music files that can be played using a standard music player (mp3, ogg...).
--
--     [C declaration]: @SDL_FOLDER_MUSIC@, defined at @SDL3\/SDL_filesystem.h 201:5@
pattern SDL_FOLDER_MUSIC :: SDL_Folder
pattern $mSDL_FOLDER_MUSIC :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_MUSIC :: SDL_Folder
SDL_FOLDER_MUSIC = SDL_Folder 4

-- | Image files that can be displayed using a standard viewer (png, jpg...).
--
--     [C declaration]: @SDL_FOLDER_PICTURES@, defined at @SDL3\/SDL_filesystem.h 202:5@
pattern SDL_FOLDER_PICTURES :: SDL_Folder
pattern $mSDL_FOLDER_PICTURES :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_PICTURES :: SDL_Folder
SDL_FOLDER_PICTURES = SDL_Folder 5

-- | Files that are meant to be shared with other users on the same computer.
--
--     [C declaration]: @SDL_FOLDER_PUBLICSHARE@, defined at @SDL3\/SDL_filesystem.h 203:5@
pattern SDL_FOLDER_PUBLICSHARE :: SDL_Folder
pattern $mSDL_FOLDER_PUBLICSHARE :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_PUBLICSHARE :: SDL_Folder
SDL_FOLDER_PUBLICSHARE = SDL_Folder 6

-- | Save files for games.
--
--     [C declaration]: @SDL_FOLDER_SAVEDGAMES@, defined at @SDL3\/SDL_filesystem.h 204:5@
pattern SDL_FOLDER_SAVEDGAMES :: SDL_Folder
pattern $mSDL_FOLDER_SAVEDGAMES :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_SAVEDGAMES :: SDL_Folder
SDL_FOLDER_SAVEDGAMES = SDL_Folder 7

-- | Application screenshots.
--
--     [C declaration]: @SDL_FOLDER_SCREENSHOTS@, defined at @SDL3\/SDL_filesystem.h 205:5@
pattern SDL_FOLDER_SCREENSHOTS :: SDL_Folder
pattern $mSDL_FOLDER_SCREENSHOTS :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_SCREENSHOTS :: SDL_Folder
SDL_FOLDER_SCREENSHOTS = SDL_Folder 8

-- | Template files to be used when the user requests the desktop environment to create a new file in a certain folder, such as \"New Text File.txt\". Any file in the Templates folder can be used as a starting point for a new file.
--
--     [C declaration]: @SDL_FOLDER_TEMPLATES@, defined at @SDL3\/SDL_filesystem.h 206:5@
pattern SDL_FOLDER_TEMPLATES :: SDL_Folder
pattern $mSDL_FOLDER_TEMPLATES :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_TEMPLATES :: SDL_Folder
SDL_FOLDER_TEMPLATES = SDL_Folder 9

-- | Video files that can be played using a standard video player (mp4, webm...).
--
--     [C declaration]: @SDL_FOLDER_VIDEOS@, defined at @SDL3\/SDL_filesystem.h 207:5@
pattern SDL_FOLDER_VIDEOS :: SDL_Folder
pattern $mSDL_FOLDER_VIDEOS :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_VIDEOS :: SDL_Folder
SDL_FOLDER_VIDEOS = SDL_Folder 10

-- | Total number of types in this enum, not a folder type by itself.
--
--     [C declaration]: @SDL_FOLDER_COUNT@, defined at @SDL3\/SDL_filesystem.h 208:5@
pattern SDL_FOLDER_COUNT :: SDL_Folder
pattern $mSDL_FOLDER_COUNT :: forall {r}. SDL_Folder -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_FOLDER_COUNT :: SDL_Folder
SDL_FOLDER_COUNT = SDL_Folder 11

-- | Types of filesystem entries.
--
--     Note that there may be other sorts of items on a filesystem: devices, named pipes, etc. They are currently reported as SDL_PATHTYPE_OTHER.
--
--     @since 3.2.0
--
--     [See also]: 'SDL_PathInfo'
--
--     [C declaration]: @enum SDL_PathType@, defined at @SDL3\/SDL_filesystem.h 251:14@
newtype SDL_PathType = SDL_PathType
  { SDL_PathType -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_PathType -> Rep SDL_PathType x)
-> (forall x. Rep SDL_PathType x -> SDL_PathType)
-> Generic SDL_PathType
forall x. Rep SDL_PathType x -> SDL_PathType
forall x. SDL_PathType -> Rep SDL_PathType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_PathType -> Rep SDL_PathType x
from :: forall x. SDL_PathType -> Rep SDL_PathType x
$cto :: forall x. Rep SDL_PathType x -> SDL_PathType
to :: forall x. Rep SDL_PathType x -> SDL_PathType
BG.Generic, SDL_PathType -> SDL_PathType -> Bool
(SDL_PathType -> SDL_PathType -> Bool)
-> (SDL_PathType -> SDL_PathType -> Bool) -> Eq SDL_PathType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_PathType -> SDL_PathType -> Bool
== :: SDL_PathType -> SDL_PathType -> Bool
$c/= :: SDL_PathType -> SDL_PathType -> Bool
/= :: SDL_PathType -> SDL_PathType -> Bool
Eq, Eq SDL_PathType
Eq SDL_PathType =>
(SDL_PathType -> SDL_PathType -> Ordering)
-> (SDL_PathType -> SDL_PathType -> Bool)
-> (SDL_PathType -> SDL_PathType -> Bool)
-> (SDL_PathType -> SDL_PathType -> Bool)
-> (SDL_PathType -> SDL_PathType -> Bool)
-> (SDL_PathType -> SDL_PathType -> SDL_PathType)
-> (SDL_PathType -> SDL_PathType -> SDL_PathType)
-> Ord SDL_PathType
SDL_PathType -> SDL_PathType -> Bool
SDL_PathType -> SDL_PathType -> Ordering
SDL_PathType -> SDL_PathType -> SDL_PathType
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_PathType -> SDL_PathType -> Ordering
compare :: SDL_PathType -> SDL_PathType -> Ordering
$c< :: SDL_PathType -> SDL_PathType -> Bool
< :: SDL_PathType -> SDL_PathType -> Bool
$c<= :: SDL_PathType -> SDL_PathType -> Bool
<= :: SDL_PathType -> SDL_PathType -> Bool
$c> :: SDL_PathType -> SDL_PathType -> Bool
> :: SDL_PathType -> SDL_PathType -> Bool
$c>= :: SDL_PathType -> SDL_PathType -> Bool
>= :: SDL_PathType -> SDL_PathType -> Bool
$cmax :: SDL_PathType -> SDL_PathType -> SDL_PathType
max :: SDL_PathType -> SDL_PathType -> SDL_PathType
$cmin :: SDL_PathType -> SDL_PathType -> SDL_PathType
min :: SDL_PathType -> SDL_PathType -> SDL_PathType
Ord)
  deriving newtype (FFIType SDL_PathType -> SDL_PathType
SDL_PathType -> FFIType SDL_PathType
(SDL_PathType -> FFIType SDL_PathType)
-> (FFIType SDL_PathType -> SDL_PathType)
-> HasFFIType SDL_PathType
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_PathType -> FFIType SDL_PathType
toFFIType :: SDL_PathType -> FFIType SDL_PathType
$cfromFFIType :: FFIType SDL_PathType -> SDL_PathType
fromFFIType :: FFIType SDL_PathType -> SDL_PathType
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_PathType instance BG.Storable SDL_PathType

deriving via BG.CUInt instance BG.Prim SDL_PathType

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

  toCEnum :: CEnumZ SDL_PathType -> SDL_PathType
toCEnum = CUInt -> SDL_PathType
CEnumZ SDL_PathType -> SDL_PathType
SDL_PathType

  fromCEnum :: SDL_PathType -> CEnumZ SDL_PathType
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_PathType -> DeclaredValues SDL_PathType
declaredValues =
    \proxy SDL_PathType
_ ->
      [(CEnumZ SDL_PathType, NonEmpty String)]
-> DeclaredValues SDL_PathType
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_PathType
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PATHTYPE_NONE")
        , (CUInt
CEnumZ SDL_PathType
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PATHTYPE_FILE")
        , (CUInt
CEnumZ SDL_PathType
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PATHTYPE_DIRECTORY")
        , (CUInt
CEnumZ SDL_PathType
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PATHTYPE_OTHER")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_PathType where
  minDeclaredValue :: SDL_PathType
minDeclaredValue = SDL_PathType
SDL_PATHTYPE_NONE

  maxDeclaredValue :: SDL_PathType
maxDeclaredValue = SDL_PathType
SDL_PATHTYPE_OTHER

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

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

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

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

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

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

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

-- | path does not exist
--
--     [C declaration]: @SDL_PATHTYPE_NONE@, defined at @SDL3\/SDL_filesystem.h 253:5@
pattern SDL_PATHTYPE_NONE :: SDL_PathType
pattern $mSDL_PATHTYPE_NONE :: forall {r}. SDL_PathType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PATHTYPE_NONE :: SDL_PathType
SDL_PATHTYPE_NONE = SDL_PathType 0

-- | a normal file
--
--     [C declaration]: @SDL_PATHTYPE_FILE@, defined at @SDL3\/SDL_filesystem.h 254:5@
pattern SDL_PATHTYPE_FILE :: SDL_PathType
pattern $mSDL_PATHTYPE_FILE :: forall {r}. SDL_PathType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PATHTYPE_FILE :: SDL_PathType
SDL_PATHTYPE_FILE = SDL_PathType 1

-- | a directory
--
--     [C declaration]: @SDL_PATHTYPE_DIRECTORY@, defined at @SDL3\/SDL_filesystem.h 255:5@
pattern SDL_PATHTYPE_DIRECTORY :: SDL_PathType
pattern $mSDL_PATHTYPE_DIRECTORY :: forall {r}. SDL_PathType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PATHTYPE_DIRECTORY :: SDL_PathType
SDL_PATHTYPE_DIRECTORY = SDL_PathType 2

-- | something completely different like a device node (not a symlink, those are always followed)
--
--     [C declaration]: @SDL_PATHTYPE_OTHER@, defined at @SDL3\/SDL_filesystem.h 256:5@
pattern SDL_PATHTYPE_OTHER :: SDL_PathType
pattern $mSDL_PATHTYPE_OTHER :: forall {r}. SDL_PathType -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PATHTYPE_OTHER :: SDL_PathType
SDL_PATHTYPE_OTHER = SDL_PathType 3

-- | Information about a path on the filesystem.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_GetPathInfo', SDL_GetStoragePathInfo
--
--     [C declaration]: @struct SDL_PathInfo@, defined at @SDL3\/SDL_filesystem.h 267:16@
data SDL_PathInfo = SDL_PathInfo
  { SDL_PathInfo -> SDL_PathType
type' :: SDL_PathType
  -- ^ the path type
  --
  --          [C declaration]: @type@, defined at @SDL3\/SDL_filesystem.h 269:18@
  , SDL_PathInfo -> Uint64
size :: SDL3.Sys.Bindgen.Stdinc.Uint64
  -- ^ the file size in bytes
  --
  --          [C declaration]: @size@, defined at @SDL3\/SDL_filesystem.h 270:12@
  , SDL_PathInfo -> SDL_Time
create_time :: SDL3.Sys.Bindgen.Stdinc.SDL_Time
  -- ^ the time when the path was created
  --
  --          [C declaration]: @create_time@, defined at @SDL3\/SDL_filesystem.h 271:14@
  , SDL_PathInfo -> SDL_Time
modify_time :: SDL3.Sys.Bindgen.Stdinc.SDL_Time
  -- ^ the last time the path was modified
  --
  --          [C declaration]: @modify_time@, defined at @SDL3\/SDL_filesystem.h 272:14@
  , SDL_PathInfo -> SDL_Time
access_time :: SDL3.Sys.Bindgen.Stdinc.SDL_Time
  -- ^ the last time the path was read
  --
  --          [C declaration]: @access_time@, defined at @SDL3\/SDL_filesystem.h 273:14@
  }
  deriving stock ((forall x. SDL_PathInfo -> Rep SDL_PathInfo x)
-> (forall x. Rep SDL_PathInfo x -> SDL_PathInfo)
-> Generic SDL_PathInfo
forall x. Rep SDL_PathInfo x -> SDL_PathInfo
forall x. SDL_PathInfo -> Rep SDL_PathInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_PathInfo -> Rep SDL_PathInfo x
from :: forall x. SDL_PathInfo -> Rep SDL_PathInfo x
$cto :: forall x. Rep SDL_PathInfo x -> SDL_PathInfo
to :: forall x. Rep SDL_PathInfo x -> SDL_PathInfo
BG.Generic, SDL_PathInfo -> SDL_PathInfo -> Bool
(SDL_PathInfo -> SDL_PathInfo -> Bool)
-> (SDL_PathInfo -> SDL_PathInfo -> Bool) -> Eq SDL_PathInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_PathInfo -> SDL_PathInfo -> Bool
== :: SDL_PathInfo -> SDL_PathInfo -> Bool
$c/= :: SDL_PathInfo -> SDL_PathInfo -> Bool
/= :: SDL_PathInfo -> SDL_PathInfo -> Bool
Eq, Int -> SDL_PathInfo -> ShowS
[SDL_PathInfo] -> ShowS
SDL_PathInfo -> String
(Int -> SDL_PathInfo -> ShowS)
-> (SDL_PathInfo -> String)
-> ([SDL_PathInfo] -> ShowS)
-> Show SDL_PathInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_PathInfo -> ShowS
showsPrec :: Int -> SDL_PathInfo -> ShowS
$cshow :: SDL_PathInfo -> String
show :: SDL_PathInfo -> String
$cshowList :: [SDL_PathInfo] -> ShowS
showList :: [SDL_PathInfo] -> ShowS
Show)

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

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

instance Marshal.ReadRaw SDL_PathInfo where
  readRaw :: Ptr SDL_PathInfo -> IO SDL_PathInfo
readRaw =
    \Ptr SDL_PathInfo
ptr0 ->
      (SDL_PathType
 -> Uint64 -> SDL_Time -> SDL_Time -> SDL_Time -> SDL_PathInfo)
-> IO
     (SDL_PathType
      -> Uint64 -> SDL_Time -> SDL_Time -> SDL_Time -> SDL_PathInfo)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure SDL_PathType
-> Uint64 -> SDL_Time -> SDL_Time -> SDL_Time -> SDL_PathInfo
SDL_PathInfo
        IO
  (SDL_PathType
   -> Uint64 -> SDL_Time -> SDL_Time -> SDL_Time -> SDL_PathInfo)
-> IO SDL_PathType
-> IO (Uint64 -> SDL_Time -> SDL_Time -> SDL_Time -> SDL_PathInfo)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "type'"
-> Ptr SDL_PathInfo -> IO (CFieldType SDL_PathInfo "type'")
forall a (field :: Symbol).
(HasCField a field, ReadRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> IO (CFieldType a field)
HasCField.readRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"type'") Ptr SDL_PathInfo
ptr0
        IO (Uint64 -> SDL_Time -> SDL_Time -> SDL_Time -> SDL_PathInfo)
-> IO Uint64
-> IO (SDL_Time -> SDL_Time -> SDL_Time -> SDL_PathInfo)
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_PathInfo -> IO (CFieldType SDL_PathInfo "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_PathInfo
ptr0
        IO (SDL_Time -> SDL_Time -> SDL_Time -> SDL_PathInfo)
-> IO SDL_Time -> IO (SDL_Time -> SDL_Time -> SDL_PathInfo)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "create_time"
-> Ptr SDL_PathInfo -> IO (CFieldType SDL_PathInfo "create_time")
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 @"create_time") Ptr SDL_PathInfo
ptr0
        IO (SDL_Time -> SDL_Time -> SDL_PathInfo)
-> IO SDL_Time -> IO (SDL_Time -> SDL_PathInfo)
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "modify_time"
-> Ptr SDL_PathInfo -> IO (CFieldType SDL_PathInfo "modify_time")
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 @"modify_time") Ptr SDL_PathInfo
ptr0
        IO (SDL_Time -> SDL_PathInfo) -> IO SDL_Time -> IO SDL_PathInfo
forall a b. IO (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Proxy "access_time"
-> Ptr SDL_PathInfo -> IO (CFieldType SDL_PathInfo "access_time")
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 @"access_time") Ptr SDL_PathInfo
ptr0

instance Marshal.WriteRaw SDL_PathInfo where
  writeRaw :: Ptr SDL_PathInfo -> SDL_PathInfo -> IO ()
writeRaw =
    \Ptr SDL_PathInfo
ptr0 ->
      \SDL_PathInfo
s1 ->
        case SDL_PathInfo
s1 of
          SDL_PathInfo SDL_PathType
type'2 Uint64
size3 SDL_Time
create_time4 SDL_Time
modify_time5 SDL_Time
access_time6 ->
            Proxy "type'"
-> Ptr SDL_PathInfo -> CFieldType SDL_PathInfo "type'" -> IO ()
forall a (field :: Symbol).
(HasCField a field, WriteRaw (CFieldType a field)) =>
Proxy field -> Ptr a -> CFieldType a field -> IO ()
HasCField.writeRaw (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"type'") Ptr SDL_PathInfo
ptr0 CFieldType SDL_PathInfo "type'"
SDL_PathType
type'2
              IO () -> IO () -> IO ()
forall a b. IO a -> IO b -> IO b
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>> Proxy "size"
-> Ptr SDL_PathInfo -> CFieldType SDL_PathInfo "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_PathInfo
ptr0 CFieldType SDL_PathInfo "size"
Uint64
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 "create_time"
-> Ptr SDL_PathInfo
-> CFieldType SDL_PathInfo "create_time"
-> 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 @"create_time") Ptr SDL_PathInfo
ptr0 CFieldType SDL_PathInfo "create_time"
SDL_Time
create_time4
              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 "modify_time"
-> Ptr SDL_PathInfo
-> CFieldType SDL_PathInfo "modify_time"
-> 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 @"modify_time") Ptr SDL_PathInfo
ptr0 CFieldType SDL_PathInfo "modify_time"
SDL_Time
modify_time5
              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 "access_time"
-> Ptr SDL_PathInfo
-> CFieldType SDL_PathInfo "access_time"
-> 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 @"access_time") Ptr SDL_PathInfo
ptr0 CFieldType SDL_PathInfo "access_time"
SDL_Time
access_time6

deriving via Marshal.EquivStorable SDL_PathInfo instance BG.Storable SDL_PathInfo

deriving via Struct.IsStructViaReadRaw SDL_PathInfo instance Struct.IsStruct SDL_PathInfo

-- | the path type
--
--     [C declaration]: @type@, defined at @SDL3\/SDL_filesystem.h 269:18@
instance
  (ty ~ SDL_PathType)
  => BG.CompatHasField.HasField "type'" SDL_PathInfo ty
  where
  hasField :: SDL_PathInfo -> (ty -> SDL_PathInfo, ty)
hasField =
    \SDL_PathInfo
x0 ->
      ( \ty
y1 ->
          SDL_PathInfo
            { type' :: SDL_PathType
type' = ty
SDL_PathType
y1
            , size :: Uint64
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_PathInfo
x0
            , create_time :: SDL_Time
create_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"create_time" SDL_PathInfo
x0
            , modify_time :: SDL_Time
modify_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"modify_time" SDL_PathInfo
x0
            , access_time :: SDL_Time
access_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"access_time" SDL_PathInfo
x0
            }
      , forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"type'" SDL_PathInfo
x0
      )

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

instance HasCField.HasCField SDL_PathInfo "type'" where
  type CFieldType SDL_PathInfo "type'" = SDL_PathType

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

-- | the file size in bytes
--
--     [C declaration]: @size@, defined at @SDL3\/SDL_filesystem.h 270:12@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.Uint64)
  => BG.CompatHasField.HasField "size" SDL_PathInfo ty
  where
  hasField :: SDL_PathInfo -> (ty -> SDL_PathInfo, ty)
hasField =
    \SDL_PathInfo
x0 ->
      ( \ty
y1 ->
          SDL_PathInfo
            { size :: Uint64
size = ty
Uint64
y1
            , type' :: SDL_PathType
type' = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"type'" SDL_PathInfo
x0
            , create_time :: SDL_Time
create_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"create_time" SDL_PathInfo
x0
            , modify_time :: SDL_Time
modify_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"modify_time" SDL_PathInfo
x0
            , access_time :: SDL_Time
access_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"access_time" SDL_PathInfo
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_PathInfo
x0
      )

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

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

-- | the time when the path was created
--
--     [C declaration]: @create_time@, defined at @SDL3\/SDL_filesystem.h 271:14@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.SDL_Time)
  => BG.CompatHasField.HasField "create_time" SDL_PathInfo ty
  where
  hasField :: SDL_PathInfo -> (ty -> SDL_PathInfo, ty)
hasField =
    \SDL_PathInfo
x0 ->
      ( \ty
y1 ->
          SDL_PathInfo
            { create_time :: SDL_Time
create_time = ty
SDL_Time
y1
            , type' :: SDL_PathType
type' = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"type'" SDL_PathInfo
x0
            , size :: Uint64
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_PathInfo
x0
            , modify_time :: SDL_Time
modify_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"modify_time" SDL_PathInfo
x0
            , access_time :: SDL_Time
access_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"access_time" SDL_PathInfo
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 @"create_time" SDL_PathInfo
x0
      )

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

instance HasCField.HasCField SDL_PathInfo "create_time" where
  type
    CFieldType SDL_PathInfo "create_time" =
      SDL3.Sys.Bindgen.Stdinc.SDL_Time

  offset# :: Proxy# SDL_PathInfo -> Proxy# "create_time" -> Int
offset# = \Proxy# SDL_PathInfo
_ -> \Proxy# "create_time"
_ -> Int
16

-- | the last time the path was modified
--
--     [C declaration]: @modify_time@, defined at @SDL3\/SDL_filesystem.h 272:14@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.SDL_Time)
  => BG.CompatHasField.HasField "modify_time" SDL_PathInfo ty
  where
  hasField :: SDL_PathInfo -> (ty -> SDL_PathInfo, ty)
hasField =
    \SDL_PathInfo
x0 ->
      ( \ty
y1 ->
          SDL_PathInfo
            { modify_time :: SDL_Time
modify_time = ty
SDL_Time
y1
            , type' :: SDL_PathType
type' = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"type'" SDL_PathInfo
x0
            , size :: Uint64
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_PathInfo
x0
            , create_time :: SDL_Time
create_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"create_time" SDL_PathInfo
x0
            , access_time :: SDL_Time
access_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"access_time" SDL_PathInfo
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 @"modify_time" SDL_PathInfo
x0
      )

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

instance HasCField.HasCField SDL_PathInfo "modify_time" where
  type
    CFieldType SDL_PathInfo "modify_time" =
      SDL3.Sys.Bindgen.Stdinc.SDL_Time

  offset# :: Proxy# SDL_PathInfo -> Proxy# "modify_time" -> Int
offset# = \Proxy# SDL_PathInfo
_ -> \Proxy# "modify_time"
_ -> Int
24

-- | the last time the path was read
--
--     [C declaration]: @access_time@, defined at @SDL3\/SDL_filesystem.h 273:14@
instance
  (ty ~ SDL3.Sys.Bindgen.Stdinc.SDL_Time)
  => BG.CompatHasField.HasField "access_time" SDL_PathInfo ty
  where
  hasField :: SDL_PathInfo -> (ty -> SDL_PathInfo, ty)
hasField =
    \SDL_PathInfo
x0 ->
      ( \ty
y1 ->
          SDL_PathInfo
            { access_time :: SDL_Time
access_time = ty
SDL_Time
y1
            , type' :: SDL_PathType
type' = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"type'" SDL_PathInfo
x0
            , size :: Uint64
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_PathInfo
x0
            , create_time :: SDL_Time
create_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"create_time" SDL_PathInfo
x0
            , modify_time :: SDL_Time
modify_time = forall {k} (x :: k) r a. HasField x r a => r -> a
forall (x :: Symbol) r a. HasField x r a => r -> a
BG.getField @"modify_time" SDL_PathInfo
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 @"access_time" SDL_PathInfo
x0
      )

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

instance HasCField.HasCField SDL_PathInfo "access_time" where
  type
    CFieldType SDL_PathInfo "access_time" =
      SDL3.Sys.Bindgen.Stdinc.SDL_Time

  offset# :: Proxy# SDL_PathInfo -> Proxy# "access_time" -> Int
offset# = \Proxy# SDL_PathInfo
_ -> \Proxy# "access_time"
_ -> Int
32

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

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

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

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

-- | [C declaration]: @macro SDL_GLOB_CASEINSENSITIVE@, defined at @SDL3\/SDL_filesystem.h 286:9@
sDL_GLOB_CASEINSENSITIVE :: BG.CUInt
sDL_GLOB_CASEINSENSITIVE :: CUInt
sDL_GLOB_CASEINSENSITIVE =
  CUInt -> CInt -> ShiftRes CUInt
forall a i. Shift a i => a -> i -> ShiftRes a
(C.Expr.HostPlatform.<<) (CUInt
1 :: BG.CUInt) (CInt
0 :: BG.CInt)

-- | Possible results from an enumeration callback.
--
--     @since 3.2.0
--
--     [See also]: 'SDL_EnumerateDirectoryCallback'
--
--     [C declaration]: @enum SDL_EnumerationResult@, defined at @SDL3\/SDL_filesystem.h 313:14@
newtype SDL_EnumerationResult = SDL_EnumerationResult
  { SDL_EnumerationResult -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_EnumerationResult -> Rep SDL_EnumerationResult x)
-> (forall x. Rep SDL_EnumerationResult x -> SDL_EnumerationResult)
-> Generic SDL_EnumerationResult
forall x. Rep SDL_EnumerationResult x -> SDL_EnumerationResult
forall x. SDL_EnumerationResult -> Rep SDL_EnumerationResult x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_EnumerationResult -> Rep SDL_EnumerationResult x
from :: forall x. SDL_EnumerationResult -> Rep SDL_EnumerationResult x
$cto :: forall x. Rep SDL_EnumerationResult x -> SDL_EnumerationResult
to :: forall x. Rep SDL_EnumerationResult x -> SDL_EnumerationResult
BG.Generic, SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
(SDL_EnumerationResult -> SDL_EnumerationResult -> Bool)
-> (SDL_EnumerationResult -> SDL_EnumerationResult -> Bool)
-> Eq SDL_EnumerationResult
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
== :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
$c/= :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
/= :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
Eq, Eq SDL_EnumerationResult
Eq SDL_EnumerationResult =>
(SDL_EnumerationResult -> SDL_EnumerationResult -> Ordering)
-> (SDL_EnumerationResult -> SDL_EnumerationResult -> Bool)
-> (SDL_EnumerationResult -> SDL_EnumerationResult -> Bool)
-> (SDL_EnumerationResult -> SDL_EnumerationResult -> Bool)
-> (SDL_EnumerationResult -> SDL_EnumerationResult -> Bool)
-> (SDL_EnumerationResult
    -> SDL_EnumerationResult -> SDL_EnumerationResult)
-> (SDL_EnumerationResult
    -> SDL_EnumerationResult -> SDL_EnumerationResult)
-> Ord SDL_EnumerationResult
SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
SDL_EnumerationResult -> SDL_EnumerationResult -> Ordering
SDL_EnumerationResult
-> SDL_EnumerationResult -> SDL_EnumerationResult
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_EnumerationResult -> SDL_EnumerationResult -> Ordering
compare :: SDL_EnumerationResult -> SDL_EnumerationResult -> Ordering
$c< :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
< :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
$c<= :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
<= :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
$c> :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
> :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
$c>= :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
>= :: SDL_EnumerationResult -> SDL_EnumerationResult -> Bool
$cmax :: SDL_EnumerationResult
-> SDL_EnumerationResult -> SDL_EnumerationResult
max :: SDL_EnumerationResult
-> SDL_EnumerationResult -> SDL_EnumerationResult
$cmin :: SDL_EnumerationResult
-> SDL_EnumerationResult -> SDL_EnumerationResult
min :: SDL_EnumerationResult
-> SDL_EnumerationResult -> SDL_EnumerationResult
Ord)
  deriving newtype (FFIType SDL_EnumerationResult -> SDL_EnumerationResult
SDL_EnumerationResult -> FFIType SDL_EnumerationResult
(SDL_EnumerationResult -> FFIType SDL_EnumerationResult)
-> (FFIType SDL_EnumerationResult -> SDL_EnumerationResult)
-> HasFFIType SDL_EnumerationResult
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_EnumerationResult -> FFIType SDL_EnumerationResult
toFFIType :: SDL_EnumerationResult -> FFIType SDL_EnumerationResult
$cfromFFIType :: FFIType SDL_EnumerationResult -> SDL_EnumerationResult
fromFFIType :: FFIType SDL_EnumerationResult -> SDL_EnumerationResult
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_EnumerationResult instance BG.Storable SDL_EnumerationResult

deriving via BG.CUInt instance BG.Prim SDL_EnumerationResult

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

  toCEnum :: CEnumZ SDL_EnumerationResult -> SDL_EnumerationResult
toCEnum = CUInt -> SDL_EnumerationResult
CEnumZ SDL_EnumerationResult -> SDL_EnumerationResult
SDL_EnumerationResult

  fromCEnum :: SDL_EnumerationResult -> CEnumZ SDL_EnumerationResult
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_EnumerationResult -> DeclaredValues SDL_EnumerationResult
declaredValues =
    \proxy SDL_EnumerationResult
_ ->
      [(CEnumZ SDL_EnumerationResult, NonEmpty String)]
-> DeclaredValues SDL_EnumerationResult
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_EnumerationResult
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_ENUM_CONTINUE")
        , (CUInt
CEnumZ SDL_EnumerationResult
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_ENUM_SUCCESS")
        , (CUInt
CEnumZ SDL_EnumerationResult
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_ENUM_FAILURE")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_EnumerationResult where
  minDeclaredValue :: SDL_EnumerationResult
minDeclaredValue = SDL_EnumerationResult
SDL_ENUM_CONTINUE

  maxDeclaredValue :: SDL_EnumerationResult
maxDeclaredValue = SDL_EnumerationResult
SDL_ENUM_FAILURE

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

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

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

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

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

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

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

-- | Value that requests that enumeration continue.
--
--     [C declaration]: @SDL_ENUM_CONTINUE@, defined at @SDL3\/SDL_filesystem.h 315:5@
pattern SDL_ENUM_CONTINUE :: SDL_EnumerationResult
pattern $mSDL_ENUM_CONTINUE :: forall {r}.
SDL_EnumerationResult -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_ENUM_CONTINUE :: SDL_EnumerationResult
SDL_ENUM_CONTINUE = SDL_EnumerationResult 0

-- | Value that requests that enumeration stop, successfully.
--
--     [C declaration]: @SDL_ENUM_SUCCESS@, defined at @SDL3\/SDL_filesystem.h 316:5@
pattern SDL_ENUM_SUCCESS :: SDL_EnumerationResult
pattern $mSDL_ENUM_SUCCESS :: forall {r}.
SDL_EnumerationResult -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_ENUM_SUCCESS :: SDL_EnumerationResult
SDL_ENUM_SUCCESS = SDL_EnumerationResult 1

-- | Value that requests that enumeration stop, as a failure.
--
--     [C declaration]: @SDL_ENUM_FAILURE@, defined at @SDL3\/SDL_filesystem.h 317:5@
pattern SDL_ENUM_FAILURE :: SDL_EnumerationResult
pattern $mSDL_ENUM_FAILURE :: forall {r}.
SDL_EnumerationResult -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_ENUM_FAILURE :: SDL_EnumerationResult
SDL_ENUM_FAILURE = SDL_EnumerationResult 2

-- | Auxiliary type used by 'SDL_EnumerateDirectoryCallback'
--
--     [C declaration]: @SDL_EnumerateDirectoryCallback@, defined at @SDL3\/SDL_filesystem.h 344:41@
newtype SDL_EnumerateDirectoryCallback_Aux = SDL_EnumerateDirectoryCallback_Aux
  { SDL_EnumerateDirectoryCallback_Aux
-> Ptr Void
-> PtrConst CChar
-> PtrConst CChar
-> IO SDL_EnumerationResult
unwrap
      :: BG.Ptr BG.Void
      -> PtrConst.PtrConst BG.CChar
      -> PtrConst.PtrConst BG.CChar
      -> IO SDL_EnumerationResult
  }
  deriving stock ((forall x.
 SDL_EnumerateDirectoryCallback_Aux
 -> Rep SDL_EnumerateDirectoryCallback_Aux x)
-> (forall x.
    Rep SDL_EnumerateDirectoryCallback_Aux x
    -> SDL_EnumerateDirectoryCallback_Aux)
-> Generic SDL_EnumerateDirectoryCallback_Aux
forall x.
Rep SDL_EnumerateDirectoryCallback_Aux x
-> SDL_EnumerateDirectoryCallback_Aux
forall x.
SDL_EnumerateDirectoryCallback_Aux
-> Rep SDL_EnumerateDirectoryCallback_Aux x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_EnumerateDirectoryCallback_Aux
-> Rep SDL_EnumerateDirectoryCallback_Aux x
from :: forall x.
SDL_EnumerateDirectoryCallback_Aux
-> Rep SDL_EnumerateDirectoryCallback_Aux x
$cto :: forall x.
Rep SDL_EnumerateDirectoryCallback_Aux x
-> SDL_EnumerateDirectoryCallback_Aux
to :: forall x.
Rep SDL_EnumerateDirectoryCallback_Aux x
-> SDL_EnumerateDirectoryCallback_Aux
BG.Generic)

-- __unique:__ @toSDL_EnumerateDirectoryCallback_Aux@
foreign import ccall safe "wrapper"
  hs_bindgen_a7027a1d7d8836f6_base
    :: (BG.Ptr BG.Void -> BG.Ptr BG.Void -> BG.Ptr BG.Void -> IO BG.CUInt)
    -> IO (BG.FunPtr (BG.Ptr BG.Void -> BG.Ptr BG.Void -> BG.Ptr BG.Void -> IO BG.CUInt))

-- __unique:__ @toSDL_EnumerateDirectoryCallback_Aux@
hs_bindgen_a7027a1d7d8836f6
  :: SDL_EnumerateDirectoryCallback_Aux
  -> IO (BG.FunPtr SDL_EnumerateDirectoryCallback_Aux)
hs_bindgen_a7027a1d7d8836f6 :: SDL_EnumerateDirectoryCallback_Aux
-> IO (FunPtr SDL_EnumerateDirectoryCallback_Aux)
hs_bindgen_a7027a1d7d8836f6 =
  \SDL_EnumerateDirectoryCallback_Aux
fun0 ->
    (FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO CUInt)
 -> FunPtr SDL_EnumerateDirectoryCallback_Aux)
-> IO (FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO CUInt))
-> IO (FunPtr SDL_EnumerateDirectoryCallback_Aux)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
      FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO CUInt)
-> FunPtr SDL_EnumerateDirectoryCallback_Aux
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr
      ( (Ptr Void -> Ptr Void -> Ptr Void -> IO CUInt)
-> IO (FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO CUInt))
hs_bindgen_a7027a1d7d8836f6_base
          ( \Ptr Void
x1 ->
              \Ptr Void
x2 ->
                \Ptr Void
x3 ->
                  (SDL_EnumerationResult -> CUInt)
-> IO SDL_EnumerationResult -> IO CUInt
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
                    SDL_EnumerationResult -> CUInt
SDL_EnumerationResult -> FFIType SDL_EnumerationResult
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType
                    (forall {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_EnumerateDirectoryCallback_Aux
fun0 (FFIType (Ptr Void) -> Ptr Void
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (Ptr Void)
x1) (FFIType (PtrConst CChar) -> PtrConst CChar
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (PtrConst CChar)
x2) (FFIType (PtrConst CChar) -> PtrConst CChar
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType Ptr Void
FFIType (PtrConst CChar)
x3))
          )
      )

-- __unique:__ @fromSDL_EnumerateDirectoryCallback_Aux@
foreign import ccall safe "dynamic"
  hs_bindgen_62890ffdaab536a5_base
    :: BG.FunPtr (BG.Ptr BG.Void -> BG.Ptr BG.Void -> BG.Ptr BG.Void -> IO BG.CUInt)
    -> BG.Ptr BG.Void
    -> BG.Ptr BG.Void
    -> BG.Ptr BG.Void
    -> IO BG.CUInt

-- __unique:__ @fromSDL_EnumerateDirectoryCallback_Aux@
hs_bindgen_62890ffdaab536a5
  :: BG.FunPtr SDL_EnumerateDirectoryCallback_Aux
  -> SDL_EnumerateDirectoryCallback_Aux
hs_bindgen_62890ffdaab536a5 :: FunPtr SDL_EnumerateDirectoryCallback_Aux
-> SDL_EnumerateDirectoryCallback_Aux
hs_bindgen_62890ffdaab536a5 =
  \FunPtr SDL_EnumerateDirectoryCallback_Aux
funPtr0 ->
    (Ptr Void
 -> PtrConst CChar -> PtrConst CChar -> IO SDL_EnumerationResult)
-> SDL_EnumerateDirectoryCallback_Aux
SDL_EnumerateDirectoryCallback_Aux
      ( \Ptr Void
x1 ->
          \PtrConst CChar
x2 ->
            \PtrConst CChar
x3 ->
              (CUInt -> SDL_EnumerationResult)
-> IO CUInt -> IO SDL_EnumerationResult
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
                CUInt -> SDL_EnumerationResult
FFIType SDL_EnumerationResult -> SDL_EnumerationResult
forall a. HasFFIType a => FFIType a -> a
BG.fromFFIType
                ( FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO CUInt)
-> Ptr Void -> Ptr Void -> Ptr Void -> IO CUInt
hs_bindgen_62890ffdaab536a5_base
                    (FunPtr SDL_EnumerateDirectoryCallback_Aux
-> FunPtr (Ptr Void -> Ptr Void -> Ptr Void -> IO CUInt)
forall a b. FunPtr a -> FunPtr b
BG.castFunPtr FunPtr SDL_EnumerateDirectoryCallback_Aux
funPtr0)
                    (Ptr Void -> FFIType (Ptr Void)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType Ptr Void
x1)
                    (PtrConst CChar -> FFIType (PtrConst CChar)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType PtrConst CChar
x2)
                    (PtrConst CChar -> FFIType (PtrConst CChar)
forall a. HasFFIType a => a -> FFIType a
BG.toFFIType PtrConst CChar
x3)
                )
      )

instance BG.ToFunPtr SDL_EnumerateDirectoryCallback_Aux where
  toFunPtr :: SDL_EnumerateDirectoryCallback_Aux
-> IO (FunPtr SDL_EnumerateDirectoryCallback_Aux)
toFunPtr = SDL_EnumerateDirectoryCallback_Aux
-> IO (FunPtr SDL_EnumerateDirectoryCallback_Aux)
hs_bindgen_a7027a1d7d8836f6

instance BG.FromFunPtr SDL_EnumerateDirectoryCallback_Aux where
  fromFunPtr :: FunPtr SDL_EnumerateDirectoryCallback_Aux
-> SDL_EnumerateDirectoryCallback_Aux
fromFunPtr = FunPtr SDL_EnumerateDirectoryCallback_Aux
-> SDL_EnumerateDirectoryCallback_Aux
hs_bindgen_62890ffdaab536a5

instance
  ( ty
      ~ ( BG.Ptr BG.Void
          -> PtrConst.PtrConst BG.CChar
          -> PtrConst.PtrConst BG.CChar
          -> IO SDL_EnumerationResult
        )
  )
  => BG.CompatHasField.HasField "unwrap" SDL_EnumerateDirectoryCallback_Aux ty
  where
  hasField :: SDL_EnumerateDirectoryCallback_Aux
-> (ty -> SDL_EnumerateDirectoryCallback_Aux, ty)
hasField =
    \SDL_EnumerateDirectoryCallback_Aux
x0 ->
      ( \ty
y1 ->
          SDL_EnumerateDirectoryCallback_Aux{unwrap :: Ptr Void
-> PtrConst CChar -> PtrConst CChar -> IO SDL_EnumerationResult
unwrap = ty
Ptr Void
-> PtrConst CChar -> PtrConst CChar -> IO SDL_EnumerationResult
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_EnumerateDirectoryCallback_Aux
x0
      )

instance
  ( ty
      ~ ( BG.Ptr BG.Void
          -> PtrConst.PtrConst BG.CChar
          -> PtrConst.PtrConst BG.CChar
          -> IO SDL_EnumerationResult
        )
  )
  => BG.HasField "unwrap" (BG.Ptr SDL_EnumerateDirectoryCallback_Aux) (BG.Ptr ty)
  where
  getField :: Ptr SDL_EnumerateDirectoryCallback_Aux -> Ptr ty
getField = Proxy "unwrap"
-> Ptr SDL_EnumerateDirectoryCallback_Aux
-> Ptr (CFieldType SDL_EnumerateDirectoryCallback_Aux "unwrap")
forall a (field :: Symbol).
HasCField a field =>
Proxy field -> Ptr a -> Ptr (CFieldType a field)
HasCField.fromPtr (forall {k} (t :: k). Proxy t
forall (t :: Symbol). Proxy t
BG.Proxy @"unwrap")

instance HasCField.HasCField SDL_EnumerateDirectoryCallback_Aux "unwrap" where
  type
    CFieldType SDL_EnumerateDirectoryCallback_Aux "unwrap" =
      BG.Ptr BG.Void
      -> PtrConst.PtrConst BG.CChar
      -> PtrConst.PtrConst BG.CChar
      -> IO SDL_EnumerationResult

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

-- | Callback for directory enumeration.
--
--     Enumeration of directory entries will continue until either all entries have been provided to the callback, or the callback has requested a stop through its return value.
--
--     Returning SDL_ENUM_CONTINUE will let enumeration proceed, calling the callback with further entries. SDL_ENUM_SUCCESS and SDL_ENUM_FAILURE will terminate the enumeration early, and dictate the return value of the enumeration function itself.
--
--     @dirname@ is guaranteed to end with a path separator (\'\\\' on Windows, \'\/\' on most other platforms).
--
--     [@userdata@]: an app-controlled pointer that is passed to the callback.
--
--     [@dirname@]: the directory that is being enumerated.
--
--     [@fname@]: the next entry in the enumeration.
--
--     [Returns]: how the enumeration should proceed.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_EnumerateDirectory'
--
--     [C declaration]: @SDL_EnumerateDirectoryCallback@, defined at @SDL3\/SDL_filesystem.h 344:41@
newtype SDL_EnumerateDirectoryCallback = SDL_EnumerateDirectoryCallback
  { SDL_EnumerateDirectoryCallback
-> FunPtr SDL_EnumerateDirectoryCallback_Aux
unwrap :: BG.FunPtr SDL_EnumerateDirectoryCallback_Aux
  }
  deriving stock ((forall x.
 SDL_EnumerateDirectoryCallback
 -> Rep SDL_EnumerateDirectoryCallback x)
-> (forall x.
    Rep SDL_EnumerateDirectoryCallback x
    -> SDL_EnumerateDirectoryCallback)
-> Generic SDL_EnumerateDirectoryCallback
forall x.
Rep SDL_EnumerateDirectoryCallback x
-> SDL_EnumerateDirectoryCallback
forall x.
SDL_EnumerateDirectoryCallback
-> Rep SDL_EnumerateDirectoryCallback x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
SDL_EnumerateDirectoryCallback
-> Rep SDL_EnumerateDirectoryCallback x
from :: forall x.
SDL_EnumerateDirectoryCallback
-> Rep SDL_EnumerateDirectoryCallback x
$cto :: forall x.
Rep SDL_EnumerateDirectoryCallback x
-> SDL_EnumerateDirectoryCallback
to :: forall x.
Rep SDL_EnumerateDirectoryCallback x
-> SDL_EnumerateDirectoryCallback
BG.Generic, SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
(SDL_EnumerateDirectoryCallback
 -> SDL_EnumerateDirectoryCallback -> Bool)
-> (SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback -> Bool)
-> Eq SDL_EnumerateDirectoryCallback
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
== :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
$c/= :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
/= :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
Eq, Eq SDL_EnumerateDirectoryCallback
Eq SDL_EnumerateDirectoryCallback =>
(SDL_EnumerateDirectoryCallback
 -> SDL_EnumerateDirectoryCallback -> Ordering)
-> (SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback -> Bool)
-> (SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback -> Bool)
-> (SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback -> Bool)
-> (SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback -> Bool)
-> (SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback)
-> (SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback)
-> Ord SDL_EnumerateDirectoryCallback
SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Ordering
SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> SDL_EnumerateDirectoryCallback
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_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Ordering
compare :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Ordering
$c< :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
< :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
$c<= :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
<= :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
$c> :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
> :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
$c>= :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
>= :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> Bool
$cmax :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> SDL_EnumerateDirectoryCallback
max :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> SDL_EnumerateDirectoryCallback
$cmin :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> SDL_EnumerateDirectoryCallback
min :: SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> SDL_EnumerateDirectoryCallback
Ord, Int -> SDL_EnumerateDirectoryCallback -> ShowS
[SDL_EnumerateDirectoryCallback] -> ShowS
SDL_EnumerateDirectoryCallback -> String
(Int -> SDL_EnumerateDirectoryCallback -> ShowS)
-> (SDL_EnumerateDirectoryCallback -> String)
-> ([SDL_EnumerateDirectoryCallback] -> ShowS)
-> Show SDL_EnumerateDirectoryCallback
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SDL_EnumerateDirectoryCallback -> ShowS
showsPrec :: Int -> SDL_EnumerateDirectoryCallback -> ShowS
$cshow :: SDL_EnumerateDirectoryCallback -> String
show :: SDL_EnumerateDirectoryCallback -> String
$cshowList :: [SDL_EnumerateDirectoryCallback] -> ShowS
showList :: [SDL_EnumerateDirectoryCallback] -> ShowS
Show)
  deriving newtype
    ( FFIType SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback
SDL_EnumerateDirectoryCallback
-> FFIType SDL_EnumerateDirectoryCallback
(SDL_EnumerateDirectoryCallback
 -> FFIType SDL_EnumerateDirectoryCallback)
-> (FFIType SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback)
-> HasFFIType SDL_EnumerateDirectoryCallback
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_EnumerateDirectoryCallback
-> FFIType SDL_EnumerateDirectoryCallback
toFFIType :: SDL_EnumerateDirectoryCallback
-> FFIType SDL_EnumerateDirectoryCallback
$cfromFFIType :: FFIType SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback
fromFFIType :: FFIType SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback
BG.HasFFIType
    , Ptr SDL_EnumerateDirectoryCallback
-> IO SDL_EnumerateDirectoryCallback
Ptr SDL_EnumerateDirectoryCallback
-> Int -> IO SDL_EnumerateDirectoryCallback
Ptr SDL_EnumerateDirectoryCallback
-> Int -> SDL_EnumerateDirectoryCallback -> IO ()
Ptr SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> IO ()
SDL_EnumerateDirectoryCallback -> Int
(SDL_EnumerateDirectoryCallback -> Int)
-> (SDL_EnumerateDirectoryCallback -> Int)
-> (Ptr SDL_EnumerateDirectoryCallback
    -> Int -> IO SDL_EnumerateDirectoryCallback)
-> (Ptr SDL_EnumerateDirectoryCallback
    -> Int -> SDL_EnumerateDirectoryCallback -> IO ())
-> (forall b. Ptr b -> Int -> IO SDL_EnumerateDirectoryCallback)
-> (forall b.
    Ptr b -> Int -> SDL_EnumerateDirectoryCallback -> IO ())
-> (Ptr SDL_EnumerateDirectoryCallback
    -> IO SDL_EnumerateDirectoryCallback)
-> (Ptr SDL_EnumerateDirectoryCallback
    -> SDL_EnumerateDirectoryCallback -> IO ())
-> Storable SDL_EnumerateDirectoryCallback
forall b. Ptr b -> Int -> IO SDL_EnumerateDirectoryCallback
forall b. Ptr b -> Int -> SDL_EnumerateDirectoryCallback -> 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_EnumerateDirectoryCallback -> Int
sizeOf :: SDL_EnumerateDirectoryCallback -> Int
$calignment :: SDL_EnumerateDirectoryCallback -> Int
alignment :: SDL_EnumerateDirectoryCallback -> Int
$cpeekElemOff :: Ptr SDL_EnumerateDirectoryCallback
-> Int -> IO SDL_EnumerateDirectoryCallback
peekElemOff :: Ptr SDL_EnumerateDirectoryCallback
-> Int -> IO SDL_EnumerateDirectoryCallback
$cpokeElemOff :: Ptr SDL_EnumerateDirectoryCallback
-> Int -> SDL_EnumerateDirectoryCallback -> IO ()
pokeElemOff :: Ptr SDL_EnumerateDirectoryCallback
-> Int -> SDL_EnumerateDirectoryCallback -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO SDL_EnumerateDirectoryCallback
peekByteOff :: forall b. Ptr b -> Int -> IO SDL_EnumerateDirectoryCallback
$cpokeByteOff :: forall b. Ptr b -> Int -> SDL_EnumerateDirectoryCallback -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> SDL_EnumerateDirectoryCallback -> IO ()
$cpeek :: Ptr SDL_EnumerateDirectoryCallback
-> IO SDL_EnumerateDirectoryCallback
peek :: Ptr SDL_EnumerateDirectoryCallback
-> IO SDL_EnumerateDirectoryCallback
$cpoke :: Ptr SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> IO ()
poke :: Ptr SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> IO ()
BG.Storable
    , Ptr SDL_EnumerateDirectoryCallback
-> IO SDL_EnumerateDirectoryCallback
(Ptr SDL_EnumerateDirectoryCallback
 -> IO SDL_EnumerateDirectoryCallback)
-> ReadRaw SDL_EnumerateDirectoryCallback
forall a. (Ptr a -> IO a) -> ReadRaw a
$creadRaw :: Ptr SDL_EnumerateDirectoryCallback
-> IO SDL_EnumerateDirectoryCallback
readRaw :: Ptr SDL_EnumerateDirectoryCallback
-> IO SDL_EnumerateDirectoryCallback
Marshal.ReadRaw
    , Proxy SDL_EnumerateDirectoryCallback -> Int
(Proxy SDL_EnumerateDirectoryCallback -> Int)
-> (Proxy SDL_EnumerateDirectoryCallback -> Int)
-> StaticSize SDL_EnumerateDirectoryCallback
forall a. (Proxy a -> Int) -> (Proxy a -> Int) -> StaticSize a
$cstaticSizeOf :: Proxy SDL_EnumerateDirectoryCallback -> Int
staticSizeOf :: Proxy SDL_EnumerateDirectoryCallback -> Int
$cstaticAlignment :: Proxy SDL_EnumerateDirectoryCallback -> Int
staticAlignment :: Proxy SDL_EnumerateDirectoryCallback -> Int
Marshal.StaticSize
    , Ptr SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> IO ()
(Ptr SDL_EnumerateDirectoryCallback
 -> SDL_EnumerateDirectoryCallback -> IO ())
-> WriteRaw SDL_EnumerateDirectoryCallback
forall a. (Ptr a -> a -> IO ()) -> WriteRaw a
$cwriteRaw :: Ptr SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> IO ()
writeRaw :: Ptr SDL_EnumerateDirectoryCallback
-> SDL_EnumerateDirectoryCallback -> IO ()
Marshal.WriteRaw
    )

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

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

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