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

-- | Process control support.
--
--     These functions provide a cross-platform way to spawn and manage OS-level processes.
--
--     You can create a new subprocess with @SDL_CreateProcess()@ and optionally read and write to it using @SDL_ReadProcess()@ or @SDL_GetProcessInput()@ and @SDL_GetProcessOutput()@. If more advanced functionality like chaining input between processes is necessary, you can use @SDL_CreateProcessWithProperties()@.
--
--     You can get the status of a created process with @SDL_WaitProcess()@, or terminate the process with @SDL_KillProcess()@.
--
--     Don\'t forget to call @SDL_DestroyProcess()@ to clean up, whether the process process was killed, terminated on its own, or is still running! An opaque handle representing a system process.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_CreateProcess'
module SDL3.Sys.Bindgen.Process (
  SDL3.Sys.Bindgen.Process.SDL_Process,
  SDL3.Sys.Bindgen.Process.SDL_ProcessIO (..),
  pattern SDL3.Sys.Bindgen.Process.SDL_PROCESS_STDIO_INHERITED,
  pattern SDL3.Sys.Bindgen.Process.SDL_PROCESS_STDIO_NULL,
  pattern SDL3.Sys.Bindgen.Process.SDL_PROCESS_STDIO_APP,
  pattern SDL3.Sys.Bindgen.Process.SDL_PROCESS_STDIO_REDIRECT,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_ARGS_POINTER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_ENVIRONMENT_POINTER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRING,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_STDIN_NUMBER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_STDIN_POINTER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_STDOUT_NUMBER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_STDOUT_POINTER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_STDERR_NUMBER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_STDERR_POINTER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_STDERR_TO_STDOUT_BOOLEAN,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_BACKGROUND_BOOLEAN,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_CREATE_CMDLINE_STRING,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_PID_NUMBER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_STDIN_POINTER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_STDOUT_POINTER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_STDERR_POINTER,
  SDL3.Sys.Bindgen.Process.sDL_PROP_PROCESS_BACKGROUND_BOOLEAN,
)
where

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

import HsBindgen.Runtime.CEnum qualified as CEnum
import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField

-- | [C declaration]: @struct SDL_Process@, defined at @SDL3\/SDL_process.h 64:16@
data SDL_Process

-- | Description of where standard I\/O should be directed when creating a process.
--
--     If a standard I\/O stream is set to SDL_PROCESS_STDIO_INHERITED, it will go to the same place as the application\'s I\/O stream. This is the default for standard output and standard error.
--
--     If a standard I\/O stream is set to SDL_PROCESS_STDIO_NULL, it is connected to @NUL:@ on Windows and @\/dev\/null@ on POSIX systems. This is the default for standard input.
--
--     If a standard I\/O stream is set to SDL_PROCESS_STDIO_APP, it is connected to a new SDL_IOStream that is available to the application. Standard input will be available as @'sDL_PROP_PROCESS_STDIN_POINTER'@ and allows @SDL_GetProcessInput()@, standard output will be available as @'sDL_PROP_PROCESS_STDOUT_POINTER'@ and allows @SDL_ReadProcess()@ and @SDL_GetProcessOutput()@, and standard error will be available as @'sDL_PROP_PROCESS_STDERR_POINTER'@ in the properties for the created process.
--
--     If a standard I\/O stream is set to SDL_PROCESS_STDIO_REDIRECT, it is connected to an existing SDL_IOStream provided by the application. Standard input is provided using @'sDL_PROP_PROCESS_CREATE_STDIN_POINTER'@, standard output is provided using @'sDL_PROP_PROCESS_CREATE_STDOUT_POINTER'@, and standard error is provided using @'sDL_PROP_PROCESS_CREATE_STDERR_POINTER'@ in the creation properties. These existing streams should be closed by the application once the new process is created.
--
--     In order to use an SDL_IOStream with SDL_PROCESS_STDIO_REDIRECT, it must have @SDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER@ or @SDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER@ set. This is true for streams representing files and process I\/O.
--
--     @since 3.2.0
--
--     [See also]: 'sDL_CreateProcessWithProperties', 'sDL_GetProcessProperties', 'sDL_ReadProcess', 'sDL_GetProcessInput', 'sDL_GetProcessOutput'
--
--     [C declaration]: @enum SDL_ProcessIO@, defined at @SDL3\/SDL_process.h 150:14@
newtype SDL_ProcessIO = SDL_ProcessIO
  { SDL_ProcessIO -> CUInt
unwrap :: BG.CUInt
  }
  deriving stock ((forall x. SDL_ProcessIO -> Rep SDL_ProcessIO x)
-> (forall x. Rep SDL_ProcessIO x -> SDL_ProcessIO)
-> Generic SDL_ProcessIO
forall x. Rep SDL_ProcessIO x -> SDL_ProcessIO
forall x. SDL_ProcessIO -> Rep SDL_ProcessIO x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SDL_ProcessIO -> Rep SDL_ProcessIO x
from :: forall x. SDL_ProcessIO -> Rep SDL_ProcessIO x
$cto :: forall x. Rep SDL_ProcessIO x -> SDL_ProcessIO
to :: forall x. Rep SDL_ProcessIO x -> SDL_ProcessIO
BG.Generic, SDL_ProcessIO -> SDL_ProcessIO -> Bool
(SDL_ProcessIO -> SDL_ProcessIO -> Bool)
-> (SDL_ProcessIO -> SDL_ProcessIO -> Bool) -> Eq SDL_ProcessIO
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
== :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
$c/= :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
/= :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
Eq, Eq SDL_ProcessIO
Eq SDL_ProcessIO =>
(SDL_ProcessIO -> SDL_ProcessIO -> Ordering)
-> (SDL_ProcessIO -> SDL_ProcessIO -> Bool)
-> (SDL_ProcessIO -> SDL_ProcessIO -> Bool)
-> (SDL_ProcessIO -> SDL_ProcessIO -> Bool)
-> (SDL_ProcessIO -> SDL_ProcessIO -> Bool)
-> (SDL_ProcessIO -> SDL_ProcessIO -> SDL_ProcessIO)
-> (SDL_ProcessIO -> SDL_ProcessIO -> SDL_ProcessIO)
-> Ord SDL_ProcessIO
SDL_ProcessIO -> SDL_ProcessIO -> Bool
SDL_ProcessIO -> SDL_ProcessIO -> Ordering
SDL_ProcessIO -> SDL_ProcessIO -> SDL_ProcessIO
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_ProcessIO -> SDL_ProcessIO -> Ordering
compare :: SDL_ProcessIO -> SDL_ProcessIO -> Ordering
$c< :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
< :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
$c<= :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
<= :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
$c> :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
> :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
$c>= :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
>= :: SDL_ProcessIO -> SDL_ProcessIO -> Bool
$cmax :: SDL_ProcessIO -> SDL_ProcessIO -> SDL_ProcessIO
max :: SDL_ProcessIO -> SDL_ProcessIO -> SDL_ProcessIO
$cmin :: SDL_ProcessIO -> SDL_ProcessIO -> SDL_ProcessIO
min :: SDL_ProcessIO -> SDL_ProcessIO -> SDL_ProcessIO
Ord)
  deriving newtype (FFIType SDL_ProcessIO -> SDL_ProcessIO
SDL_ProcessIO -> FFIType SDL_ProcessIO
(SDL_ProcessIO -> FFIType SDL_ProcessIO)
-> (FFIType SDL_ProcessIO -> SDL_ProcessIO)
-> HasFFIType SDL_ProcessIO
forall a. (a -> FFIType a) -> (FFIType a -> a) -> HasFFIType a
$ctoFFIType :: SDL_ProcessIO -> FFIType SDL_ProcessIO
toFFIType :: SDL_ProcessIO -> FFIType SDL_ProcessIO
$cfromFFIType :: FFIType SDL_ProcessIO -> SDL_ProcessIO
fromFFIType :: FFIType SDL_ProcessIO -> SDL_ProcessIO
BG.HasFFIType)

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

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

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

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

deriving via Marshal.EquivStorable SDL_ProcessIO instance BG.Storable SDL_ProcessIO

deriving via BG.CUInt instance BG.Prim SDL_ProcessIO

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

  toCEnum :: CEnumZ SDL_ProcessIO -> SDL_ProcessIO
toCEnum = CUInt -> SDL_ProcessIO
CEnumZ SDL_ProcessIO -> SDL_ProcessIO
SDL_ProcessIO

  fromCEnum :: SDL_ProcessIO -> CEnumZ SDL_ProcessIO
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_ProcessIO -> DeclaredValues SDL_ProcessIO
declaredValues =
    \proxy SDL_ProcessIO
_ ->
      [(CEnumZ SDL_ProcessIO, NonEmpty String)]
-> DeclaredValues SDL_ProcessIO
forall a.
Ord (CEnumZ a) =>
[(CEnumZ a, NonEmpty String)] -> DeclaredValues a
CEnum.declaredValuesFromList
        [ (CUInt
CEnumZ SDL_ProcessIO
0, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PROCESS_STDIO_INHERITED")
        , (CUInt
CEnumZ SDL_ProcessIO
1, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PROCESS_STDIO_NULL")
        , (CUInt
CEnumZ SDL_ProcessIO
2, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PROCESS_STDIO_APP")
        , (CUInt
CEnumZ SDL_ProcessIO
3, String -> NonEmpty String
forall a. a -> NonEmpty a
BG.singleton String
"SDL_PROCESS_STDIO_REDIRECT")
        ]

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

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

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

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

instance CEnum.SequentialCEnum SDL_ProcessIO where
  minDeclaredValue :: SDL_ProcessIO
minDeclaredValue = SDL_ProcessIO
SDL_PROCESS_STDIO_INHERITED

  maxDeclaredValue :: SDL_ProcessIO
maxDeclaredValue = SDL_ProcessIO
SDL_PROCESS_STDIO_REDIRECT

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

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

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

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

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

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

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

-- | The I\/O stream is inherited from the application.
--
--     [C declaration]: @SDL_PROCESS_STDIO_INHERITED@, defined at @SDL3\/SDL_process.h 152:5@
pattern SDL_PROCESS_STDIO_INHERITED :: SDL_ProcessIO
pattern $mSDL_PROCESS_STDIO_INHERITED :: forall {r}. SDL_ProcessIO -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PROCESS_STDIO_INHERITED :: SDL_ProcessIO
SDL_PROCESS_STDIO_INHERITED = SDL_ProcessIO 0

-- | The I\/O stream is ignored.
--
--     [C declaration]: @SDL_PROCESS_STDIO_NULL@, defined at @SDL3\/SDL_process.h 153:5@
pattern SDL_PROCESS_STDIO_NULL :: SDL_ProcessIO
pattern $mSDL_PROCESS_STDIO_NULL :: forall {r}. SDL_ProcessIO -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PROCESS_STDIO_NULL :: SDL_ProcessIO
SDL_PROCESS_STDIO_NULL = SDL_ProcessIO 1

-- | The I\/O stream is connected to a new SDL_IOStream that the application can read or write
--
--     [C declaration]: @SDL_PROCESS_STDIO_APP@, defined at @SDL3\/SDL_process.h 154:5@
pattern SDL_PROCESS_STDIO_APP :: SDL_ProcessIO
pattern $mSDL_PROCESS_STDIO_APP :: forall {r}. SDL_ProcessIO -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PROCESS_STDIO_APP :: SDL_ProcessIO
SDL_PROCESS_STDIO_APP = SDL_ProcessIO 2

-- | The I\/O stream is redirected to an existing SDL_IOStream.
--
--     [C declaration]: @SDL_PROCESS_STDIO_REDIRECT@, defined at @SDL3\/SDL_process.h 155:5@
pattern SDL_PROCESS_STDIO_REDIRECT :: SDL_ProcessIO
pattern $mSDL_PROCESS_STDIO_REDIRECT :: forall {r}. SDL_ProcessIO -> ((# #) -> r) -> ((# #) -> r) -> r
$bSDL_PROCESS_STDIO_REDIRECT :: SDL_ProcessIO
SDL_PROCESS_STDIO_REDIRECT = SDL_ProcessIO 3

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_ARGS_POINTER@, literal @\"SDL.process.create.args\"@, defined at @SDL3\/SDL_process.h 229:9@
sDL_PROP_PROCESS_CREATE_ARGS_POINTER :: BG.ByteString
sDL_PROP_PROCESS_CREATE_ARGS_POINTER :: ByteString
sDL_PROP_PROCESS_CREATE_ARGS_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x61
    , Word8
0x72
    , Word8
0x67
    , Word8
0x73
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_ENVIRONMENT_POINTER@, literal @\"SDL.process.create.environment\"@, defined at @SDL3\/SDL_process.h 230:9@
sDL_PROP_PROCESS_CREATE_ENVIRONMENT_POINTER :: BG.ByteString
sDL_PROP_PROCESS_CREATE_ENVIRONMENT_POINTER :: ByteString
sDL_PROP_PROCESS_CREATE_ENVIRONMENT_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x65
    , Word8
0x6E
    , Word8
0x76
    , Word8
0x69
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x6E
    , Word8
0x6D
    , Word8
0x65
    , Word8
0x6E
    , Word8
0x74
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRING@, literal @\"SDL.process.create.working_directory\"@, defined at @SDL3\/SDL_process.h 231:9@
sDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRING :: BG.ByteString
sDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRING :: ByteString
sDL_PROP_PROCESS_CREATE_WORKING_DIRECTORY_STRING =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x77
    , Word8
0x6F
    , Word8
0x72
    , Word8
0x6B
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x67
    , Word8
0x5F
    , Word8
0x64
    , Word8
0x69
    , Word8
0x72
    , Word8
0x65
    , Word8
0x63
    , Word8
0x74
    , Word8
0x6F
    , Word8
0x72
    , Word8
0x79
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_STDIN_NUMBER@, literal @\"SDL.process.create.stdin_option\"@, defined at @SDL3\/SDL_process.h 232:9@
sDL_PROP_PROCESS_CREATE_STDIN_NUMBER :: BG.ByteString
sDL_PROP_PROCESS_CREATE_STDIN_NUMBER :: ByteString
sDL_PROP_PROCESS_CREATE_STDIN_NUMBER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x5F
    , Word8
0x6F
    , Word8
0x70
    , Word8
0x74
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x6E
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_STDIN_POINTER@, literal @\"SDL.process.create.stdin_source\"@, defined at @SDL3\/SDL_process.h 233:9@
sDL_PROP_PROCESS_CREATE_STDIN_POINTER :: BG.ByteString
sDL_PROP_PROCESS_CREATE_STDIN_POINTER :: ByteString
sDL_PROP_PROCESS_CREATE_STDIN_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x5F
    , Word8
0x73
    , Word8
0x6F
    , Word8
0x75
    , Word8
0x72
    , Word8
0x63
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_STDOUT_NUMBER@, literal @\"SDL.process.create.stdout_option\"@, defined at @SDL3\/SDL_process.h 234:9@
sDL_PROP_PROCESS_CREATE_STDOUT_NUMBER :: BG.ByteString
sDL_PROP_PROCESS_CREATE_STDOUT_NUMBER :: ByteString
sDL_PROP_PROCESS_CREATE_STDOUT_NUMBER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x6F
    , Word8
0x75
    , Word8
0x74
    , Word8
0x5F
    , Word8
0x6F
    , Word8
0x70
    , Word8
0x74
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x6E
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_STDOUT_POINTER@, literal @\"SDL.process.create.stdout_source\"@, defined at @SDL3\/SDL_process.h 235:9@
sDL_PROP_PROCESS_CREATE_STDOUT_POINTER :: BG.ByteString
sDL_PROP_PROCESS_CREATE_STDOUT_POINTER :: ByteString
sDL_PROP_PROCESS_CREATE_STDOUT_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x6F
    , Word8
0x75
    , Word8
0x74
    , Word8
0x5F
    , Word8
0x73
    , Word8
0x6F
    , Word8
0x75
    , Word8
0x72
    , Word8
0x63
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_STDERR_NUMBER@, literal @\"SDL.process.create.stderr_option\"@, defined at @SDL3\/SDL_process.h 236:9@
sDL_PROP_PROCESS_CREATE_STDERR_NUMBER :: BG.ByteString
sDL_PROP_PROCESS_CREATE_STDERR_NUMBER :: ByteString
sDL_PROP_PROCESS_CREATE_STDERR_NUMBER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x65
    , Word8
0x72
    , Word8
0x72
    , Word8
0x5F
    , Word8
0x6F
    , Word8
0x70
    , Word8
0x74
    , Word8
0x69
    , Word8
0x6F
    , Word8
0x6E
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_STDERR_POINTER@, literal @\"SDL.process.create.stderr_source\"@, defined at @SDL3\/SDL_process.h 237:9@
sDL_PROP_PROCESS_CREATE_STDERR_POINTER :: BG.ByteString
sDL_PROP_PROCESS_CREATE_STDERR_POINTER :: ByteString
sDL_PROP_PROCESS_CREATE_STDERR_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x65
    , Word8
0x72
    , Word8
0x72
    , Word8
0x5F
    , Word8
0x73
    , Word8
0x6F
    , Word8
0x75
    , Word8
0x72
    , Word8
0x63
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_STDERR_TO_STDOUT_BOOLEAN@, literal @\"SDL.process.create.stderr_to_stdout\"@, defined at @SDL3\/SDL_process.h 238:9@
sDL_PROP_PROCESS_CREATE_STDERR_TO_STDOUT_BOOLEAN :: BG.ByteString
sDL_PROP_PROCESS_CREATE_STDERR_TO_STDOUT_BOOLEAN :: ByteString
sDL_PROP_PROCESS_CREATE_STDERR_TO_STDOUT_BOOLEAN =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x65
    , Word8
0x72
    , Word8
0x72
    , Word8
0x5F
    , Word8
0x74
    , Word8
0x6F
    , Word8
0x5F
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x6F
    , Word8
0x75
    , Word8
0x74
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_BACKGROUND_BOOLEAN@, literal @\"SDL.process.create.background\"@, defined at @SDL3\/SDL_process.h 239:9@
sDL_PROP_PROCESS_CREATE_BACKGROUND_BOOLEAN :: BG.ByteString
sDL_PROP_PROCESS_CREATE_BACKGROUND_BOOLEAN :: ByteString
sDL_PROP_PROCESS_CREATE_BACKGROUND_BOOLEAN =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x62
    , Word8
0x61
    , Word8
0x63
    , Word8
0x6B
    , Word8
0x67
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x75
    , Word8
0x6E
    , Word8
0x64
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_CREATE_CMDLINE_STRING@, literal @\"SDL.process.create.cmdline\"@, defined at @SDL3\/SDL_process.h 240:9@
sDL_PROP_PROCESS_CREATE_CMDLINE_STRING :: BG.ByteString
sDL_PROP_PROCESS_CREATE_CMDLINE_STRING :: ByteString
sDL_PROP_PROCESS_CREATE_CMDLINE_STRING =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x72
    , Word8
0x65
    , Word8
0x61
    , Word8
0x74
    , Word8
0x65
    , Word8
0x2E
    , Word8
0x63
    , Word8
0x6D
    , Word8
0x64
    , Word8
0x6C
    , Word8
0x69
    , Word8
0x6E
    , Word8
0x65
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_PID_NUMBER@, literal @\"SDL.process.pid\"@, defined at @SDL3\/SDL_process.h 273:9@
sDL_PROP_PROCESS_PID_NUMBER :: BG.ByteString
sDL_PROP_PROCESS_PID_NUMBER :: ByteString
sDL_PROP_PROCESS_PID_NUMBER =
  [Word8] -> ByteString
BG.pack [Word8
0x53, Word8
0x44, Word8
0x4C, Word8
0x2E, Word8
0x70, Word8
0x72, Word8
0x6F, Word8
0x63, Word8
0x65, Word8
0x73, Word8
0x73, Word8
0x2E, Word8
0x70, Word8
0x69, Word8
0x64]

-- | [C declaration]: @macro SDL_PROP_PROCESS_STDIN_POINTER@, literal @\"SDL.process.stdin\"@, defined at @SDL3\/SDL_process.h 274:9@
sDL_PROP_PROCESS_STDIN_POINTER :: BG.ByteString
sDL_PROP_PROCESS_STDIN_POINTER :: ByteString
sDL_PROP_PROCESS_STDIN_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x69
    , Word8
0x6E
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_STDOUT_POINTER@, literal @\"SDL.process.stdout\"@, defined at @SDL3\/SDL_process.h 275:9@
sDL_PROP_PROCESS_STDOUT_POINTER :: BG.ByteString
sDL_PROP_PROCESS_STDOUT_POINTER :: ByteString
sDL_PROP_PROCESS_STDOUT_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x6F
    , Word8
0x75
    , Word8
0x74
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_STDERR_POINTER@, literal @\"SDL.process.stderr\"@, defined at @SDL3\/SDL_process.h 276:9@
sDL_PROP_PROCESS_STDERR_POINTER :: BG.ByteString
sDL_PROP_PROCESS_STDERR_POINTER :: ByteString
sDL_PROP_PROCESS_STDERR_POINTER =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x73
    , Word8
0x74
    , Word8
0x64
    , Word8
0x65
    , Word8
0x72
    , Word8
0x72
    ]

-- | [C declaration]: @macro SDL_PROP_PROCESS_BACKGROUND_BOOLEAN@, literal @\"SDL.process.background\"@, defined at @SDL3\/SDL_process.h 277:9@
sDL_PROP_PROCESS_BACKGROUND_BOOLEAN :: BG.ByteString
sDL_PROP_PROCESS_BACKGROUND_BOOLEAN :: ByteString
sDL_PROP_PROCESS_BACKGROUND_BOOLEAN =
  [Word8] -> ByteString
BG.pack
    [ Word8
0x53
    , Word8
0x44
    , Word8
0x4C
    , Word8
0x2E
    , Word8
0x70
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x63
    , Word8
0x65
    , Word8
0x73
    , Word8
0x73
    , Word8
0x2E
    , Word8
0x62
    , Word8
0x61
    , Word8
0x63
    , Word8
0x6B
    , Word8
0x67
    , Word8
0x72
    , Word8
0x6F
    , Word8
0x75
    , Word8
0x6E
    , Word8
0x64
    ]