{-# language CPP #-}
-- No documentation found for Chapter "InstanceCreateFlagBits"
module Vulkan.Core10.Enums.InstanceCreateFlagBits  ( InstanceCreateFlags
                                                   , InstanceCreateFlagBits( INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR
                                                                           , ..
                                                                           )
                                                   ) 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 InstanceCreateFlags = InstanceCreateFlagBits

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

-- | 'INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR' specifies that the
-- instance will enumerate available Vulkan Portability-compliant physical
-- devices and groups in addition to the Vulkan physical devices and groups
-- that are enumerated by default.
pattern $bINSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR :: InstanceCreateFlagBits
$mINSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR :: forall {r}.
InstanceCreateFlagBits -> ((# #) -> r) -> ((# #) -> r) -> r
INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = InstanceCreateFlagBits 0x00000001

conNameInstanceCreateFlagBits :: String
conNameInstanceCreateFlagBits :: String
conNameInstanceCreateFlagBits = String
"InstanceCreateFlagBits"

enumPrefixInstanceCreateFlagBits :: String
enumPrefixInstanceCreateFlagBits :: String
enumPrefixInstanceCreateFlagBits = String
"INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR"

showTableInstanceCreateFlagBits :: [(InstanceCreateFlagBits, String)]
showTableInstanceCreateFlagBits :: [(InstanceCreateFlagBits, String)]
showTableInstanceCreateFlagBits =
  [
    ( InstanceCreateFlagBits
INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR
    , String
""
    )
  ]

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