{-# OPTIONS_HADDOCK ignore-exports#-}
{-# LANGUAGE DataKinds                  #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE PatternSynonyms            #-}
{-# LANGUAGE Strict                     #-}
module Graphics.Vulkan.Types.Enum.DiscardRectangleModeEXT
       (VkDiscardRectangleModeEXT(VkDiscardRectangleModeEXT,
                                  VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
                                  VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT))
       where
import Foreign.Storable                (Storable)
import GHC.Read                        (choose, expectP)
import Graphics.Vulkan.Marshal         (Int32)
import Text.ParserCombinators.ReadPrec (prec, step, (+++))
import Text.Read                       (Read (..), parens)
import Text.Read.Lex                   (Lexeme (..))

-- | type = @enum@
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkDiscardRectangleModeEXT VkDiscardRectangleModeEXT registry at www.khronos.org>
newtype VkDiscardRectangleModeEXT = VkDiscardRectangleModeEXT Int32
                                    deriving (VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
(VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool)
-> (VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool)
-> Eq VkDiscardRectangleModeEXT
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
$c/= :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
== :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
$c== :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
Eq, Eq VkDiscardRectangleModeEXT
Eq VkDiscardRectangleModeEXT
-> (VkDiscardRectangleModeEXT
    -> VkDiscardRectangleModeEXT -> Ordering)
-> (VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool)
-> (VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool)
-> (VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool)
-> (VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool)
-> (VkDiscardRectangleModeEXT
    -> VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT)
-> (VkDiscardRectangleModeEXT
    -> VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT)
-> Ord VkDiscardRectangleModeEXT
VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Ordering
VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT
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 :: VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT
$cmin :: VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT
max :: VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT
$cmax :: VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT
>= :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
$c>= :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
> :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
$c> :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
<= :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
$c<= :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
< :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
$c< :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Bool
compare :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Ordering
$ccompare :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> Ordering
Ord, Int -> VkDiscardRectangleModeEXT
VkDiscardRectangleModeEXT -> Int
VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT]
VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT
VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT]
VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT
-> [VkDiscardRectangleModeEXT]
(VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT)
-> (VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT)
-> (Int -> VkDiscardRectangleModeEXT)
-> (VkDiscardRectangleModeEXT -> Int)
-> (VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT])
-> (VkDiscardRectangleModeEXT
    -> VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT])
-> (VkDiscardRectangleModeEXT
    -> VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT])
-> (VkDiscardRectangleModeEXT
    -> VkDiscardRectangleModeEXT
    -> VkDiscardRectangleModeEXT
    -> [VkDiscardRectangleModeEXT])
-> Enum VkDiscardRectangleModeEXT
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT
-> [VkDiscardRectangleModeEXT]
$cenumFromThenTo :: VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT
-> [VkDiscardRectangleModeEXT]
enumFromTo :: VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT]
$cenumFromTo :: VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT]
enumFromThen :: VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT]
$cenumFromThen :: VkDiscardRectangleModeEXT
-> VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT]
enumFrom :: VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT]
$cenumFrom :: VkDiscardRectangleModeEXT -> [VkDiscardRectangleModeEXT]
fromEnum :: VkDiscardRectangleModeEXT -> Int
$cfromEnum :: VkDiscardRectangleModeEXT -> Int
toEnum :: Int -> VkDiscardRectangleModeEXT
$ctoEnum :: Int -> VkDiscardRectangleModeEXT
pred :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT
$cpred :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT
succ :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT
$csucc :: VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT
Enum, Ptr VkDiscardRectangleModeEXT -> IO VkDiscardRectangleModeEXT
Ptr VkDiscardRectangleModeEXT
-> Int -> IO VkDiscardRectangleModeEXT
Ptr VkDiscardRectangleModeEXT
-> Int -> VkDiscardRectangleModeEXT -> IO ()
Ptr VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> IO ()
VkDiscardRectangleModeEXT -> Int
(VkDiscardRectangleModeEXT -> Int)
-> (VkDiscardRectangleModeEXT -> Int)
-> (Ptr VkDiscardRectangleModeEXT
    -> Int -> IO VkDiscardRectangleModeEXT)
-> (Ptr VkDiscardRectangleModeEXT
    -> Int -> VkDiscardRectangleModeEXT -> IO ())
-> (forall b. Ptr b -> Int -> IO VkDiscardRectangleModeEXT)
-> (forall b. Ptr b -> Int -> VkDiscardRectangleModeEXT -> IO ())
-> (Ptr VkDiscardRectangleModeEXT -> IO VkDiscardRectangleModeEXT)
-> (Ptr VkDiscardRectangleModeEXT
    -> VkDiscardRectangleModeEXT -> IO ())
-> Storable VkDiscardRectangleModeEXT
forall b. Ptr b -> Int -> IO VkDiscardRectangleModeEXT
forall b. Ptr b -> Int -> VkDiscardRectangleModeEXT -> 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 VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> IO ()
$cpoke :: Ptr VkDiscardRectangleModeEXT -> VkDiscardRectangleModeEXT -> IO ()
peek :: Ptr VkDiscardRectangleModeEXT -> IO VkDiscardRectangleModeEXT
$cpeek :: Ptr VkDiscardRectangleModeEXT -> IO VkDiscardRectangleModeEXT
pokeByteOff :: forall b. Ptr b -> Int -> VkDiscardRectangleModeEXT -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> VkDiscardRectangleModeEXT -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO VkDiscardRectangleModeEXT
$cpeekByteOff :: forall b. Ptr b -> Int -> IO VkDiscardRectangleModeEXT
pokeElemOff :: Ptr VkDiscardRectangleModeEXT
-> Int -> VkDiscardRectangleModeEXT -> IO ()
$cpokeElemOff :: Ptr VkDiscardRectangleModeEXT
-> Int -> VkDiscardRectangleModeEXT -> IO ()
peekElemOff :: Ptr VkDiscardRectangleModeEXT
-> Int -> IO VkDiscardRectangleModeEXT
$cpeekElemOff :: Ptr VkDiscardRectangleModeEXT
-> Int -> IO VkDiscardRectangleModeEXT
alignment :: VkDiscardRectangleModeEXT -> Int
$calignment :: VkDiscardRectangleModeEXT -> Int
sizeOf :: VkDiscardRectangleModeEXT -> Int
$csizeOf :: VkDiscardRectangleModeEXT -> Int
Storable)

instance Show VkDiscardRectangleModeEXT where
    showsPrec :: Int -> VkDiscardRectangleModeEXT -> ShowS
showsPrec Int
_ VkDiscardRectangleModeEXT
VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT
      = String -> ShowS
showString String
"VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"
    showsPrec Int
_ VkDiscardRectangleModeEXT
VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
      = String -> ShowS
showString String
"VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"
    showsPrec Int
p (VkDiscardRectangleModeEXT Int32
x)
      = Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
11)
          (String -> ShowS
showString String
"VkDiscardRectangleModeEXT " ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Int32 -> ShowS
forall a. Show a => Int -> a -> ShowS
showsPrec Int
11 Int32
x)

instance Read VkDiscardRectangleModeEXT where
    readPrec :: ReadPrec VkDiscardRectangleModeEXT
readPrec
      = ReadPrec VkDiscardRectangleModeEXT
-> ReadPrec VkDiscardRectangleModeEXT
forall a. ReadPrec a -> ReadPrec a
parens
          ([(String, ReadPrec VkDiscardRectangleModeEXT)]
-> ReadPrec VkDiscardRectangleModeEXT
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose
             [(String
"VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT",
               VkDiscardRectangleModeEXT -> ReadPrec VkDiscardRectangleModeEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkDiscardRectangleModeEXT
VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT),
              (String
"VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT",
               VkDiscardRectangleModeEXT -> ReadPrec VkDiscardRectangleModeEXT
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkDiscardRectangleModeEXT
VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT)]
             ReadPrec VkDiscardRectangleModeEXT
-> ReadPrec VkDiscardRectangleModeEXT
-> ReadPrec VkDiscardRectangleModeEXT
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
             Int
-> ReadPrec VkDiscardRectangleModeEXT
-> ReadPrec VkDiscardRectangleModeEXT
forall a. Int -> ReadPrec a -> ReadPrec a
prec Int
10
               (Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident String
"VkDiscardRectangleModeEXT") ReadPrec ()
-> ReadPrec VkDiscardRectangleModeEXT
-> ReadPrec VkDiscardRectangleModeEXT
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
                  (Int32 -> VkDiscardRectangleModeEXT
VkDiscardRectangleModeEXT (Int32 -> VkDiscardRectangleModeEXT)
-> ReadPrec Int32 -> ReadPrec VkDiscardRectangleModeEXT
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ReadPrec Int32 -> ReadPrec Int32
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Int32
forall a. Read a => ReadPrec a
readPrec)))

pattern VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT ::
        VkDiscardRectangleModeEXT

pattern $bVK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT :: VkDiscardRectangleModeEXT
$mVK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT :: forall {r}.
VkDiscardRectangleModeEXT -> (Void# -> r) -> (Void# -> r) -> r
VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT =
        VkDiscardRectangleModeEXT 0

pattern VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT ::
        VkDiscardRectangleModeEXT

pattern $bVK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT :: VkDiscardRectangleModeEXT
$mVK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT :: forall {r}.
VkDiscardRectangleModeEXT -> (Void# -> r) -> (Void# -> r) -> r
VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT =
        VkDiscardRectangleModeEXT 1