{-# OPTIONS_HADDOCK ignore-exports#-}
{-# LANGUAGE DataKinds                  #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE PatternSynonyms            #-}
{-# LANGUAGE Strict                     #-}
module Graphics.Vulkan.Types.Enum.PresentModeKHR
       (VkPresentModeKHR(VkPresentModeKHR, VK_PRESENT_MODE_IMMEDIATE_KHR,
                         VK_PRESENT_MODE_MAILBOX_KHR, VK_PRESENT_MODE_FIFO_KHR,
                         VK_PRESENT_MODE_FIFO_RELAXED_KHR))
       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#VkPresentModeKHR VkPresentModeKHR registry at www.khronos.org>
newtype VkPresentModeKHR = VkPresentModeKHR Int32
                           deriving (VkPresentModeKHR -> VkPresentModeKHR -> Bool
(VkPresentModeKHR -> VkPresentModeKHR -> Bool)
-> (VkPresentModeKHR -> VkPresentModeKHR -> Bool)
-> Eq VkPresentModeKHR
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
$c/= :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
== :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
$c== :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
Eq, Eq VkPresentModeKHR
Eq VkPresentModeKHR
-> (VkPresentModeKHR -> VkPresentModeKHR -> Ordering)
-> (VkPresentModeKHR -> VkPresentModeKHR -> Bool)
-> (VkPresentModeKHR -> VkPresentModeKHR -> Bool)
-> (VkPresentModeKHR -> VkPresentModeKHR -> Bool)
-> (VkPresentModeKHR -> VkPresentModeKHR -> Bool)
-> (VkPresentModeKHR -> VkPresentModeKHR -> VkPresentModeKHR)
-> (VkPresentModeKHR -> VkPresentModeKHR -> VkPresentModeKHR)
-> Ord VkPresentModeKHR
VkPresentModeKHR -> VkPresentModeKHR -> Bool
VkPresentModeKHR -> VkPresentModeKHR -> Ordering
VkPresentModeKHR -> VkPresentModeKHR -> VkPresentModeKHR
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 :: VkPresentModeKHR -> VkPresentModeKHR -> VkPresentModeKHR
$cmin :: VkPresentModeKHR -> VkPresentModeKHR -> VkPresentModeKHR
max :: VkPresentModeKHR -> VkPresentModeKHR -> VkPresentModeKHR
$cmax :: VkPresentModeKHR -> VkPresentModeKHR -> VkPresentModeKHR
>= :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
$c>= :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
> :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
$c> :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
<= :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
$c<= :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
< :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
$c< :: VkPresentModeKHR -> VkPresentModeKHR -> Bool
compare :: VkPresentModeKHR -> VkPresentModeKHR -> Ordering
$ccompare :: VkPresentModeKHR -> VkPresentModeKHR -> Ordering
Ord, Int -> VkPresentModeKHR
VkPresentModeKHR -> Int
VkPresentModeKHR -> [VkPresentModeKHR]
VkPresentModeKHR -> VkPresentModeKHR
VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR]
VkPresentModeKHR
-> VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR]
(VkPresentModeKHR -> VkPresentModeKHR)
-> (VkPresentModeKHR -> VkPresentModeKHR)
-> (Int -> VkPresentModeKHR)
-> (VkPresentModeKHR -> Int)
-> (VkPresentModeKHR -> [VkPresentModeKHR])
-> (VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR])
-> (VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR])
-> (VkPresentModeKHR
    -> VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR])
-> Enum VkPresentModeKHR
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 :: VkPresentModeKHR
-> VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR]
$cenumFromThenTo :: VkPresentModeKHR
-> VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR]
enumFromTo :: VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR]
$cenumFromTo :: VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR]
enumFromThen :: VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR]
$cenumFromThen :: VkPresentModeKHR -> VkPresentModeKHR -> [VkPresentModeKHR]
enumFrom :: VkPresentModeKHR -> [VkPresentModeKHR]
$cenumFrom :: VkPresentModeKHR -> [VkPresentModeKHR]
fromEnum :: VkPresentModeKHR -> Int
$cfromEnum :: VkPresentModeKHR -> Int
toEnum :: Int -> VkPresentModeKHR
$ctoEnum :: Int -> VkPresentModeKHR
pred :: VkPresentModeKHR -> VkPresentModeKHR
$cpred :: VkPresentModeKHR -> VkPresentModeKHR
succ :: VkPresentModeKHR -> VkPresentModeKHR
$csucc :: VkPresentModeKHR -> VkPresentModeKHR
Enum, Ptr VkPresentModeKHR -> IO VkPresentModeKHR
Ptr VkPresentModeKHR -> Int -> IO VkPresentModeKHR
Ptr VkPresentModeKHR -> Int -> VkPresentModeKHR -> IO ()
Ptr VkPresentModeKHR -> VkPresentModeKHR -> IO ()
VkPresentModeKHR -> Int
(VkPresentModeKHR -> Int)
-> (VkPresentModeKHR -> Int)
-> (Ptr VkPresentModeKHR -> Int -> IO VkPresentModeKHR)
-> (Ptr VkPresentModeKHR -> Int -> VkPresentModeKHR -> IO ())
-> (forall b. Ptr b -> Int -> IO VkPresentModeKHR)
-> (forall b. Ptr b -> Int -> VkPresentModeKHR -> IO ())
-> (Ptr VkPresentModeKHR -> IO VkPresentModeKHR)
-> (Ptr VkPresentModeKHR -> VkPresentModeKHR -> IO ())
-> Storable VkPresentModeKHR
forall b. Ptr b -> Int -> IO VkPresentModeKHR
forall b. Ptr b -> Int -> VkPresentModeKHR -> 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 VkPresentModeKHR -> VkPresentModeKHR -> IO ()
$cpoke :: Ptr VkPresentModeKHR -> VkPresentModeKHR -> IO ()
peek :: Ptr VkPresentModeKHR -> IO VkPresentModeKHR
$cpeek :: Ptr VkPresentModeKHR -> IO VkPresentModeKHR
pokeByteOff :: forall b. Ptr b -> Int -> VkPresentModeKHR -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> VkPresentModeKHR -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO VkPresentModeKHR
$cpeekByteOff :: forall b. Ptr b -> Int -> IO VkPresentModeKHR
pokeElemOff :: Ptr VkPresentModeKHR -> Int -> VkPresentModeKHR -> IO ()
$cpokeElemOff :: Ptr VkPresentModeKHR -> Int -> VkPresentModeKHR -> IO ()
peekElemOff :: Ptr VkPresentModeKHR -> Int -> IO VkPresentModeKHR
$cpeekElemOff :: Ptr VkPresentModeKHR -> Int -> IO VkPresentModeKHR
alignment :: VkPresentModeKHR -> Int
$calignment :: VkPresentModeKHR -> Int
sizeOf :: VkPresentModeKHR -> Int
$csizeOf :: VkPresentModeKHR -> Int
Storable)

instance Show VkPresentModeKHR where
    showsPrec :: Int -> VkPresentModeKHR -> ShowS
showsPrec Int
_ VkPresentModeKHR
VK_PRESENT_MODE_IMMEDIATE_KHR
      = String -> ShowS
showString String
"VK_PRESENT_MODE_IMMEDIATE_KHR"
    showsPrec Int
_ VkPresentModeKHR
VK_PRESENT_MODE_MAILBOX_KHR
      = String -> ShowS
showString String
"VK_PRESENT_MODE_MAILBOX_KHR"
    showsPrec Int
_ VkPresentModeKHR
VK_PRESENT_MODE_FIFO_KHR
      = String -> ShowS
showString String
"VK_PRESENT_MODE_FIFO_KHR"
    showsPrec Int
_ VkPresentModeKHR
VK_PRESENT_MODE_FIFO_RELAXED_KHR
      = String -> ShowS
showString String
"VK_PRESENT_MODE_FIFO_RELAXED_KHR"
    showsPrec Int
p (VkPresentModeKHR Int32
x)
      = Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
11)
          (String -> ShowS
showString String
"VkPresentModeKHR " 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 VkPresentModeKHR where
    readPrec :: ReadPrec VkPresentModeKHR
readPrec
      = ReadPrec VkPresentModeKHR -> ReadPrec VkPresentModeKHR
forall a. ReadPrec a -> ReadPrec a
parens
          ([(String, ReadPrec VkPresentModeKHR)] -> ReadPrec VkPresentModeKHR
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose
             [(String
"VK_PRESENT_MODE_IMMEDIATE_KHR",
               VkPresentModeKHR -> ReadPrec VkPresentModeKHR
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkPresentModeKHR
VK_PRESENT_MODE_IMMEDIATE_KHR),
              (String
"VK_PRESENT_MODE_MAILBOX_KHR", VkPresentModeKHR -> ReadPrec VkPresentModeKHR
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkPresentModeKHR
VK_PRESENT_MODE_MAILBOX_KHR),
              (String
"VK_PRESENT_MODE_FIFO_KHR", VkPresentModeKHR -> ReadPrec VkPresentModeKHR
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkPresentModeKHR
VK_PRESENT_MODE_FIFO_KHR),
              (String
"VK_PRESENT_MODE_FIFO_RELAXED_KHR",
               VkPresentModeKHR -> ReadPrec VkPresentModeKHR
forall (f :: * -> *) a. Applicative f => a -> f a
pure VkPresentModeKHR
VK_PRESENT_MODE_FIFO_RELAXED_KHR)]
             ReadPrec VkPresentModeKHR
-> ReadPrec VkPresentModeKHR -> ReadPrec VkPresentModeKHR
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
             Int -> ReadPrec VkPresentModeKHR -> ReadPrec VkPresentModeKHR
forall a. Int -> ReadPrec a -> ReadPrec a
prec Int
10
               (Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident String
"VkPresentModeKHR") ReadPrec ()
-> ReadPrec VkPresentModeKHR -> ReadPrec VkPresentModeKHR
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
>>
                  (Int32 -> VkPresentModeKHR
VkPresentModeKHR (Int32 -> VkPresentModeKHR)
-> ReadPrec Int32 -> ReadPrec VkPresentModeKHR
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_PRESENT_MODE_IMMEDIATE_KHR :: VkPresentModeKHR

pattern $bVK_PRESENT_MODE_IMMEDIATE_KHR :: VkPresentModeKHR
$mVK_PRESENT_MODE_IMMEDIATE_KHR :: forall {r}. VkPresentModeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_PRESENT_MODE_IMMEDIATE_KHR = VkPresentModeKHR 0

pattern VK_PRESENT_MODE_MAILBOX_KHR :: VkPresentModeKHR

pattern $bVK_PRESENT_MODE_MAILBOX_KHR :: VkPresentModeKHR
$mVK_PRESENT_MODE_MAILBOX_KHR :: forall {r}. VkPresentModeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_PRESENT_MODE_MAILBOX_KHR = VkPresentModeKHR 1

pattern VK_PRESENT_MODE_FIFO_KHR :: VkPresentModeKHR

pattern $bVK_PRESENT_MODE_FIFO_KHR :: VkPresentModeKHR
$mVK_PRESENT_MODE_FIFO_KHR :: forall {r}. VkPresentModeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_PRESENT_MODE_FIFO_KHR = VkPresentModeKHR 2

pattern VK_PRESENT_MODE_FIFO_RELAXED_KHR :: VkPresentModeKHR

pattern $bVK_PRESENT_MODE_FIFO_RELAXED_KHR :: VkPresentModeKHR
$mVK_PRESENT_MODE_FIFO_RELAXED_KHR :: forall {r}. VkPresentModeKHR -> (Void# -> r) -> (Void# -> r) -> r
VK_PRESENT_MODE_FIFO_RELAXED_KHR = VkPresentModeKHR 3