{-# 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
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
$c/= :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
== :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
$c== :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
Eq, Eq 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
min :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$cmin :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
max :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$cmax :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
>= :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits -> Bool
$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
compare :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> Ordering
$ccompare :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> Ordering
Ord, Ptr PipelineCacheCreateFlagBits -> IO PipelineCacheCreateFlagBits
Ptr PipelineCacheCreateFlagBits
-> Int -> IO PipelineCacheCreateFlagBits
Ptr PipelineCacheCreateFlagBits
-> Int -> PipelineCacheCreateFlagBits -> IO ()
Ptr PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> IO ()
PipelineCacheCreateFlagBits -> Int
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
poke :: Ptr PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> IO ()
$cpoke :: Ptr PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> IO ()
peek :: Ptr PipelineCacheCreateFlagBits -> IO PipelineCacheCreateFlagBits
$cpeek :: Ptr PipelineCacheCreateFlagBits -> IO PipelineCacheCreateFlagBits
pokeByteOff :: forall b. Ptr b -> Int -> PipelineCacheCreateFlagBits -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> PipelineCacheCreateFlagBits -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO PipelineCacheCreateFlagBits
$cpeekByteOff :: forall b. Ptr b -> Int -> IO PipelineCacheCreateFlagBits
pokeElemOff :: Ptr PipelineCacheCreateFlagBits
-> Int -> PipelineCacheCreateFlagBits -> IO ()
$cpokeElemOff :: Ptr PipelineCacheCreateFlagBits
-> Int -> PipelineCacheCreateFlagBits -> IO ()
peekElemOff :: Ptr PipelineCacheCreateFlagBits
-> Int -> IO PipelineCacheCreateFlagBits
$cpeekElemOff :: Ptr PipelineCacheCreateFlagBits
-> Int -> IO PipelineCacheCreateFlagBits
alignment :: PipelineCacheCreateFlagBits -> Int
$calignment :: PipelineCacheCreateFlagBits -> Int
sizeOf :: PipelineCacheCreateFlagBits -> Int
$csizeOf :: PipelineCacheCreateFlagBits -> Int
Storable, PipelineCacheCreateFlagBits
forall a. a -> Zero a
zero :: PipelineCacheCreateFlagBits
$czero :: PipelineCacheCreateFlagBits
Zero, Eq PipelineCacheCreateFlagBits
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
popCount :: PipelineCacheCreateFlagBits -> Int
$cpopCount :: PipelineCacheCreateFlagBits -> Int
rotateR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$crotateR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
rotateL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$crotateL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
unsafeShiftR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cunsafeShiftR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
shiftR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cshiftR :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
unsafeShiftL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cunsafeShiftL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
shiftL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cshiftL :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
isSigned :: PipelineCacheCreateFlagBits -> Bool
$cisSigned :: PipelineCacheCreateFlagBits -> Bool
bitSize :: PipelineCacheCreateFlagBits -> Int
$cbitSize :: PipelineCacheCreateFlagBits -> Int
bitSizeMaybe :: PipelineCacheCreateFlagBits -> Maybe Int
$cbitSizeMaybe :: PipelineCacheCreateFlagBits -> Maybe Int
testBit :: PipelineCacheCreateFlagBits -> Int -> Bool
$ctestBit :: PipelineCacheCreateFlagBits -> Int -> Bool
complementBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$ccomplementBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
clearBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cclearBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
setBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$csetBit :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
bit :: Int -> PipelineCacheCreateFlagBits
$cbit :: Int -> PipelineCacheCreateFlagBits
zeroBits :: PipelineCacheCreateFlagBits
$czeroBits :: PipelineCacheCreateFlagBits
rotate :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$crotate :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
shift :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
$cshift :: PipelineCacheCreateFlagBits -> Int -> PipelineCacheCreateFlagBits
complement :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$ccomplement :: PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
xor :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$cxor :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
.|. :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$c.|. :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
.&. :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
$c.&. :: PipelineCacheCreateFlagBits
-> PipelineCacheCreateFlagBits -> PipelineCacheCreateFlagBits
Bits, Bits PipelineCacheCreateFlagBits
PipelineCacheCreateFlagBits -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: PipelineCacheCreateFlagBits -> Int
$ccountTrailingZeros :: PipelineCacheCreateFlagBits -> Int
countLeadingZeros :: PipelineCacheCreateFlagBits -> Int
$ccountLeadingZeros :: PipelineCacheCreateFlagBits -> Int
finiteBitSize :: PipelineCacheCreateFlagBits -> Int
$cfiniteBitSize :: 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 =
    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" forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. (Integral a, Show a) => a -> ShowS
showHex Flags
x)

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