{-# language CPP #-}
-- No documentation found for Chapter "PipelineCacheCreateFlagBits"
module Vulkan.Core10.Enums.PipelineCacheCreateFlagBits  ( PipelineCacheCreateFlags
                                                        , PipelineCacheCreateFlagBits( PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT
                                                                                     , PIPELINE_CACHE_CREATE_READ_ONLY_BIT
                                                                                     , PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
                                                                                     , ..
                                                                                     )
                                                        ) where

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

-- | VkPipelineCacheCreateFlagBits - Bitmask specifying the behavior of the
-- pipeline cache
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_cache_control VK_EXT_pipeline_creation_cache_control>,
-- 'PipelineCacheCreateFlags'
newtype PipelineCacheCreateFlagBits = PipelineCacheCreateFlagBits Flags
  deriving newtype (PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
(PipelineCacheCreateFlagBits
 -> PipelineCacheCreateFlagBits -> Bool)
-> (PipelineCacheCreateFlagBits
    -> PipelineCacheCreateFlagBits -> Bool)
-> Eq PipelineCacheCreateFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
== :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
$c/= :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
/= :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
Eq, Eq PipelineCacheCreateFlagBits
Eq PipelineCacheCreateFlagBits =>
(PipelineCacheCreateFlagBits
 -> PipelineCacheCreateFlagBits -> Ordering)
-> (PipelineCacheCreateFlagBits
    -> PipelineCacheCreateFlagBits -> Bool)
-> (PipelineCacheCreateFlagBits
    -> PipelineCacheCreateFlagBits -> Bool)
-> (PipelineCacheCreateFlagBits
    -> PipelineCacheCreateFlagBits -> Bool)
-> (PipelineCacheCreateFlagBits
    -> PipelineCacheCreateFlagBits -> Bool)
-> (PipelineCacheCreateFlagBits
    -> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits)
-> Ord PipelineCacheCreateFlagBits
PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> Ordering
PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
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 :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> Ordering
compare :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> Ordering
$c< :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
< :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
$c<= :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
<= :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
$c> :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
> :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
$c>= :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
>= :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
$cmax :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
max :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$cmin :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
min :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
Ord, Ptr PipelineCacheCreateFlagBits -> IO PipelineCacheCreateFlagBits
Ptr PipelineCacheCreateFlagBits
-> Int -> IO PipelineCacheCreateFlagBits
Ptr PipelineCacheCreateFlagBits
-> Int -> PipelineCacheCreateFlagBits -> IO ()
Ptr PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> IO ()
PipelineCacheCreateFlagBits -> Int
(PipelineCacheCreateFlagBits -> Int)
-> (PipelineCacheCreateFlagBits -> Int)
-> (Ptr PipelineCacheCreateFlagBits
    -> Int -> IO PipelineCacheCreateFlagBits)
-> (Ptr PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO PipelineCacheCreateFlagBits)
-> (forall b. Ptr b -> Int -> PipelineCacheCreateFlagBits -> IO ())
-> (Ptr PipelineCacheCreateFlagBits
    -> IO PipelineCacheCreateFlagBits)
-> (Ptr PipelineCacheCreateFlagBits
    -> PipelineCacheCreateFlagBits -> IO ())
-> Storable PipelineCacheCreateFlagBits
forall b. Ptr b -> Int -> IO PipelineCacheCreateFlagBits
forall b. Ptr b -> Int -> PipelineCacheCreateFlagBits -> 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 :: PipelineCacheCreateFlagBits -> Int
sizeOf :: PipelineCacheCreateFlagBits -> Int
$calignment :: PipelineCacheCreateFlagBits -> Int
alignment :: PipelineCacheCreateFlagBits -> Int
$cpeekElemOff :: Ptr PipelineCacheCreateFlagBits
-> Int -> IO PipelineCacheCreateFlagBits
peekElemOff :: Ptr PipelineCacheCreateFlagBits
-> Int -> IO PipelineCacheCreateFlagBits
$cpokeElemOff :: Ptr PipelineCacheCreateFlagBits
-> Int -> PipelineCacheCreateFlagBits -> IO ()
pokeElemOff :: Ptr PipelineCacheCreateFlagBits
-> Int -> PipelineCacheCreateFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PipelineCacheCreateFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO PipelineCacheCreateFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> PipelineCacheCreateFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> PipelineCacheCreateFlagBits -> IO ()
$cpeek :: Ptr PipelineCacheCreateFlagBits -> IO PipelineCacheCreateFlagBits
peek :: Ptr PipelineCacheCreateFlagBits -> IO PipelineCacheCreateFlagBits
$cpoke :: Ptr PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> IO ()
poke :: Ptr PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> IO ()
Storable, PipelineCacheCreateFlagBits
PipelineCacheCreateFlagBits -> Zero PipelineCacheCreateFlagBits
forall a. a -> Zero a
$czero :: PipelineCacheCreateFlagBits
zero :: PipelineCacheCreateFlagBits
Zero, Eq PipelineCacheCreateFlagBits
PipelineCacheCreateFlagBits
Eq PipelineCacheCreateFlagBits =>
(PipelineCacheCreateFlagBits
 -> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> PipelineCacheCreateFlagBits
-> (Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits -> Int -> Bool)
-> (PipelineCacheCreateFlagBits -> Maybe Int)
-> (PipelineCacheCreateFlagBits -> Int)
-> (PipelineCacheCreateFlagBits -> Bool)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits
    -> Int -> PipelineCacheCreateFlagBits)
-> (PipelineCacheCreateFlagBits -> Int)
-> Bits PipelineCacheCreateFlagBits
Int -> PipelineCacheCreateFlagBits
PipelineCacheCreateFlagBits -> Bool
PipelineCacheCreateFlagBits -> Int
PipelineCacheCreateFlagBits -> Maybe Int
PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
PipelineCacheCreateFlagBits -> Int -> Bool
PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
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
$c.&. :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
.&. :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$c.|. :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
.|. :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$cxor :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
xor :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$ccomplement :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
complement :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$cshift :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
shift :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$crotate :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
rotate :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$czeroBits :: PipelineCacheCreateFlagBits
zeroBits :: PipelineCacheCreateFlagBits
$cbit :: Int -> PipelineCacheCreateFlagBits
bit :: Int -> PipelineCacheCreateFlagBits
$csetBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
setBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cclearBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
clearBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$ccomplementBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
complementBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$ctestBit :: PipelineCacheCreateFlagBits -> Int -> Bool
testBit :: PipelineCacheCreateFlagBits -> Int -> Bool
$cbitSizeMaybe :: PipelineCacheCreateFlagBits -> Maybe Int
bitSizeMaybe :: PipelineCacheCreateFlagBits -> Maybe Int
$cbitSize :: PipelineCacheCreateFlagBits -> Int
bitSize :: PipelineCacheCreateFlagBits -> Int
$cisSigned :: PipelineCacheCreateFlagBits -> Bool
isSigned :: PipelineCacheCreateFlagBits -> Bool
$cshiftL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
shiftL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cunsafeShiftL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
unsafeShiftL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cshiftR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
shiftR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cunsafeShiftR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
unsafeShiftR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$crotateL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
rotateL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$crotateR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
rotateR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cpopCount :: PipelineCacheCreateFlagBits -> Int
popCount :: PipelineCacheCreateFlagBits -> Int
Bits, Bits PipelineCacheCreateFlagBits
Bits PipelineCacheCreateFlagBits =>
(PipelineCacheCreateFlagBits -> Int)
-> (PipelineCacheCreateFlagBits -> Int)
-> (PipelineCacheCreateFlagBits -> Int)
-> FiniteBits PipelineCacheCreateFlagBits
PipelineCacheCreateFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: PipelineCacheCreateFlagBits -> Int
finiteBitSize :: PipelineCacheCreateFlagBits -> Int
$ccountLeadingZeros :: PipelineCacheCreateFlagBits -> Int
countLeadingZeros :: PipelineCacheCreateFlagBits -> Int
$ccountTrailingZeros :: PipelineCacheCreateFlagBits -> Int
countTrailingZeros :: PipelineCacheCreateFlagBits -> Int
FiniteBits)

-- No documentation found for Nested "VkPipelineCacheCreateFlagBits" "VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT"
pattern $bPIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT :: PipelineCacheCreateFlagBits
$mPIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT :: forall {r}.
PipelineCacheCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT = PipelineCacheCreateFlagBits 0x00000004

-- No documentation found for Nested "VkPipelineCacheCreateFlagBits" "VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT"
pattern $bPIPELINE_CACHE_CREATE_READ_ONLY_BIT :: PipelineCacheCreateFlagBits
$mPIPELINE_CACHE_CREATE_READ_ONLY_BIT :: forall {r}.
PipelineCacheCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CACHE_CREATE_READ_ONLY_BIT = PipelineCacheCreateFlagBits 0x00000002

-- | 'PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT' specifies that all
-- commands that modify the created 'Vulkan.Core10.Handles.PipelineCache'
-- will be
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
-- When set, the implementation /may/ skip any unnecessary processing
-- needed to support simultaneous modification from multiple threads where
-- allowed.
pattern $bPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT :: PipelineCacheCreateFlagBits
$mPIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT :: forall {r}.
PipelineCacheCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = PipelineCacheCreateFlagBits 0x00000001

conNamePipelineCacheCreateFlagBits :: String
conNamePipelineCacheCreateFlagBits :: String
conNamePipelineCacheCreateFlagBits = String
"PipelineCacheCreateFlagBits"

enumPrefixPipelineCacheCreateFlagBits :: String
enumPrefixPipelineCacheCreateFlagBits :: String
enumPrefixPipelineCacheCreateFlagBits = String
"PIPELINE_CACHE_CREATE_"

showTablePipelineCacheCreateFlagBits :: [(PipelineCacheCreateFlagBits, String)]
showTablePipelineCacheCreateFlagBits :: [(PipelineCacheCreateFlagBits, String)]
showTablePipelineCacheCreateFlagBits =
  [
    ( PipelineCacheCreateFlagBits
PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT
    , String
"USE_APPLICATION_STORAGE_BIT"
    )
  ,
    ( PipelineCacheCreateFlagBits
PIPELINE_CACHE_CREATE_READ_ONLY_BIT
    , String
"READ_ONLY_BIT"
    )
  ,
    ( PipelineCacheCreateFlagBits
PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
    , String
"EXTERNALLY_SYNCHRONIZED_BIT"
    )
  ]

instance Show PipelineCacheCreateFlagBits where
  showsPrec :: Int -> PipelineCacheCreateFlagBits -> ShowS
showsPrec =
    String
-> [(PipelineCacheCreateFlagBits, String)]
-> String
-> (PipelineCacheCreateFlagBits -> Flags)
-> (Flags -> ShowS)
-> Int
-> PipelineCacheCreateFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixPipelineCacheCreateFlagBits
      [(PipelineCacheCreateFlagBits, String)]
showTablePipelineCacheCreateFlagBits
      String
conNamePipelineCacheCreateFlagBits
      (\(PipelineCacheCreateFlagBits 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 => a -> ShowS
showHex Flags
x)

instance Read PipelineCacheCreateFlagBits where
  readPrec :: ReadPrec PipelineCacheCreateFlagBits
readPrec =
    String
-> [(PipelineCacheCreateFlagBits, String)]
-> String
-> (Flags -> PipelineCacheCreateFlagBits)
-> ReadPrec PipelineCacheCreateFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixPipelineCacheCreateFlagBits
      [(PipelineCacheCreateFlagBits, String)]
showTablePipelineCacheCreateFlagBits
      String
conNamePipelineCacheCreateFlagBits
      Flags -> PipelineCacheCreateFlagBits
PipelineCacheCreateFlagBits