packages feed

vulkan-api-1.4.0.0: src-gen/Graphics/Vulkan/Types/BaseTypes.hs

{-# LANGUAGE DataKinds                  #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE Strict                     #-}
module Graphics.Vulkan.Types.BaseTypes
       (AHardwareBuffer(), ANativeWindow(), CAMetalLayer(), VkBool32(..),
        VkDeviceAddress(..), VkDeviceSize(..), VkFlags(..),
        VkSampleMask(..))
       where
import Data.Bits               (Bits, FiniteBits)
import Data.Coerce             (coerce)
import Foreign.Storable        (Storable)
import Graphics.Vulkan.Marshal (Word32, Word64)

-- | > struct AHardwareBuffer;
data AHardwareBuffer

-- | > struct ANativeWindow;
data ANativeWindow

-- | >
--   > #ifdef __OBJC__
--   > @class CAMetalLayer;
--   > #else
--   > typedef void CAMetalLayer;
--   > #endif
data CAMetalLayer

newtype VkBool32 = VkBool32 Word32
                   deriving (Eq, Ord, Num, Bounded, Enum, Integral, Real, Bits,
                             FiniteBits, Storable)

instance Show VkBool32 where
    {-# INLINE showsPrec #-}
    showsPrec = coerce (showsPrec :: Int -> Word32 -> ShowS)

instance Read VkBool32 where
    {-# INLINE readsPrec #-}
    readsPrec = coerce (readsPrec :: Int -> ReadS Word32)

newtype VkDeviceAddress = VkDeviceAddress Word64
                          deriving (Eq, Ord, Num, Bounded, Enum, Integral, Real, Bits,
                                    FiniteBits, Storable)

instance Show VkDeviceAddress where
    {-# INLINE showsPrec #-}
    showsPrec = coerce (showsPrec :: Int -> Word64 -> ShowS)

instance Read VkDeviceAddress where
    {-# INLINE readsPrec #-}
    readsPrec = coerce (readsPrec :: Int -> ReadS Word64)

newtype VkDeviceSize = VkDeviceSize Word64
                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Real, Bits,
                                 FiniteBits, Storable)

instance Show VkDeviceSize where
    {-# INLINE showsPrec #-}
    showsPrec = coerce (showsPrec :: Int -> Word64 -> ShowS)

instance Read VkDeviceSize where
    {-# INLINE readsPrec #-}
    readsPrec = coerce (readsPrec :: Int -> ReadS Word64)

newtype VkFlags = VkFlags Word32
                  deriving (Eq, Ord, Num, Bounded, Enum, Integral, Real, Bits,
                            FiniteBits, Storable)

instance Show VkFlags where
    {-# INLINE showsPrec #-}
    showsPrec = coerce (showsPrec :: Int -> Word32 -> ShowS)

instance Read VkFlags where
    {-# INLINE readsPrec #-}
    readsPrec = coerce (readsPrec :: Int -> ReadS Word32)

newtype VkSampleMask = VkSampleMask Word32
                       deriving (Eq, Ord, Num, Bounded, Enum, Integral, Real, Bits,
                                 FiniteBits, Storable)

instance Show VkSampleMask where
    {-# INLINE showsPrec #-}
    showsPrec = coerce (showsPrec :: Int -> Word32 -> ShowS)

instance Read VkSampleMask where
    {-# INLINE readsPrec #-}
    readsPrec = coerce (readsPrec :: Int -> ReadS Word32)