{-# language CPP #-}
module Vulkan.Core10.Enums.DeviceCreateFlags  (DeviceCreateFlags(..)) where

import GHC.Read (choose)
import GHC.Read (expectP)
import GHC.Read (parens)
import GHC.Show (showParen)
import GHC.Show (showString)
import Numeric (showHex)
import Text.ParserCombinators.ReadPrec ((+++))
import Text.ParserCombinators.ReadPrec (prec)
import Text.ParserCombinators.ReadPrec (step)
import Data.Bits (Bits)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import Text.Read.Lex (Lexeme(Ident))
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Zero (Zero)
-- | VkDeviceCreateFlags - Reserved for future use
--
-- = Description
--
-- 'DeviceCreateFlags' is a bitmask type for setting a mask, but is
-- currently reserved for future use.
--
-- = See Also
--
-- 'Vulkan.Core10.Device.DeviceCreateInfo'
newtype DeviceCreateFlags = DeviceCreateFlags Flags
  deriving newtype (DeviceCreateFlags -> DeviceCreateFlags -> Bool
(DeviceCreateFlags -> DeviceCreateFlags -> Bool)
-> (DeviceCreateFlags -> DeviceCreateFlags -> Bool)
-> Eq DeviceCreateFlags
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
$c/= :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
== :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
$c== :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
Eq, Eq DeviceCreateFlags
Eq DeviceCreateFlags =>
(DeviceCreateFlags -> DeviceCreateFlags -> Ordering)
-> (DeviceCreateFlags -> DeviceCreateFlags -> Bool)
-> (DeviceCreateFlags -> DeviceCreateFlags -> Bool)
-> (DeviceCreateFlags -> DeviceCreateFlags -> Bool)
-> (DeviceCreateFlags -> DeviceCreateFlags -> Bool)
-> (DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags)
-> (DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags)
-> Ord DeviceCreateFlags
DeviceCreateFlags -> DeviceCreateFlags -> Bool
DeviceCreateFlags -> DeviceCreateFlags -> Ordering
DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
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 :: DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
$cmin :: DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
max :: DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
$cmax :: DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
>= :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
$c>= :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
> :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
$c> :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
<= :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
$c<= :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
< :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
$c< :: DeviceCreateFlags -> DeviceCreateFlags -> Bool
compare :: DeviceCreateFlags -> DeviceCreateFlags -> Ordering
$ccompare :: DeviceCreateFlags -> DeviceCreateFlags -> Ordering
$cp1Ord :: Eq DeviceCreateFlags
Ord, Ptr b -> Int -> IO DeviceCreateFlags
Ptr b -> Int -> DeviceCreateFlags -> IO ()
Ptr DeviceCreateFlags -> IO DeviceCreateFlags
Ptr DeviceCreateFlags -> Int -> IO DeviceCreateFlags
Ptr DeviceCreateFlags -> Int -> DeviceCreateFlags -> IO ()
Ptr DeviceCreateFlags -> DeviceCreateFlags -> IO ()
DeviceCreateFlags -> Int
(DeviceCreateFlags -> Int)
-> (DeviceCreateFlags -> Int)
-> (Ptr DeviceCreateFlags -> Int -> IO DeviceCreateFlags)
-> (Ptr DeviceCreateFlags -> Int -> DeviceCreateFlags -> IO ())
-> (forall b. Ptr b -> Int -> IO DeviceCreateFlags)
-> (forall b. Ptr b -> Int -> DeviceCreateFlags -> IO ())
-> (Ptr DeviceCreateFlags -> IO DeviceCreateFlags)
-> (Ptr DeviceCreateFlags -> DeviceCreateFlags -> IO ())
-> Storable DeviceCreateFlags
forall b. Ptr b -> Int -> IO DeviceCreateFlags
forall b. Ptr b -> Int -> DeviceCreateFlags -> 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 DeviceCreateFlags -> DeviceCreateFlags -> IO ()
$cpoke :: Ptr DeviceCreateFlags -> DeviceCreateFlags -> IO ()
peek :: Ptr DeviceCreateFlags -> IO DeviceCreateFlags
$cpeek :: Ptr DeviceCreateFlags -> IO DeviceCreateFlags
pokeByteOff :: Ptr b -> Int -> DeviceCreateFlags -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> DeviceCreateFlags -> IO ()
peekByteOff :: Ptr b -> Int -> IO DeviceCreateFlags
$cpeekByteOff :: forall b. Ptr b -> Int -> IO DeviceCreateFlags
pokeElemOff :: Ptr DeviceCreateFlags -> Int -> DeviceCreateFlags -> IO ()
$cpokeElemOff :: Ptr DeviceCreateFlags -> Int -> DeviceCreateFlags -> IO ()
peekElemOff :: Ptr DeviceCreateFlags -> Int -> IO DeviceCreateFlags
$cpeekElemOff :: Ptr DeviceCreateFlags -> Int -> IO DeviceCreateFlags
alignment :: DeviceCreateFlags -> Int
$calignment :: DeviceCreateFlags -> Int
sizeOf :: DeviceCreateFlags -> Int
$csizeOf :: DeviceCreateFlags -> Int
Storable, DeviceCreateFlags
DeviceCreateFlags -> Zero DeviceCreateFlags
forall a. a -> Zero a
zero :: DeviceCreateFlags
$czero :: DeviceCreateFlags
Zero, Eq DeviceCreateFlags
DeviceCreateFlags
Eq DeviceCreateFlags =>
(DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags)
-> (DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags)
-> (DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags)
-> (DeviceCreateFlags -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> DeviceCreateFlags
-> (Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> Bool)
-> (DeviceCreateFlags -> Maybe Int)
-> (DeviceCreateFlags -> Int)
-> (DeviceCreateFlags -> Bool)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int -> DeviceCreateFlags)
-> (DeviceCreateFlags -> Int)
-> Bits DeviceCreateFlags
Int -> DeviceCreateFlags
DeviceCreateFlags -> Bool
DeviceCreateFlags -> Int
DeviceCreateFlags -> Maybe Int
DeviceCreateFlags -> DeviceCreateFlags
DeviceCreateFlags -> Int -> Bool
DeviceCreateFlags -> Int -> DeviceCreateFlags
DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
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 :: DeviceCreateFlags -> Int
$cpopCount :: DeviceCreateFlags -> Int
rotateR :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$crotateR :: DeviceCreateFlags -> Int -> DeviceCreateFlags
rotateL :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$crotateL :: DeviceCreateFlags -> Int -> DeviceCreateFlags
unsafeShiftR :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$cunsafeShiftR :: DeviceCreateFlags -> Int -> DeviceCreateFlags
shiftR :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$cshiftR :: DeviceCreateFlags -> Int -> DeviceCreateFlags
unsafeShiftL :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$cunsafeShiftL :: DeviceCreateFlags -> Int -> DeviceCreateFlags
shiftL :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$cshiftL :: DeviceCreateFlags -> Int -> DeviceCreateFlags
isSigned :: DeviceCreateFlags -> Bool
$cisSigned :: DeviceCreateFlags -> Bool
bitSize :: DeviceCreateFlags -> Int
$cbitSize :: DeviceCreateFlags -> Int
bitSizeMaybe :: DeviceCreateFlags -> Maybe Int
$cbitSizeMaybe :: DeviceCreateFlags -> Maybe Int
testBit :: DeviceCreateFlags -> Int -> Bool
$ctestBit :: DeviceCreateFlags -> Int -> Bool
complementBit :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$ccomplementBit :: DeviceCreateFlags -> Int -> DeviceCreateFlags
clearBit :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$cclearBit :: DeviceCreateFlags -> Int -> DeviceCreateFlags
setBit :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$csetBit :: DeviceCreateFlags -> Int -> DeviceCreateFlags
bit :: Int -> DeviceCreateFlags
$cbit :: Int -> DeviceCreateFlags
zeroBits :: DeviceCreateFlags
$czeroBits :: DeviceCreateFlags
rotate :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$crotate :: DeviceCreateFlags -> Int -> DeviceCreateFlags
shift :: DeviceCreateFlags -> Int -> DeviceCreateFlags
$cshift :: DeviceCreateFlags -> Int -> DeviceCreateFlags
complement :: DeviceCreateFlags -> DeviceCreateFlags
$ccomplement :: DeviceCreateFlags -> DeviceCreateFlags
xor :: DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
$cxor :: DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
.|. :: DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
$c.|. :: DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
.&. :: DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
$c.&. :: DeviceCreateFlags -> DeviceCreateFlags -> DeviceCreateFlags
$cp1Bits :: Eq DeviceCreateFlags
Bits)



instance Show DeviceCreateFlags where
  showsPrec :: Int -> DeviceCreateFlags -> ShowS
showsPrec p :: Int
p = \case
    DeviceCreateFlags x :: Flags
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "DeviceCreateFlags 0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. (Integral a, Show a) => a -> ShowS
showHex Flags
x)

instance Read DeviceCreateFlags where
  readPrec :: ReadPrec DeviceCreateFlags
readPrec = ReadPrec DeviceCreateFlags -> ReadPrec DeviceCreateFlags
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec DeviceCreateFlags)]
-> ReadPrec DeviceCreateFlags
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose []
                     ReadPrec DeviceCreateFlags
-> ReadPrec DeviceCreateFlags -> ReadPrec DeviceCreateFlags
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int -> ReadPrec DeviceCreateFlags -> ReadPrec DeviceCreateFlags
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "DeviceCreateFlags")
                       Flags
v <- ReadPrec Flags -> ReadPrec Flags
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Flags
forall a. Read a => ReadPrec a
readPrec
                       DeviceCreateFlags -> ReadPrec DeviceCreateFlags
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> DeviceCreateFlags
DeviceCreateFlags Flags
v)))