{-# language CPP #-}
-- No documentation found for Chapter "ShaderStageFlagBits"
module Vulkan.Core10.Enums.ShaderStageFlagBits  ( ShaderStageFlags
                                                , ShaderStageFlagBits( SHADER_STAGE_VERTEX_BIT
                                                                     , SHADER_STAGE_TESSELLATION_CONTROL_BIT
                                                                     , SHADER_STAGE_TESSELLATION_EVALUATION_BIT
                                                                     , SHADER_STAGE_GEOMETRY_BIT
                                                                     , SHADER_STAGE_FRAGMENT_BIT
                                                                     , SHADER_STAGE_COMPUTE_BIT
                                                                     , SHADER_STAGE_ALL_GRAPHICS
                                                                     , SHADER_STAGE_ALL
                                                                     , SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI
                                                                     , SHADER_STAGE_MESH_BIT_EXT
                                                                     , SHADER_STAGE_TASK_BIT_EXT
                                                                     , SHADER_STAGE_CALLABLE_BIT_KHR
                                                                     , SHADER_STAGE_INTERSECTION_BIT_KHR
                                                                     , SHADER_STAGE_MISS_BIT_KHR
                                                                     , SHADER_STAGE_CLOSEST_HIT_BIT_KHR
                                                                     , SHADER_STAGE_ANY_HIT_BIT_KHR
                                                                     , SHADER_STAGE_RAYGEN_BIT_KHR
                                                                     , ..
                                                                     )
                                                ) where

import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.Zero (Zero)
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Vulkan.Core10.FundamentalTypes (Flags)
type ShaderStageFlags = ShaderStageFlagBits

-- | VkShaderStageFlagBits - Bitmask specifying a pipeline stage
--
-- = Description
--
-- Note
--
-- 'SHADER_STAGE_ALL_GRAPHICS' only includes the original five graphics
-- stages included in Vulkan 1.0, and not any stages added by extensions.
-- Thus, it may not have the desired effect in all cases.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
-- 'ShaderStageFlags',
-- 'Vulkan.Extensions.VK_AMD_shader_info.getShaderInfoAMD'
newtype ShaderStageFlagBits = ShaderStageFlagBits Flags
  deriving newtype (ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
(ShaderStageFlagBits -> ShaderStageFlagBits -> Bool)
-> (ShaderStageFlagBits -> ShaderStageFlagBits -> Bool)
-> Eq ShaderStageFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
$c/= :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
== :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
$c== :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
Eq, Eq ShaderStageFlagBits
Eq ShaderStageFlagBits
-> (ShaderStageFlagBits -> ShaderStageFlagBits -> Ordering)
-> (ShaderStageFlagBits -> ShaderStageFlagBits -> Bool)
-> (ShaderStageFlagBits -> ShaderStageFlagBits -> Bool)
-> (ShaderStageFlagBits -> ShaderStageFlagBits -> Bool)
-> (ShaderStageFlagBits -> ShaderStageFlagBits -> Bool)
-> (ShaderStageFlagBits
    -> ShaderStageFlagBits -> ShaderStageFlagBits)
-> (ShaderStageFlagBits
    -> ShaderStageFlagBits -> ShaderStageFlagBits)
-> Ord ShaderStageFlagBits
ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
ShaderStageFlagBits -> ShaderStageFlagBits -> Ordering
ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
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
min :: ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
$cmin :: ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
max :: ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
$cmax :: ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
>= :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
$c>= :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
> :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
$c> :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
<= :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
$c<= :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
< :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
$c< :: ShaderStageFlagBits -> ShaderStageFlagBits -> Bool
compare :: ShaderStageFlagBits -> ShaderStageFlagBits -> Ordering
$ccompare :: ShaderStageFlagBits -> ShaderStageFlagBits -> Ordering
Ord, Ptr ShaderStageFlagBits -> IO ShaderStageFlagBits
Ptr ShaderStageFlagBits -> Int -> IO ShaderStageFlagBits
Ptr ShaderStageFlagBits -> Int -> ShaderStageFlagBits -> IO ()
Ptr ShaderStageFlagBits -> ShaderStageFlagBits -> IO ()
ShaderStageFlagBits -> Int
(ShaderStageFlagBits -> Int)
-> (ShaderStageFlagBits -> Int)
-> (Ptr ShaderStageFlagBits -> Int -> IO ShaderStageFlagBits)
-> (Ptr ShaderStageFlagBits -> Int -> ShaderStageFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO ShaderStageFlagBits)
-> (forall b. Ptr b -> Int -> ShaderStageFlagBits -> IO ())
-> (Ptr ShaderStageFlagBits -> IO ShaderStageFlagBits)
-> (Ptr ShaderStageFlagBits -> ShaderStageFlagBits -> IO ())
-> Storable ShaderStageFlagBits
forall b. Ptr b -> Int -> IO ShaderStageFlagBits
forall b. Ptr b -> Int -> ShaderStageFlagBits -> 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
poke :: Ptr ShaderStageFlagBits -> ShaderStageFlagBits -> IO ()
$cpoke :: Ptr ShaderStageFlagBits -> ShaderStageFlagBits -> IO ()
peek :: Ptr ShaderStageFlagBits -> IO ShaderStageFlagBits
$cpeek :: Ptr ShaderStageFlagBits -> IO ShaderStageFlagBits
pokeByteOff :: forall b. Ptr b -> Int -> ShaderStageFlagBits -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ShaderStageFlagBits -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO ShaderStageFlagBits
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ShaderStageFlagBits
pokeElemOff :: Ptr ShaderStageFlagBits -> Int -> ShaderStageFlagBits -> IO ()
$cpokeElemOff :: Ptr ShaderStageFlagBits -> Int -> ShaderStageFlagBits -> IO ()
peekElemOff :: Ptr ShaderStageFlagBits -> Int -> IO ShaderStageFlagBits
$cpeekElemOff :: Ptr ShaderStageFlagBits -> Int -> IO ShaderStageFlagBits
alignment :: ShaderStageFlagBits -> Int
$calignment :: ShaderStageFlagBits -> Int
sizeOf :: ShaderStageFlagBits -> Int
$csizeOf :: ShaderStageFlagBits -> Int
Storable, ShaderStageFlagBits
ShaderStageFlagBits -> Zero ShaderStageFlagBits
forall a. a -> Zero a
zero :: ShaderStageFlagBits
$czero :: ShaderStageFlagBits
Zero, Eq ShaderStageFlagBits
ShaderStageFlagBits
Eq ShaderStageFlagBits
-> (ShaderStageFlagBits
    -> ShaderStageFlagBits -> ShaderStageFlagBits)
-> (ShaderStageFlagBits
    -> ShaderStageFlagBits -> ShaderStageFlagBits)
-> (ShaderStageFlagBits
    -> ShaderStageFlagBits -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> ShaderStageFlagBits
-> (Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> Bool)
-> (ShaderStageFlagBits -> Maybe Int)
-> (ShaderStageFlagBits -> Int)
-> (ShaderStageFlagBits -> Bool)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int -> ShaderStageFlagBits)
-> (ShaderStageFlagBits -> Int)
-> Bits ShaderStageFlagBits
Int -> ShaderStageFlagBits
ShaderStageFlagBits -> Bool
ShaderStageFlagBits -> Int
ShaderStageFlagBits -> Maybe Int
ShaderStageFlagBits -> ShaderStageFlagBits
ShaderStageFlagBits -> Int -> Bool
ShaderStageFlagBits -> Int -> ShaderStageFlagBits
ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
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
popCount :: ShaderStageFlagBits -> Int
$cpopCount :: ShaderStageFlagBits -> Int
rotateR :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$crotateR :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
rotateL :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$crotateL :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
unsafeShiftR :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$cunsafeShiftR :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
shiftR :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$cshiftR :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
unsafeShiftL :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$cunsafeShiftL :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
shiftL :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$cshiftL :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
isSigned :: ShaderStageFlagBits -> Bool
$cisSigned :: ShaderStageFlagBits -> Bool
bitSize :: ShaderStageFlagBits -> Int
$cbitSize :: ShaderStageFlagBits -> Int
bitSizeMaybe :: ShaderStageFlagBits -> Maybe Int
$cbitSizeMaybe :: ShaderStageFlagBits -> Maybe Int
testBit :: ShaderStageFlagBits -> Int -> Bool
$ctestBit :: ShaderStageFlagBits -> Int -> Bool
complementBit :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$ccomplementBit :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
clearBit :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$cclearBit :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
setBit :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$csetBit :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
bit :: Int -> ShaderStageFlagBits
$cbit :: Int -> ShaderStageFlagBits
zeroBits :: ShaderStageFlagBits
$czeroBits :: ShaderStageFlagBits
rotate :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$crotate :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
shift :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
$cshift :: ShaderStageFlagBits -> Int -> ShaderStageFlagBits
complement :: ShaderStageFlagBits -> ShaderStageFlagBits
$ccomplement :: ShaderStageFlagBits -> ShaderStageFlagBits
xor :: ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
$cxor :: ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
.|. :: ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
$c.|. :: ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
.&. :: ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
$c.&. :: ShaderStageFlagBits -> ShaderStageFlagBits -> ShaderStageFlagBits
Bits, Bits ShaderStageFlagBits
Bits ShaderStageFlagBits
-> (ShaderStageFlagBits -> Int)
-> (ShaderStageFlagBits -> Int)
-> (ShaderStageFlagBits -> Int)
-> FiniteBits ShaderStageFlagBits
ShaderStageFlagBits -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: ShaderStageFlagBits -> Int
$ccountTrailingZeros :: ShaderStageFlagBits -> Int
countLeadingZeros :: ShaderStageFlagBits -> Int
$ccountLeadingZeros :: ShaderStageFlagBits -> Int
finiteBitSize :: ShaderStageFlagBits -> Int
$cfiniteBitSize :: ShaderStageFlagBits -> Int
FiniteBits)

-- | 'SHADER_STAGE_VERTEX_BIT' specifies the vertex stage.
pattern $bSHADER_STAGE_VERTEX_BIT :: ShaderStageFlagBits
$mSHADER_STAGE_VERTEX_BIT :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_VERTEX_BIT = ShaderStageFlagBits 0x00000001

-- | 'SHADER_STAGE_TESSELLATION_CONTROL_BIT' specifies the tessellation
-- control stage.
pattern $bSHADER_STAGE_TESSELLATION_CONTROL_BIT :: ShaderStageFlagBits
$mSHADER_STAGE_TESSELLATION_CONTROL_BIT :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_TESSELLATION_CONTROL_BIT = ShaderStageFlagBits 0x00000002

-- | 'SHADER_STAGE_TESSELLATION_EVALUATION_BIT' specifies the tessellation
-- evaluation stage.
pattern $bSHADER_STAGE_TESSELLATION_EVALUATION_BIT :: ShaderStageFlagBits
$mSHADER_STAGE_TESSELLATION_EVALUATION_BIT :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_TESSELLATION_EVALUATION_BIT = ShaderStageFlagBits 0x00000004

-- | 'SHADER_STAGE_GEOMETRY_BIT' specifies the geometry stage.
pattern $bSHADER_STAGE_GEOMETRY_BIT :: ShaderStageFlagBits
$mSHADER_STAGE_GEOMETRY_BIT :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_GEOMETRY_BIT = ShaderStageFlagBits 0x00000008

-- | 'SHADER_STAGE_FRAGMENT_BIT' specifies the fragment stage.
pattern $bSHADER_STAGE_FRAGMENT_BIT :: ShaderStageFlagBits
$mSHADER_STAGE_FRAGMENT_BIT :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_FRAGMENT_BIT = ShaderStageFlagBits 0x00000010

-- | 'SHADER_STAGE_COMPUTE_BIT' specifies the compute stage.
pattern $bSHADER_STAGE_COMPUTE_BIT :: ShaderStageFlagBits
$mSHADER_STAGE_COMPUTE_BIT :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_COMPUTE_BIT = ShaderStageFlagBits 0x00000020

-- | 'SHADER_STAGE_ALL_GRAPHICS' is a combination of bits used as shorthand
-- to specify all graphics stages defined above (excluding the compute
-- stage).
pattern $bSHADER_STAGE_ALL_GRAPHICS :: ShaderStageFlagBits
$mSHADER_STAGE_ALL_GRAPHICS :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_ALL_GRAPHICS = ShaderStageFlagBits 0x0000001f

-- | 'SHADER_STAGE_ALL' is a combination of bits used as shorthand to specify
-- all shader stages supported by the device, including all additional
-- stages which are introduced by extensions.
pattern $bSHADER_STAGE_ALL :: ShaderStageFlagBits
$mSHADER_STAGE_ALL :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_ALL = ShaderStageFlagBits 0x7fffffff

-- No documentation found for Nested "VkShaderStageFlagBits" "VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI"
pattern $bSHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI :: ShaderStageFlagBits
$mSHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = ShaderStageFlagBits 0x00004000

-- | 'SHADER_STAGE_MESH_BIT_EXT' specifies the mesh stage.
pattern $bSHADER_STAGE_MESH_BIT_EXT :: ShaderStageFlagBits
$mSHADER_STAGE_MESH_BIT_EXT :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_MESH_BIT_EXT = ShaderStageFlagBits 0x00000080

-- | 'SHADER_STAGE_TASK_BIT_EXT' specifies the task stage.
pattern $bSHADER_STAGE_TASK_BIT_EXT :: ShaderStageFlagBits
$mSHADER_STAGE_TASK_BIT_EXT :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_TASK_BIT_EXT = ShaderStageFlagBits 0x00000040

-- | 'SHADER_STAGE_CALLABLE_BIT_KHR' specifies the callable stage.
pattern $bSHADER_STAGE_CALLABLE_BIT_KHR :: ShaderStageFlagBits
$mSHADER_STAGE_CALLABLE_BIT_KHR :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_CALLABLE_BIT_KHR = ShaderStageFlagBits 0x00002000

-- | 'SHADER_STAGE_INTERSECTION_BIT_KHR' specifies the intersection stage.
pattern $bSHADER_STAGE_INTERSECTION_BIT_KHR :: ShaderStageFlagBits
$mSHADER_STAGE_INTERSECTION_BIT_KHR :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_INTERSECTION_BIT_KHR = ShaderStageFlagBits 0x00001000

-- | 'SHADER_STAGE_MISS_BIT_KHR' specifies the miss stage.
pattern $bSHADER_STAGE_MISS_BIT_KHR :: ShaderStageFlagBits
$mSHADER_STAGE_MISS_BIT_KHR :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_MISS_BIT_KHR = ShaderStageFlagBits 0x00000800

-- | 'SHADER_STAGE_CLOSEST_HIT_BIT_KHR' specifies the closest hit stage.
pattern $bSHADER_STAGE_CLOSEST_HIT_BIT_KHR :: ShaderStageFlagBits
$mSHADER_STAGE_CLOSEST_HIT_BIT_KHR :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_CLOSEST_HIT_BIT_KHR = ShaderStageFlagBits 0x00000400

-- | 'SHADER_STAGE_ANY_HIT_BIT_KHR' specifies the any-hit stage.
pattern $bSHADER_STAGE_ANY_HIT_BIT_KHR :: ShaderStageFlagBits
$mSHADER_STAGE_ANY_HIT_BIT_KHR :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_ANY_HIT_BIT_KHR = ShaderStageFlagBits 0x00000200

-- | 'SHADER_STAGE_RAYGEN_BIT_KHR' specifies the ray generation stage.
pattern $bSHADER_STAGE_RAYGEN_BIT_KHR :: ShaderStageFlagBits
$mSHADER_STAGE_RAYGEN_BIT_KHR :: forall {r}.
ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_RAYGEN_BIT_KHR = ShaderStageFlagBits 0x00000100

conNameShaderStageFlagBits :: String
conNameShaderStageFlagBits :: String
conNameShaderStageFlagBits = String
"ShaderStageFlagBits"

enumPrefixShaderStageFlagBits :: String
enumPrefixShaderStageFlagBits :: String
enumPrefixShaderStageFlagBits = String
"SHADER_STAGE_"

showTableShaderStageFlagBits :: [(ShaderStageFlagBits, String)]
showTableShaderStageFlagBits :: [(ShaderStageFlagBits, String)]
showTableShaderStageFlagBits =
  [ (ShaderStageFlagBits
SHADER_STAGE_VERTEX_BIT, String
"VERTEX_BIT")
  ,
    ( ShaderStageFlagBits
SHADER_STAGE_TESSELLATION_CONTROL_BIT
    , String
"TESSELLATION_CONTROL_BIT"
    )
  ,
    ( ShaderStageFlagBits
SHADER_STAGE_TESSELLATION_EVALUATION_BIT
    , String
"TESSELLATION_EVALUATION_BIT"
    )
  , (ShaderStageFlagBits
SHADER_STAGE_GEOMETRY_BIT, String
"GEOMETRY_BIT")
  , (ShaderStageFlagBits
SHADER_STAGE_FRAGMENT_BIT, String
"FRAGMENT_BIT")
  , (ShaderStageFlagBits
SHADER_STAGE_COMPUTE_BIT, String
"COMPUTE_BIT")
  , (ShaderStageFlagBits
SHADER_STAGE_ALL_GRAPHICS, String
"ALL_GRAPHICS")
  , (ShaderStageFlagBits
SHADER_STAGE_ALL, String
"ALL")
  ,
    ( ShaderStageFlagBits
SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI
    , String
"SUBPASS_SHADING_BIT_HUAWEI"
    )
  , (ShaderStageFlagBits
SHADER_STAGE_MESH_BIT_EXT, String
"MESH_BIT_EXT")
  , (ShaderStageFlagBits
SHADER_STAGE_TASK_BIT_EXT, String
"TASK_BIT_EXT")
  ,
    ( ShaderStageFlagBits
SHADER_STAGE_CALLABLE_BIT_KHR
    , String
"CALLABLE_BIT_KHR"
    )
  ,
    ( ShaderStageFlagBits
SHADER_STAGE_INTERSECTION_BIT_KHR
    , String
"INTERSECTION_BIT_KHR"
    )
  , (ShaderStageFlagBits
SHADER_STAGE_MISS_BIT_KHR, String
"MISS_BIT_KHR")
  ,
    ( ShaderStageFlagBits
SHADER_STAGE_CLOSEST_HIT_BIT_KHR
    , String
"CLOSEST_HIT_BIT_KHR"
    )
  ,
    ( ShaderStageFlagBits
SHADER_STAGE_ANY_HIT_BIT_KHR
    , String
"ANY_HIT_BIT_KHR"
    )
  ,
    ( ShaderStageFlagBits
SHADER_STAGE_RAYGEN_BIT_KHR
    , String
"RAYGEN_BIT_KHR"
    )
  ]

instance Show ShaderStageFlagBits where
  showsPrec :: Int -> ShaderStageFlagBits -> ShowS
showsPrec =
    String
-> [(ShaderStageFlagBits, String)]
-> String
-> (ShaderStageFlagBits -> Flags)
-> (Flags -> ShowS)
-> Int
-> ShaderStageFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixShaderStageFlagBits
      [(ShaderStageFlagBits, String)]
showTableShaderStageFlagBits
      String
conNameShaderStageFlagBits
      (\(ShaderStageFlagBits Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. (Integral a, Show a) => a -> ShowS
showHex Flags
x)

instance Read ShaderStageFlagBits where
  readPrec :: ReadPrec ShaderStageFlagBits
readPrec =
    String
-> [(ShaderStageFlagBits, String)]
-> String
-> (Flags -> ShaderStageFlagBits)
-> ReadPrec ShaderStageFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixShaderStageFlagBits
      [(ShaderStageFlagBits, String)]
showTableShaderStageFlagBits
      String
conNameShaderStageFlagBits
      Flags -> ShaderStageFlagBits
ShaderStageFlagBits