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

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

pattern $bVK_TIME_DOMAIN_DEVICE_EXT :: VkTimeDomainEXT
$mVK_TIME_DOMAIN_DEVICE_EXT :: forall {r}. VkTimeDomainEXT -> (Void# -> r) -> (Void# -> r) -> r
VK_TIME_DOMAIN_DEVICE_EXT = VkTimeDomainEXT 0

pattern VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT :: VkTimeDomainEXT

pattern $bVK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT :: VkTimeDomainEXT
$mVK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT :: forall {r}. VkTimeDomainEXT -> (Void# -> r) -> (Void# -> r) -> r
VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = VkTimeDomainEXT 1

pattern VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT :: VkTimeDomainEXT

pattern $bVK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT :: VkTimeDomainEXT
$mVK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT :: forall {r}. VkTimeDomainEXT -> (Void# -> r) -> (Void# -> r) -> r
VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = VkTimeDomainEXT 2

pattern VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT ::
        VkTimeDomainEXT

pattern $bVK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT :: VkTimeDomainEXT
$mVK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT :: forall {r}. VkTimeDomainEXT -> (Void# -> r) -> (Void# -> r) -> r
VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT =
        VkTimeDomainEXT 3