{-# language CPP #-}
-- No documentation found for Chapter "SemaphoreWaitFlagBits"
module Vulkan.Core12.Enums.SemaphoreWaitFlagBits  ( SemaphoreWaitFlags
                                                  , SemaphoreWaitFlagBits( SEMAPHORE_WAIT_ANY_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 SemaphoreWaitFlags = SemaphoreWaitFlagBits

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

-- | 'SEMAPHORE_WAIT_ANY_BIT' specifies that the semaphore wait condition is
-- that at least one of the semaphores in
-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pSemaphores@
-- has reached the value specified by the corresponding element of
-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pValues@.
-- If 'SEMAPHORE_WAIT_ANY_BIT' is not set, the semaphore wait condition is
-- that all of the semaphores in
-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pSemaphores@
-- have reached the value specified by the corresponding element of
-- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo'::@pValues@.
pattern $bSEMAPHORE_WAIT_ANY_BIT :: SemaphoreWaitFlagBits
$mSEMAPHORE_WAIT_ANY_BIT :: forall {r}.
SemaphoreWaitFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
SEMAPHORE_WAIT_ANY_BIT = SemaphoreWaitFlagBits 0x00000001

conNameSemaphoreWaitFlagBits :: String
conNameSemaphoreWaitFlagBits :: String
conNameSemaphoreWaitFlagBits = String
"SemaphoreWaitFlagBits"

enumPrefixSemaphoreWaitFlagBits :: String
enumPrefixSemaphoreWaitFlagBits :: String
enumPrefixSemaphoreWaitFlagBits = String
"SEMAPHORE_WAIT_ANY_BIT"

showTableSemaphoreWaitFlagBits :: [(SemaphoreWaitFlagBits, String)]
showTableSemaphoreWaitFlagBits :: [(SemaphoreWaitFlagBits, String)]
showTableSemaphoreWaitFlagBits = [(SemaphoreWaitFlagBits
SEMAPHORE_WAIT_ANY_BIT, String
"")]

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