{-# language CPP #-}
module Vulkan.Extensions.VK_EXT_layer_settings ( LayerSettingsCreateInfoEXT(..)
, LayerSettingEXT(..)
, LayerSettingTypeEXT( LAYER_SETTING_TYPE_BOOL32_EXT
, LAYER_SETTING_TYPE_INT32_EXT
, LAYER_SETTING_TYPE_INT64_EXT
, LAYER_SETTING_TYPE_UINT32_EXT
, LAYER_SETTING_TYPE_UINT64_EXT
, LAYER_SETTING_TYPE_FLOAT32_EXT
, LAYER_SETTING_TYPE_FLOAT64_EXT
, LAYER_SETTING_TYPE_STRING_EXT
, ..
)
, EXT_LAYER_SETTINGS_SPEC_VERSION
, pattern EXT_LAYER_SETTINGS_SPEC_VERSION
, EXT_LAYER_SETTINGS_EXTENSION_NAME
, pattern EXT_LAYER_SETTINGS_EXTENSION_NAME
) where
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showsPrec)
import Data.ByteString (packCString)
import Data.ByteString (useAsCString)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import qualified Data.Vector (imapM_)
import qualified Data.Vector (length)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.C.Types (CChar)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import GHC.Generics (Generic)
import Data.Int (Int32)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Word (Word32)
import Data.ByteString (ByteString)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.CStruct.Utils (advancePtrBytes)
import Vulkan.Core10.Enums.StructureType (StructureType)
import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT))
data LayerSettingsCreateInfoEXT = LayerSettingsCreateInfoEXT
{
LayerSettingsCreateInfoEXT -> Vector LayerSettingEXT
settings :: Vector LayerSettingEXT }
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (LayerSettingsCreateInfoEXT)
#endif
deriving instance Show LayerSettingsCreateInfoEXT
instance ToCStruct LayerSettingsCreateInfoEXT where
withCStruct :: forall b.
LayerSettingsCreateInfoEXT
-> (Ptr LayerSettingsCreateInfoEXT -> IO b) -> IO b
withCStruct LayerSettingsCreateInfoEXT
x Ptr LayerSettingsCreateInfoEXT -> IO b
f = Int -> (Ptr LayerSettingsCreateInfoEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr LayerSettingsCreateInfoEXT -> IO b) -> IO b)
-> (Ptr LayerSettingsCreateInfoEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr LayerSettingsCreateInfoEXT
p -> Ptr LayerSettingsCreateInfoEXT
-> LayerSettingsCreateInfoEXT -> IO b -> IO b
forall b.
Ptr LayerSettingsCreateInfoEXT
-> LayerSettingsCreateInfoEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr LayerSettingsCreateInfoEXT
p LayerSettingsCreateInfoEXT
x (Ptr LayerSettingsCreateInfoEXT -> IO b
f Ptr LayerSettingsCreateInfoEXT
p)
pokeCStruct :: forall b.
Ptr LayerSettingsCreateInfoEXT
-> LayerSettingsCreateInfoEXT -> IO b -> IO b
pokeCStruct Ptr LayerSettingsCreateInfoEXT
p LayerSettingsCreateInfoEXT{Vector LayerSettingEXT
$sel:settings:LayerSettingsCreateInfoEXT :: LayerSettingsCreateInfoEXT -> Vector LayerSettingEXT
settings :: Vector LayerSettingEXT
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingsCreateInfoEXT
p Ptr LayerSettingsCreateInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingsCreateInfoEXT
p Ptr LayerSettingsCreateInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingsCreateInfoEXT
p Ptr LayerSettingsCreateInfoEXT -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32)) ((Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Vector LayerSettingEXT -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector LayerSettingEXT -> Int) -> Vector LayerSettingEXT -> Int
forall a b. (a -> b) -> a -> b
$ (Vector LayerSettingEXT
settings)) :: Word32))
Ptr LayerSettingEXT
pPSettings' <- ((Ptr LayerSettingEXT -> IO b) -> IO b)
-> ContT b IO (Ptr LayerSettingEXT)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr LayerSettingEXT -> IO b) -> IO b)
-> ContT b IO (Ptr LayerSettingEXT))
-> ((Ptr LayerSettingEXT -> IO b) -> IO b)
-> ContT b IO (Ptr LayerSettingEXT)
forall a b. (a -> b) -> a -> b
$ forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes @LayerSettingEXT ((Vector LayerSettingEXT -> Int
forall a. Vector a -> Int
Data.Vector.length (Vector LayerSettingEXT
settings)) Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
32)
(Int -> LayerSettingEXT -> ContT b IO ())
-> Vector LayerSettingEXT -> ContT b IO ()
forall (m :: * -> *) a b.
Monad m =>
(Int -> a -> m b) -> Vector a -> m ()
Data.Vector.imapM_ (\Int
i LayerSettingEXT
e -> ((() -> IO b) -> IO b) -> ContT b IO ()
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr LayerSettingEXT -> LayerSettingEXT -> IO b -> IO b
forall b. Ptr LayerSettingEXT -> LayerSettingEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (Ptr LayerSettingEXT
pPSettings' Ptr LayerSettingEXT -> Int -> Ptr LayerSettingEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` (Int
32 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr LayerSettingEXT) (LayerSettingEXT
e) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())) (Vector LayerSettingEXT
settings)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr LayerSettingEXT) -> Ptr LayerSettingEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingsCreateInfoEXT
p Ptr LayerSettingsCreateInfoEXT -> Int -> Ptr (Ptr LayerSettingEXT)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr LayerSettingEXT))) (Ptr LayerSettingEXT
pPSettings')
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr LayerSettingsCreateInfoEXT -> IO b -> IO b
pokeZeroCStruct Ptr LayerSettingsCreateInfoEXT
p IO b
f = do
Ptr StructureType -> StructureType -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingsCreateInfoEXT
p Ptr LayerSettingsCreateInfoEXT -> Int -> Ptr StructureType
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr StructureType)) (StructureType
STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT)
Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingsCreateInfoEXT
p Ptr LayerSettingsCreateInfoEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr ()))) (Ptr ()
forall a. Ptr a
nullPtr)
IO b
f
instance FromCStruct LayerSettingsCreateInfoEXT where
peekCStruct :: Ptr LayerSettingsCreateInfoEXT -> IO LayerSettingsCreateInfoEXT
peekCStruct Ptr LayerSettingsCreateInfoEXT
p = do
Word32
settingCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr LayerSettingsCreateInfoEXT
p Ptr LayerSettingsCreateInfoEXT -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr Word32))
Ptr LayerSettingEXT
pSettings <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr LayerSettingEXT) ((Ptr LayerSettingsCreateInfoEXT
p Ptr LayerSettingsCreateInfoEXT -> Int -> Ptr (Ptr LayerSettingEXT)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr LayerSettingEXT)))
Vector LayerSettingEXT
pSettings' <- Int -> (Int -> IO LayerSettingEXT) -> IO (Vector LayerSettingEXT)
forall (m :: * -> *) a.
Monad m =>
Int -> (Int -> m a) -> m (Vector a)
generateM (Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
settingCount) (\Int
i -> forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @LayerSettingEXT ((Ptr LayerSettingEXT
pSettings Ptr LayerSettingEXT -> Int -> Ptr LayerSettingEXT
forall a. Ptr a -> Int -> Ptr a
`advancePtrBytes` (Int
32 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
i)) :: Ptr LayerSettingEXT)))
LayerSettingsCreateInfoEXT -> IO LayerSettingsCreateInfoEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (LayerSettingsCreateInfoEXT -> IO LayerSettingsCreateInfoEXT)
-> LayerSettingsCreateInfoEXT -> IO LayerSettingsCreateInfoEXT
forall a b. (a -> b) -> a -> b
$ Vector LayerSettingEXT -> LayerSettingsCreateInfoEXT
LayerSettingsCreateInfoEXT
Vector LayerSettingEXT
pSettings'
instance Zero LayerSettingsCreateInfoEXT where
zero :: LayerSettingsCreateInfoEXT
zero = Vector LayerSettingEXT -> LayerSettingsCreateInfoEXT
LayerSettingsCreateInfoEXT
Vector LayerSettingEXT
forall a. Monoid a => a
mempty
data LayerSettingEXT = LayerSettingEXT
{
LayerSettingEXT -> ByteString
layerName :: ByteString
,
LayerSettingEXT -> ByteString
settingName :: ByteString
,
LayerSettingEXT -> LayerSettingTypeEXT
type' :: LayerSettingTypeEXT
,
LayerSettingEXT -> Word32
valueCount :: Word32
,
LayerSettingEXT -> Ptr ()
values :: Ptr ()
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (LayerSettingEXT)
#endif
deriving instance Show LayerSettingEXT
instance ToCStruct LayerSettingEXT where
withCStruct :: forall b. LayerSettingEXT -> (Ptr LayerSettingEXT -> IO b) -> IO b
withCStruct LayerSettingEXT
x Ptr LayerSettingEXT -> IO b
f = Int -> (Ptr LayerSettingEXT -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
32 ((Ptr LayerSettingEXT -> IO b) -> IO b)
-> (Ptr LayerSettingEXT -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr LayerSettingEXT
p -> Ptr LayerSettingEXT -> LayerSettingEXT -> IO b -> IO b
forall b. Ptr LayerSettingEXT -> LayerSettingEXT -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr LayerSettingEXT
p LayerSettingEXT
x (Ptr LayerSettingEXT -> IO b
f Ptr LayerSettingEXT
p)
pokeCStruct :: forall b. Ptr LayerSettingEXT -> LayerSettingEXT -> IO b -> IO b
pokeCStruct Ptr LayerSettingEXT
p LayerSettingEXT{Word32
Ptr ()
ByteString
LayerSettingTypeEXT
$sel:layerName:LayerSettingEXT :: LayerSettingEXT -> ByteString
$sel:settingName:LayerSettingEXT :: LayerSettingEXT -> ByteString
$sel:type':LayerSettingEXT :: LayerSettingEXT -> LayerSettingTypeEXT
$sel:valueCount:LayerSettingEXT :: LayerSettingEXT -> Word32
$sel:values:LayerSettingEXT :: LayerSettingEXT -> Ptr ()
layerName :: ByteString
settingName :: ByteString
type' :: LayerSettingTypeEXT
valueCount :: Word32
values :: Ptr ()
..} IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
Ptr CChar
pLayerName'' <- ((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar))
-> ((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ByteString -> (Ptr CChar -> IO b) -> IO b
forall a. ByteString -> (Ptr CChar -> IO a) -> IO a
useAsCString (ByteString
layerName)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr CChar) -> Ptr CChar -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr (Ptr CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr (Ptr CChar))) Ptr CChar
pLayerName''
Ptr CChar
pSettingName'' <- ((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar))
-> ((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ByteString -> (Ptr CChar -> IO b) -> IO b
forall a. ByteString -> (Ptr CChar -> IO a) -> IO a
useAsCString (ByteString
settingName)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr CChar) -> Ptr CChar -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr (Ptr CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr CChar))) Ptr CChar
pSettingName''
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr LayerSettingTypeEXT -> LayerSettingTypeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr LayerSettingTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr LayerSettingTypeEXT)) (LayerSettingTypeEXT
type')
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32)) (Word32
valueCount)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ()))) (Ptr ()
values)
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
cStructSize :: Int
cStructSize = Int
32
cStructAlignment :: Int
cStructAlignment = Int
8
pokeZeroCStruct :: forall b. Ptr LayerSettingEXT -> IO b -> IO b
pokeZeroCStruct Ptr LayerSettingEXT
p IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
Ptr CChar
pLayerName'' <- ((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar))
-> ((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ByteString -> (Ptr CChar -> IO b) -> IO b
forall a. ByteString -> (Ptr CChar -> IO a) -> IO a
useAsCString (ByteString
forall a. Monoid a => a
mempty)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr CChar) -> Ptr CChar -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr (Ptr CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr (Ptr CChar))) Ptr CChar
pLayerName''
Ptr CChar
pSettingName'' <- ((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar))
-> ((Ptr CChar -> IO b) -> IO b) -> ContT b IO (Ptr CChar)
forall a b. (a -> b) -> a -> b
$ ByteString -> (Ptr CChar -> IO b) -> IO b
forall a. ByteString -> (Ptr CChar -> IO a) -> IO a
useAsCString (ByteString
forall a. Monoid a => a
mempty)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr CChar) -> Ptr CChar -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr (Ptr CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr CChar))) Ptr CChar
pSettingName''
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr LayerSettingTypeEXT -> LayerSettingTypeEXT -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr LayerSettingTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr LayerSettingTypeEXT)) (LayerSettingTypeEXT
forall a. Zero a => a
zero)
IO () -> ContT b IO ()
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr (Ptr ()) -> Ptr () -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ()))) (Ptr ()
forall a. Zero a => a
zero)
IO b -> ContT b IO b
forall (m :: * -> *) a. Monad m => m a -> ContT b m a
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
instance FromCStruct LayerSettingEXT where
peekCStruct :: Ptr LayerSettingEXT -> IO LayerSettingEXT
peekCStruct Ptr LayerSettingEXT
p = do
ByteString
pLayerName <- Ptr CChar -> IO ByteString
packCString (Ptr CChar -> IO ByteString) -> IO (Ptr CChar) -> IO ByteString
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr (Ptr CChar) -> IO (Ptr CChar)
forall a. Storable a => Ptr a -> IO a
peek ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr (Ptr CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr (Ptr CChar)))
ByteString
pSettingName <- Ptr CChar -> IO ByteString
packCString (Ptr CChar -> IO ByteString) -> IO (Ptr CChar) -> IO ByteString
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr (Ptr CChar) -> IO (Ptr CChar)
forall a. Storable a => Ptr a -> IO a
peek ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr (Ptr CChar)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
8 :: Ptr (Ptr CChar)))
LayerSettingTypeEXT
type' <- forall a. Storable a => Ptr a -> IO a
peek @LayerSettingTypeEXT ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr LayerSettingTypeEXT
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16 :: Ptr LayerSettingTypeEXT))
Word32
valueCount <- forall a. Storable a => Ptr a -> IO a
peek @Word32 ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20 :: Ptr Word32))
Ptr ()
pValues <- forall a. Storable a => Ptr a -> IO a
peek @(Ptr ()) ((Ptr LayerSettingEXT
p Ptr LayerSettingEXT -> Int -> Ptr (Ptr ())
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
24 :: Ptr (Ptr ())))
LayerSettingEXT -> IO LayerSettingEXT
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (LayerSettingEXT -> IO LayerSettingEXT)
-> LayerSettingEXT -> IO LayerSettingEXT
forall a b. (a -> b) -> a -> b
$ ByteString
-> ByteString
-> LayerSettingTypeEXT
-> Word32
-> Ptr ()
-> LayerSettingEXT
LayerSettingEXT
ByteString
pLayerName ByteString
pSettingName LayerSettingTypeEXT
type' Word32
valueCount Ptr ()
pValues
instance Zero LayerSettingEXT where
zero :: LayerSettingEXT
zero = ByteString
-> ByteString
-> LayerSettingTypeEXT
-> Word32
-> Ptr ()
-> LayerSettingEXT
LayerSettingEXT
ByteString
forall a. Monoid a => a
mempty
ByteString
forall a. Monoid a => a
mempty
LayerSettingTypeEXT
forall a. Zero a => a
zero
Word32
forall a. Zero a => a
zero
Ptr ()
forall a. Zero a => a
zero
newtype LayerSettingTypeEXT = LayerSettingTypeEXT Int32
deriving newtype (LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
(LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool)
-> (LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool)
-> Eq LayerSettingTypeEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
== :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
$c/= :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
/= :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
Eq, Eq LayerSettingTypeEXT
Eq LayerSettingTypeEXT =>
(LayerSettingTypeEXT -> LayerSettingTypeEXT -> Ordering)
-> (LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool)
-> (LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool)
-> (LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool)
-> (LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool)
-> (LayerSettingTypeEXT
-> LayerSettingTypeEXT -> LayerSettingTypeEXT)
-> (LayerSettingTypeEXT
-> LayerSettingTypeEXT -> LayerSettingTypeEXT)
-> Ord LayerSettingTypeEXT
LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
LayerSettingTypeEXT -> LayerSettingTypeEXT -> Ordering
LayerSettingTypeEXT -> LayerSettingTypeEXT -> LayerSettingTypeEXT
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 :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Ordering
compare :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Ordering
$c< :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
< :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
$c<= :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
<= :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
$c> :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
> :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
$c>= :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
>= :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> Bool
$cmax :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> LayerSettingTypeEXT
max :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> LayerSettingTypeEXT
$cmin :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> LayerSettingTypeEXT
min :: LayerSettingTypeEXT -> LayerSettingTypeEXT -> LayerSettingTypeEXT
Ord, Ptr LayerSettingTypeEXT -> IO LayerSettingTypeEXT
Ptr LayerSettingTypeEXT -> Int -> IO LayerSettingTypeEXT
Ptr LayerSettingTypeEXT -> Int -> LayerSettingTypeEXT -> IO ()
Ptr LayerSettingTypeEXT -> LayerSettingTypeEXT -> IO ()
LayerSettingTypeEXT -> Int
(LayerSettingTypeEXT -> Int)
-> (LayerSettingTypeEXT -> Int)
-> (Ptr LayerSettingTypeEXT -> Int -> IO LayerSettingTypeEXT)
-> (Ptr LayerSettingTypeEXT -> Int -> LayerSettingTypeEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO LayerSettingTypeEXT)
-> (forall b. Ptr b -> Int -> LayerSettingTypeEXT -> IO ())
-> (Ptr LayerSettingTypeEXT -> IO LayerSettingTypeEXT)
-> (Ptr LayerSettingTypeEXT -> LayerSettingTypeEXT -> IO ())
-> Storable LayerSettingTypeEXT
forall b. Ptr b -> Int -> IO LayerSettingTypeEXT
forall b. Ptr b -> Int -> LayerSettingTypeEXT -> 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 :: LayerSettingTypeEXT -> Int
sizeOf :: LayerSettingTypeEXT -> Int
$calignment :: LayerSettingTypeEXT -> Int
alignment :: LayerSettingTypeEXT -> Int
$cpeekElemOff :: Ptr LayerSettingTypeEXT -> Int -> IO LayerSettingTypeEXT
peekElemOff :: Ptr LayerSettingTypeEXT -> Int -> IO LayerSettingTypeEXT
$cpokeElemOff :: Ptr LayerSettingTypeEXT -> Int -> LayerSettingTypeEXT -> IO ()
pokeElemOff :: Ptr LayerSettingTypeEXT -> Int -> LayerSettingTypeEXT -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO LayerSettingTypeEXT
peekByteOff :: forall b. Ptr b -> Int -> IO LayerSettingTypeEXT
$cpokeByteOff :: forall b. Ptr b -> Int -> LayerSettingTypeEXT -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> LayerSettingTypeEXT -> IO ()
$cpeek :: Ptr LayerSettingTypeEXT -> IO LayerSettingTypeEXT
peek :: Ptr LayerSettingTypeEXT -> IO LayerSettingTypeEXT
$cpoke :: Ptr LayerSettingTypeEXT -> LayerSettingTypeEXT -> IO ()
poke :: Ptr LayerSettingTypeEXT -> LayerSettingTypeEXT -> IO ()
Storable, LayerSettingTypeEXT
LayerSettingTypeEXT -> Zero LayerSettingTypeEXT
forall a. a -> Zero a
$czero :: LayerSettingTypeEXT
zero :: LayerSettingTypeEXT
Zero)
pattern $bLAYER_SETTING_TYPE_BOOL32_EXT :: LayerSettingTypeEXT
$mLAYER_SETTING_TYPE_BOOL32_EXT :: forall {r}.
LayerSettingTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
LAYER_SETTING_TYPE_BOOL32_EXT = LayerSettingTypeEXT 0
pattern $bLAYER_SETTING_TYPE_INT32_EXT :: LayerSettingTypeEXT
$mLAYER_SETTING_TYPE_INT32_EXT :: forall {r}.
LayerSettingTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
LAYER_SETTING_TYPE_INT32_EXT = LayerSettingTypeEXT 1
pattern $bLAYER_SETTING_TYPE_INT64_EXT :: LayerSettingTypeEXT
$mLAYER_SETTING_TYPE_INT64_EXT :: forall {r}.
LayerSettingTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
LAYER_SETTING_TYPE_INT64_EXT = LayerSettingTypeEXT 2
pattern $bLAYER_SETTING_TYPE_UINT32_EXT :: LayerSettingTypeEXT
$mLAYER_SETTING_TYPE_UINT32_EXT :: forall {r}.
LayerSettingTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
LAYER_SETTING_TYPE_UINT32_EXT = LayerSettingTypeEXT 3
pattern $bLAYER_SETTING_TYPE_UINT64_EXT :: LayerSettingTypeEXT
$mLAYER_SETTING_TYPE_UINT64_EXT :: forall {r}.
LayerSettingTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
LAYER_SETTING_TYPE_UINT64_EXT = LayerSettingTypeEXT 4
pattern $bLAYER_SETTING_TYPE_FLOAT32_EXT :: LayerSettingTypeEXT
$mLAYER_SETTING_TYPE_FLOAT32_EXT :: forall {r}.
LayerSettingTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
LAYER_SETTING_TYPE_FLOAT32_EXT = LayerSettingTypeEXT 5
pattern $bLAYER_SETTING_TYPE_FLOAT64_EXT :: LayerSettingTypeEXT
$mLAYER_SETTING_TYPE_FLOAT64_EXT :: forall {r}.
LayerSettingTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
LAYER_SETTING_TYPE_FLOAT64_EXT = LayerSettingTypeEXT 6
pattern $bLAYER_SETTING_TYPE_STRING_EXT :: LayerSettingTypeEXT
$mLAYER_SETTING_TYPE_STRING_EXT :: forall {r}.
LayerSettingTypeEXT -> ((# #) -> r) -> ((# #) -> r) -> r
LAYER_SETTING_TYPE_STRING_EXT = LayerSettingTypeEXT 7
{-# COMPLETE
LAYER_SETTING_TYPE_BOOL32_EXT
, LAYER_SETTING_TYPE_INT32_EXT
, LAYER_SETTING_TYPE_INT64_EXT
, LAYER_SETTING_TYPE_UINT32_EXT
, LAYER_SETTING_TYPE_UINT64_EXT
, LAYER_SETTING_TYPE_FLOAT32_EXT
, LAYER_SETTING_TYPE_FLOAT64_EXT
, LAYER_SETTING_TYPE_STRING_EXT ::
LayerSettingTypeEXT
#-}
conNameLayerSettingTypeEXT :: String
conNameLayerSettingTypeEXT :: String
conNameLayerSettingTypeEXT = String
"LayerSettingTypeEXT"
enumPrefixLayerSettingTypeEXT :: String
enumPrefixLayerSettingTypeEXT :: String
enumPrefixLayerSettingTypeEXT = String
"LAYER_SETTING_TYPE_"
showTableLayerSettingTypeEXT :: [(LayerSettingTypeEXT, String)]
showTableLayerSettingTypeEXT :: [(LayerSettingTypeEXT, String)]
showTableLayerSettingTypeEXT =
[ (LayerSettingTypeEXT
LAYER_SETTING_TYPE_BOOL32_EXT, String
"BOOL32_EXT")
, (LayerSettingTypeEXT
LAYER_SETTING_TYPE_INT32_EXT, String
"INT32_EXT")
, (LayerSettingTypeEXT
LAYER_SETTING_TYPE_INT64_EXT, String
"INT64_EXT")
, (LayerSettingTypeEXT
LAYER_SETTING_TYPE_UINT32_EXT, String
"UINT32_EXT")
, (LayerSettingTypeEXT
LAYER_SETTING_TYPE_UINT64_EXT, String
"UINT64_EXT")
, (LayerSettingTypeEXT
LAYER_SETTING_TYPE_FLOAT32_EXT, String
"FLOAT32_EXT")
, (LayerSettingTypeEXT
LAYER_SETTING_TYPE_FLOAT64_EXT, String
"FLOAT64_EXT")
, (LayerSettingTypeEXT
LAYER_SETTING_TYPE_STRING_EXT, String
"STRING_EXT")
]
instance Show LayerSettingTypeEXT where
showsPrec :: Int -> LayerSettingTypeEXT -> ShowS
showsPrec =
String
-> [(LayerSettingTypeEXT, String)]
-> String
-> (LayerSettingTypeEXT -> Int32)
-> (Int32 -> ShowS)
-> Int
-> LayerSettingTypeEXT
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
String
enumPrefixLayerSettingTypeEXT
[(LayerSettingTypeEXT, String)]
showTableLayerSettingTypeEXT
String
conNameLayerSettingTypeEXT
(\(LayerSettingTypeEXT Int32
x) -> Int32
x)
(Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11)
instance Read LayerSettingTypeEXT where
readPrec :: ReadPrec LayerSettingTypeEXT
readPrec =
String
-> [(LayerSettingTypeEXT, String)]
-> String
-> (Int32 -> LayerSettingTypeEXT)
-> ReadPrec LayerSettingTypeEXT
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
String
enumPrefixLayerSettingTypeEXT
[(LayerSettingTypeEXT, String)]
showTableLayerSettingTypeEXT
String
conNameLayerSettingTypeEXT
Int32 -> LayerSettingTypeEXT
LayerSettingTypeEXT
type EXT_LAYER_SETTINGS_SPEC_VERSION = 2
pattern EXT_LAYER_SETTINGS_SPEC_VERSION :: forall a . Integral a => a
pattern $bEXT_LAYER_SETTINGS_SPEC_VERSION :: forall a. Integral a => a
$mEXT_LAYER_SETTINGS_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_LAYER_SETTINGS_SPEC_VERSION = 2
type EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings"
pattern EXT_LAYER_SETTINGS_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bEXT_LAYER_SETTINGS_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
$mEXT_LAYER_SETTINGS_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
EXT_LAYER_SETTINGS_EXTENSION_NAME = "VK_EXT_layer_settings"