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

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

pattern $bVK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV :: VkCoarseSampleOrderTypeNV
$mVK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV :: forall {r}.
VkCoarseSampleOrderTypeNV -> (Void# -> r) -> (Void# -> r) -> r
VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV =
        VkCoarseSampleOrderTypeNV 0

pattern VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV ::
        VkCoarseSampleOrderTypeNV

pattern $bVK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV :: VkCoarseSampleOrderTypeNV
$mVK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV :: forall {r}.
VkCoarseSampleOrderTypeNV -> (Void# -> r) -> (Void# -> r) -> r
VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV =
        VkCoarseSampleOrderTypeNV 1

pattern VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV ::
        VkCoarseSampleOrderTypeNV

pattern $bVK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV :: VkCoarseSampleOrderTypeNV
$mVK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV :: forall {r}.
VkCoarseSampleOrderTypeNV -> (Void# -> r) -> (Void# -> r) -> r
VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV =
        VkCoarseSampleOrderTypeNV 2

pattern VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV ::
        VkCoarseSampleOrderTypeNV

pattern $bVK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV :: VkCoarseSampleOrderTypeNV
$mVK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV :: forall {r}.
VkCoarseSampleOrderTypeNV -> (Void# -> r) -> (Void# -> r) -> r
VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV =
        VkCoarseSampleOrderTypeNV 3