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

instance Read SemaphoreWaitFlagBits where
  readPrec :: ReadPrec SemaphoreWaitFlagBits
readPrec =
    forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixSemaphoreWaitFlagBits
      [(SemaphoreWaitFlagBits, String)]
showTableSemaphoreWaitFlagBits
      String
conNameSemaphoreWaitFlagBits
      Flags -> SemaphoreWaitFlagBits
SemaphoreWaitFlagBits