{-# language CPP #-}
-- No documentation found for Chapter "ExternalFenceFeatureFlagBits"
module Vulkan.Core11.Enums.ExternalFenceFeatureFlagBits  ( ExternalFenceFeatureFlags
                                                         , ExternalFenceFeatureFlagBits( EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT
                                                                                       , EXTERNAL_FENCE_FEATURE_IMPORTABLE_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 ExternalFenceFeatureFlags = ExternalFenceFeatureFlagBits

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

-- | 'EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT' specifies handles of this type
-- /can/ be exported from Vulkan fence objects.
pattern $bEXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT :: ExternalFenceFeatureFlagBits
$mEXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT :: forall {r}.
ExternalFenceFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = ExternalFenceFeatureFlagBits 0x00000001

-- | 'EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT' specifies handles of this type
-- /can/ be imported to Vulkan fence objects.
pattern $bEXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT :: ExternalFenceFeatureFlagBits
$mEXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT :: forall {r}.
ExternalFenceFeatureFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = ExternalFenceFeatureFlagBits 0x00000002

conNameExternalFenceFeatureFlagBits :: String
conNameExternalFenceFeatureFlagBits :: String
conNameExternalFenceFeatureFlagBits = String
"ExternalFenceFeatureFlagBits"

enumPrefixExternalFenceFeatureFlagBits :: String
enumPrefixExternalFenceFeatureFlagBits :: String
enumPrefixExternalFenceFeatureFlagBits = String
"EXTERNAL_FENCE_FEATURE_"

showTableExternalFenceFeatureFlagBits :: [(ExternalFenceFeatureFlagBits, String)]
showTableExternalFenceFeatureFlagBits :: [(ExternalFenceFeatureFlagBits, String)]
showTableExternalFenceFeatureFlagBits =
  [
    ( ExternalFenceFeatureFlagBits
EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT
    , String
"EXPORTABLE_BIT"
    )
  ,
    ( ExternalFenceFeatureFlagBits
EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT
    , String
"IMPORTABLE_BIT"
    )
  ]

instance Show ExternalFenceFeatureFlagBits where
  showsPrec :: Int -> ExternalFenceFeatureFlagBits -> ShowS
showsPrec =
    forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixExternalFenceFeatureFlagBits
      [(ExternalFenceFeatureFlagBits, String)]
showTableExternalFenceFeatureFlagBits
      String
conNameExternalFenceFeatureFlagBits
      (\(ExternalFenceFeatureFlagBits 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 ExternalFenceFeatureFlagBits where
  readPrec :: ReadPrec ExternalFenceFeatureFlagBits
readPrec =
    forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixExternalFenceFeatureFlagBits
      [(ExternalFenceFeatureFlagBits, String)]
showTableExternalFenceFeatureFlagBits
      String
conNameExternalFenceFeatureFlagBits
      Flags -> ExternalFenceFeatureFlagBits
ExternalFenceFeatureFlagBits