{-# language CPP #-}
-- No documentation found for Chapter "QueryResultFlagBits"
module Vulkan.Core10.Enums.QueryResultFlagBits  ( QueryResultFlags
                                                , QueryResultFlagBits( QUERY_RESULT_64_BIT
                                                                     , QUERY_RESULT_WAIT_BIT
                                                                     , QUERY_RESULT_WITH_AVAILABILITY_BIT
                                                                     , QUERY_RESULT_PARTIAL_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 QueryResultFlags = QueryResultFlagBits

-- | VkQueryResultFlagBits - Bitmask specifying how and when query results
-- are returned
--
-- = Description
--
-- -   'QUERY_RESULT_64_BIT' specifies the results will be written as an
--     array of 64-bit unsigned integer values. If this bit is not set, the
--     results will be written as an array of 32-bit unsigned integer
--     values.
--
-- -   'QUERY_RESULT_WAIT_BIT' specifies that Vulkan will wait for each
--     query’s status to become available before retrieving its results.
--
-- -   'QUERY_RESULT_WITH_AVAILABILITY_BIT' specifies that the availability
--     status accompanies the results.
--
-- -   'QUERY_RESULT_PARTIAL_BIT' specifies that returning partial results
--     is acceptable.
--
-- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultFlagBits VK_QUERY_RESULT_WITH_STATUS_BIT_KHR>
--     specifies that the last value returned in the query is a
--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueryResultStatusKHR VkQueryResultStatusKHR>
--     value. See
--     <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#queries-result-status-only result status query>
--     for information on how an application can determine whether the use
--     of this flag bit is supported.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
-- 'QueryResultFlags'
newtype QueryResultFlagBits = QueryResultFlagBits Flags
  deriving newtype (QueryResultFlagBits -> QueryResultFlagBits -> Bool
(QueryResultFlagBits -> QueryResultFlagBits -> Bool)
-> (QueryResultFlagBits -> QueryResultFlagBits -> Bool)
-> Eq QueryResultFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
== :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
$c/= :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
/= :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
Eq, Eq QueryResultFlagBits
Eq QueryResultFlagBits =>
(QueryResultFlagBits -> QueryResultFlagBits -> Ordering)
-> (QueryResultFlagBits -> QueryResultFlagBits -> Bool)
-> (QueryResultFlagBits -> QueryResultFlagBits -> Bool)
-> (QueryResultFlagBits -> QueryResultFlagBits -> Bool)
-> (QueryResultFlagBits -> QueryResultFlagBits -> Bool)
-> (QueryResultFlagBits
    -> QueryResultFlagBits -> QueryResultFlagBits)
-> (QueryResultFlagBits
    -> QueryResultFlagBits -> QueryResultFlagBits)
-> Ord QueryResultFlagBits
QueryResultFlagBits -> QueryResultFlagBits -> Bool
QueryResultFlagBits -> QueryResultFlagBits -> Ordering
QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
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 :: QueryResultFlagBits -> QueryResultFlagBits -> Ordering
compare :: QueryResultFlagBits -> QueryResultFlagBits -> Ordering
$c< :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
< :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
$c<= :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
<= :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
$c> :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
> :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
$c>= :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
>= :: QueryResultFlagBits -> QueryResultFlagBits -> Bool
$cmax :: QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
max :: QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
$cmin :: QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
min :: QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
Ord, Ptr QueryResultFlagBits -> IO QueryResultFlagBits
Ptr QueryResultFlagBits -> Int -> IO QueryResultFlagBits
Ptr QueryResultFlagBits -> Int -> QueryResultFlagBits -> IO ()
Ptr QueryResultFlagBits -> QueryResultFlagBits -> IO ()
QueryResultFlagBits -> Int
(QueryResultFlagBits -> Int)
-> (QueryResultFlagBits -> Int)
-> (Ptr QueryResultFlagBits -> Int -> IO QueryResultFlagBits)
-> (Ptr QueryResultFlagBits -> Int -> QueryResultFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO QueryResultFlagBits)
-> (forall b. Ptr b -> Int -> QueryResultFlagBits -> IO ())
-> (Ptr QueryResultFlagBits -> IO QueryResultFlagBits)
-> (Ptr QueryResultFlagBits -> QueryResultFlagBits -> IO ())
-> Storable QueryResultFlagBits
forall b. Ptr b -> Int -> IO QueryResultFlagBits
forall b. Ptr b -> Int -> QueryResultFlagBits -> 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 :: QueryResultFlagBits -> Int
sizeOf :: QueryResultFlagBits -> Int
$calignment :: QueryResultFlagBits -> Int
alignment :: QueryResultFlagBits -> Int
$cpeekElemOff :: Ptr QueryResultFlagBits -> Int -> IO QueryResultFlagBits
peekElemOff :: Ptr QueryResultFlagBits -> Int -> IO QueryResultFlagBits
$cpokeElemOff :: Ptr QueryResultFlagBits -> Int -> QueryResultFlagBits -> IO ()
pokeElemOff :: Ptr QueryResultFlagBits -> Int -> QueryResultFlagBits -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO QueryResultFlagBits
peekByteOff :: forall b. Ptr b -> Int -> IO QueryResultFlagBits
$cpokeByteOff :: forall b. Ptr b -> Int -> QueryResultFlagBits -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> QueryResultFlagBits -> IO ()
$cpeek :: Ptr QueryResultFlagBits -> IO QueryResultFlagBits
peek :: Ptr QueryResultFlagBits -> IO QueryResultFlagBits
$cpoke :: Ptr QueryResultFlagBits -> QueryResultFlagBits -> IO ()
poke :: Ptr QueryResultFlagBits -> QueryResultFlagBits -> IO ()
Storable, QueryResultFlagBits
QueryResultFlagBits -> Zero QueryResultFlagBits
forall a. a -> Zero a
$czero :: QueryResultFlagBits
zero :: QueryResultFlagBits
Zero, Eq QueryResultFlagBits
QueryResultFlagBits
Eq QueryResultFlagBits =>
(QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits)
-> (QueryResultFlagBits
    -> QueryResultFlagBits -> QueryResultFlagBits)
-> (QueryResultFlagBits
    -> QueryResultFlagBits -> QueryResultFlagBits)
-> (QueryResultFlagBits -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> QueryResultFlagBits
-> (Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> Bool)
-> (QueryResultFlagBits -> Maybe Int)
-> (QueryResultFlagBits -> Int)
-> (QueryResultFlagBits -> Bool)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int -> QueryResultFlagBits)
-> (QueryResultFlagBits -> Int)
-> Bits QueryResultFlagBits
Int -> QueryResultFlagBits
QueryResultFlagBits -> Bool
QueryResultFlagBits -> Int
QueryResultFlagBits -> Maybe Int
QueryResultFlagBits -> QueryResultFlagBits
QueryResultFlagBits -> Int -> Bool
QueryResultFlagBits -> Int -> QueryResultFlagBits
QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
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.&. :: QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
.&. :: QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
$c.|. :: QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
.|. :: QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
$cxor :: QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
xor :: QueryResultFlagBits -> QueryResultFlagBits -> QueryResultFlagBits
$ccomplement :: QueryResultFlagBits -> QueryResultFlagBits
complement :: QueryResultFlagBits -> QueryResultFlagBits
$cshift :: QueryResultFlagBits -> Int -> QueryResultFlagBits
shift :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$crotate :: QueryResultFlagBits -> Int -> QueryResultFlagBits
rotate :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$czeroBits :: QueryResultFlagBits
zeroBits :: QueryResultFlagBits
$cbit :: Int -> QueryResultFlagBits
bit :: Int -> QueryResultFlagBits
$csetBit :: QueryResultFlagBits -> Int -> QueryResultFlagBits
setBit :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$cclearBit :: QueryResultFlagBits -> Int -> QueryResultFlagBits
clearBit :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$ccomplementBit :: QueryResultFlagBits -> Int -> QueryResultFlagBits
complementBit :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$ctestBit :: QueryResultFlagBits -> Int -> Bool
testBit :: QueryResultFlagBits -> Int -> Bool
$cbitSizeMaybe :: QueryResultFlagBits -> Maybe Int
bitSizeMaybe :: QueryResultFlagBits -> Maybe Int
$cbitSize :: QueryResultFlagBits -> Int
bitSize :: QueryResultFlagBits -> Int
$cisSigned :: QueryResultFlagBits -> Bool
isSigned :: QueryResultFlagBits -> Bool
$cshiftL :: QueryResultFlagBits -> Int -> QueryResultFlagBits
shiftL :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$cunsafeShiftL :: QueryResultFlagBits -> Int -> QueryResultFlagBits
unsafeShiftL :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$cshiftR :: QueryResultFlagBits -> Int -> QueryResultFlagBits
shiftR :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$cunsafeShiftR :: QueryResultFlagBits -> Int -> QueryResultFlagBits
unsafeShiftR :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$crotateL :: QueryResultFlagBits -> Int -> QueryResultFlagBits
rotateL :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$crotateR :: QueryResultFlagBits -> Int -> QueryResultFlagBits
rotateR :: QueryResultFlagBits -> Int -> QueryResultFlagBits
$cpopCount :: QueryResultFlagBits -> Int
popCount :: QueryResultFlagBits -> Int
Bits, Bits QueryResultFlagBits
Bits QueryResultFlagBits =>
(QueryResultFlagBits -> Int)
-> (QueryResultFlagBits -> Int)
-> (QueryResultFlagBits -> Int)
-> FiniteBits QueryResultFlagBits
QueryResultFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: QueryResultFlagBits -> Int
finiteBitSize :: QueryResultFlagBits -> Int
$ccountLeadingZeros :: QueryResultFlagBits -> Int
countLeadingZeros :: QueryResultFlagBits -> Int
$ccountTrailingZeros :: QueryResultFlagBits -> Int
countTrailingZeros :: QueryResultFlagBits -> Int
FiniteBits)

-- No documentation found for Nested "VkQueryResultFlagBits" "VK_QUERY_RESULT_64_BIT"
pattern $mQUERY_RESULT_64_BIT :: forall {r}.
QueryResultFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bQUERY_RESULT_64_BIT :: QueryResultFlagBits
QUERY_RESULT_64_BIT = QueryResultFlagBits 0x00000001

-- No documentation found for Nested "VkQueryResultFlagBits" "VK_QUERY_RESULT_WAIT_BIT"
pattern $mQUERY_RESULT_WAIT_BIT :: forall {r}.
QueryResultFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bQUERY_RESULT_WAIT_BIT :: QueryResultFlagBits
QUERY_RESULT_WAIT_BIT = QueryResultFlagBits 0x00000002

-- No documentation found for Nested "VkQueryResultFlagBits" "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"
pattern $mQUERY_RESULT_WITH_AVAILABILITY_BIT :: forall {r}.
QueryResultFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bQUERY_RESULT_WITH_AVAILABILITY_BIT :: QueryResultFlagBits
QUERY_RESULT_WITH_AVAILABILITY_BIT = QueryResultFlagBits 0x00000004

-- No documentation found for Nested "VkQueryResultFlagBits" "VK_QUERY_RESULT_PARTIAL_BIT"
pattern $mQUERY_RESULT_PARTIAL_BIT :: forall {r}.
QueryResultFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
$bQUERY_RESULT_PARTIAL_BIT :: QueryResultFlagBits
QUERY_RESULT_PARTIAL_BIT = QueryResultFlagBits 0x00000008

conNameQueryResultFlagBits :: String
conNameQueryResultFlagBits :: String
conNameQueryResultFlagBits = String
"QueryResultFlagBits"

enumPrefixQueryResultFlagBits :: String
enumPrefixQueryResultFlagBits :: String
enumPrefixQueryResultFlagBits = String
"QUERY_RESULT_"

showTableQueryResultFlagBits :: [(QueryResultFlagBits, String)]
showTableQueryResultFlagBits :: [(QueryResultFlagBits, String)]
showTableQueryResultFlagBits =
  [ (QueryResultFlagBits
QUERY_RESULT_64_BIT, String
"64_BIT")
  , (QueryResultFlagBits
QUERY_RESULT_WAIT_BIT, String
"WAIT_BIT")
  ,
    ( QueryResultFlagBits
QUERY_RESULT_WITH_AVAILABILITY_BIT
    , String
"WITH_AVAILABILITY_BIT"
    )
  , (QueryResultFlagBits
QUERY_RESULT_PARTIAL_BIT, String
"PARTIAL_BIT")
  ]

instance Show QueryResultFlagBits where
  showsPrec :: Int -> QueryResultFlagBits -> ShowS
showsPrec =
    String
-> [(QueryResultFlagBits, String)]
-> String
-> (QueryResultFlagBits -> Word32)
-> (Word32 -> ShowS)
-> Int
-> QueryResultFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixQueryResultFlagBits
      [(QueryResultFlagBits, String)]
showTableQueryResultFlagBits
      String
conNameQueryResultFlagBits
      (\(QueryResultFlagBits Word32
x) -> Word32
x)
      (\Word32
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word32 -> ShowS
forall a. Integral a => a -> ShowS
showHex Word32
x)

instance Read QueryResultFlagBits where
  readPrec :: ReadPrec QueryResultFlagBits
readPrec =
    String
-> [(QueryResultFlagBits, String)]
-> String
-> (Word32 -> QueryResultFlagBits)
-> ReadPrec QueryResultFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixQueryResultFlagBits
      [(QueryResultFlagBits, String)]
showTableQueryResultFlagBits
      String
conNameQueryResultFlagBits
      Word32 -> QueryResultFlagBits
QueryResultFlagBits