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