{-# language CPP #-}
module Vulkan.Core10.Enums.ShaderStageFlagBits  ( 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_MESH_BIT_NV
                                                                     , SHADER_STAGE_TASK_BIT_NV
                                                                     , 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
                                                                     , ..
                                                                     )
                                                , ShaderStageFlags
                                                ) where

import GHC.Read (choose)
import GHC.Read (expectP)
import GHC.Read (parens)
import GHC.Show (showParen)
import GHC.Show (showString)
import Numeric (showHex)
import Text.ParserCombinators.ReadPrec ((+++))
import Text.ParserCombinators.ReadPrec (prec)
import Text.ParserCombinators.ReadPrec (step)
import Data.Bits (Bits)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import Text.Read.Lex (Lexeme(Ident))
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Zero (Zero)
-- | 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
--
-- '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
$cp1Ord :: Eq ShaderStageFlagBits
Ord, Ptr b -> Int -> IO ShaderStageFlagBits
Ptr b -> Int -> ShaderStageFlagBits -> IO ()
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 :: Ptr b -> Int -> ShaderStageFlagBits -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ShaderStageFlagBits -> IO ()
peekByteOff :: 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
$cp1Bits :: Eq ShaderStageFlagBits
Bits)

-- | '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
-- | 'SHADER_STAGE_MESH_BIT_NV' specifies the mesh stage.
pattern $bSHADER_STAGE_MESH_BIT_NV :: ShaderStageFlagBits
$mSHADER_STAGE_MESH_BIT_NV :: forall r. ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_MESH_BIT_NV = ShaderStageFlagBits 0x00000080
-- | 'SHADER_STAGE_TASK_BIT_NV' specifies the task stage.
pattern $bSHADER_STAGE_TASK_BIT_NV :: ShaderStageFlagBits
$mSHADER_STAGE_TASK_BIT_NV :: forall r. ShaderStageFlagBits -> (Void# -> r) -> (Void# -> r) -> r
SHADER_STAGE_TASK_BIT_NV = 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

type ShaderStageFlags = ShaderStageFlagBits

instance Show ShaderStageFlagBits where
  showsPrec :: Int -> ShaderStageFlagBits -> ShowS
showsPrec p :: Int
p = \case
    SHADER_STAGE_VERTEX_BIT -> String -> ShowS
showString "SHADER_STAGE_VERTEX_BIT"
    SHADER_STAGE_TESSELLATION_CONTROL_BIT -> String -> ShowS
showString "SHADER_STAGE_TESSELLATION_CONTROL_BIT"
    SHADER_STAGE_TESSELLATION_EVALUATION_BIT -> String -> ShowS
showString "SHADER_STAGE_TESSELLATION_EVALUATION_BIT"
    SHADER_STAGE_GEOMETRY_BIT -> String -> ShowS
showString "SHADER_STAGE_GEOMETRY_BIT"
    SHADER_STAGE_FRAGMENT_BIT -> String -> ShowS
showString "SHADER_STAGE_FRAGMENT_BIT"
    SHADER_STAGE_COMPUTE_BIT -> String -> ShowS
showString "SHADER_STAGE_COMPUTE_BIT"
    SHADER_STAGE_ALL_GRAPHICS -> String -> ShowS
showString "SHADER_STAGE_ALL_GRAPHICS"
    SHADER_STAGE_ALL -> String -> ShowS
showString "SHADER_STAGE_ALL"
    SHADER_STAGE_MESH_BIT_NV -> String -> ShowS
showString "SHADER_STAGE_MESH_BIT_NV"
    SHADER_STAGE_TASK_BIT_NV -> String -> ShowS
showString "SHADER_STAGE_TASK_BIT_NV"
    SHADER_STAGE_CALLABLE_BIT_KHR -> String -> ShowS
showString "SHADER_STAGE_CALLABLE_BIT_KHR"
    SHADER_STAGE_INTERSECTION_BIT_KHR -> String -> ShowS
showString "SHADER_STAGE_INTERSECTION_BIT_KHR"
    SHADER_STAGE_MISS_BIT_KHR -> String -> ShowS
showString "SHADER_STAGE_MISS_BIT_KHR"
    SHADER_STAGE_CLOSEST_HIT_BIT_KHR -> String -> ShowS
showString "SHADER_STAGE_CLOSEST_HIT_BIT_KHR"
    SHADER_STAGE_ANY_HIT_BIT_KHR -> String -> ShowS
showString "SHADER_STAGE_ANY_HIT_BIT_KHR"
    SHADER_STAGE_RAYGEN_BIT_KHR -> String -> ShowS
showString "SHADER_STAGE_RAYGEN_BIT_KHR"
    ShaderStageFlagBits x :: Flags
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "ShaderStageFlagBits 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 = ReadPrec ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec ShaderStageFlagBits)]
-> ReadPrec ShaderStageFlagBits
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose [("SHADER_STAGE_VERTEX_BIT", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_VERTEX_BIT)
                            , ("SHADER_STAGE_TESSELLATION_CONTROL_BIT", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_TESSELLATION_CONTROL_BIT)
                            , ("SHADER_STAGE_TESSELLATION_EVALUATION_BIT", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_TESSELLATION_EVALUATION_BIT)
                            , ("SHADER_STAGE_GEOMETRY_BIT", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_GEOMETRY_BIT)
                            , ("SHADER_STAGE_FRAGMENT_BIT", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_FRAGMENT_BIT)
                            , ("SHADER_STAGE_COMPUTE_BIT", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_COMPUTE_BIT)
                            , ("SHADER_STAGE_ALL_GRAPHICS", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_ALL_GRAPHICS)
                            , ("SHADER_STAGE_ALL", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_ALL)
                            , ("SHADER_STAGE_MESH_BIT_NV", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_MESH_BIT_NV)
                            , ("SHADER_STAGE_TASK_BIT_NV", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_TASK_BIT_NV)
                            , ("SHADER_STAGE_CALLABLE_BIT_KHR", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_CALLABLE_BIT_KHR)
                            , ("SHADER_STAGE_INTERSECTION_BIT_KHR", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_INTERSECTION_BIT_KHR)
                            , ("SHADER_STAGE_MISS_BIT_KHR", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_MISS_BIT_KHR)
                            , ("SHADER_STAGE_CLOSEST_HIT_BIT_KHR", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_CLOSEST_HIT_BIT_KHR)
                            , ("SHADER_STAGE_ANY_HIT_BIT_KHR", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_ANY_HIT_BIT_KHR)
                            , ("SHADER_STAGE_RAYGEN_BIT_KHR", ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ShaderStageFlagBits
SHADER_STAGE_RAYGEN_BIT_KHR)]
                     ReadPrec ShaderStageFlagBits
-> ReadPrec ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int -> ReadPrec ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "ShaderStageFlagBits")
                       Flags
v <- ReadPrec Flags -> ReadPrec Flags
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Flags
forall a. Read a => ReadPrec a
readPrec
                       ShaderStageFlagBits -> ReadPrec ShaderStageFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> ShaderStageFlagBits
ShaderStageFlagBits Flags
v)))