{-# OPTIONS_HADDOCK ignore-exports#-}
{-# LANGUAGE DataKinds                  #-}
{-# LANGUAGE DeriveDataTypeable         #-}
{-# LANGUAGE DeriveGeneric              #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE PatternSynonyms            #-}
{-# LANGUAGE Strict                     #-}
module Graphics.Vulkan.Types.Enum.SharingMode
       (VkSharingMode(VkSharingMode, VK_SHARING_MODE_EXCLUSIVE,
                      VK_SHARING_MODE_CONCURRENT))
       where
import           Data.Data                       (Data)
import           Foreign.Storable                (Storable)
import           GHC.Generics                    (Generic)
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.1-extensions/html/vkspec.html#VkSharingMode VkSharingMode registry at www.khronos.org>
newtype VkSharingMode = VkSharingMode Int32
                          deriving (VkSharingMode -> VkSharingMode -> Bool
(VkSharingMode -> VkSharingMode -> Bool)
-> (VkSharingMode -> VkSharingMode -> Bool) -> Eq VkSharingMode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VkSharingMode -> VkSharingMode -> Bool
$c/= :: VkSharingMode -> VkSharingMode -> Bool
== :: VkSharingMode -> VkSharingMode -> Bool
$c== :: VkSharingMode -> VkSharingMode -> Bool
Eq, Eq VkSharingMode
Eq VkSharingMode
-> (VkSharingMode -> VkSharingMode -> Ordering)
-> (VkSharingMode -> VkSharingMode -> Bool)
-> (VkSharingMode -> VkSharingMode -> Bool)
-> (VkSharingMode -> VkSharingMode -> Bool)
-> (VkSharingMode -> VkSharingMode -> Bool)
-> (VkSharingMode -> VkSharingMode -> VkSharingMode)
-> (VkSharingMode -> VkSharingMode -> VkSharingMode)
-> Ord VkSharingMode
VkSharingMode -> VkSharingMode -> Bool
VkSharingMode -> VkSharingMode -> Ordering
VkSharingMode -> VkSharingMode -> VkSharingMode
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 :: VkSharingMode -> VkSharingMode -> VkSharingMode
$cmin :: VkSharingMode -> VkSharingMode -> VkSharingMode
max :: VkSharingMode -> VkSharingMode -> VkSharingMode
$cmax :: VkSharingMode -> VkSharingMode -> VkSharingMode
>= :: VkSharingMode -> VkSharingMode -> Bool
$c>= :: VkSharingMode -> VkSharingMode -> Bool
> :: VkSharingMode -> VkSharingMode -> Bool
$c> :: VkSharingMode -> VkSharingMode -> Bool
<= :: VkSharingMode -> VkSharingMode -> Bool
$c<= :: VkSharingMode -> VkSharingMode -> Bool
< :: VkSharingMode -> VkSharingMode -> Bool
$c< :: VkSharingMode -> VkSharingMode -> Bool
compare :: VkSharingMode -> VkSharingMode -> Ordering
$ccompare :: VkSharingMode -> VkSharingMode -> Ordering
$cp1Ord :: Eq VkSharingMode
Ord, Integer -> VkSharingMode
VkSharingMode -> VkSharingMode
VkSharingMode -> VkSharingMode -> VkSharingMode
(VkSharingMode -> VkSharingMode -> VkSharingMode)
-> (VkSharingMode -> VkSharingMode -> VkSharingMode)
-> (VkSharingMode -> VkSharingMode -> VkSharingMode)
-> (VkSharingMode -> VkSharingMode)
-> (VkSharingMode -> VkSharingMode)
-> (VkSharingMode -> VkSharingMode)
-> (Integer -> VkSharingMode)
-> Num VkSharingMode
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
fromInteger :: Integer -> VkSharingMode
$cfromInteger :: Integer -> VkSharingMode
signum :: VkSharingMode -> VkSharingMode
$csignum :: VkSharingMode -> VkSharingMode
abs :: VkSharingMode -> VkSharingMode
$cabs :: VkSharingMode -> VkSharingMode
negate :: VkSharingMode -> VkSharingMode
$cnegate :: VkSharingMode -> VkSharingMode
* :: VkSharingMode -> VkSharingMode -> VkSharingMode
$c* :: VkSharingMode -> VkSharingMode -> VkSharingMode
- :: VkSharingMode -> VkSharingMode -> VkSharingMode
$c- :: VkSharingMode -> VkSharingMode -> VkSharingMode
+ :: VkSharingMode -> VkSharingMode -> VkSharingMode
$c+ :: VkSharingMode -> VkSharingMode -> VkSharingMode
Num, VkSharingMode
VkSharingMode -> VkSharingMode -> Bounded VkSharingMode
forall a. a -> a -> Bounded a
maxBound :: VkSharingMode
$cmaxBound :: VkSharingMode
minBound :: VkSharingMode
$cminBound :: VkSharingMode
Bounded, Ptr b -> Int -> IO VkSharingMode
Ptr b -> Int -> VkSharingMode -> IO ()
Ptr VkSharingMode -> IO VkSharingMode
Ptr VkSharingMode -> Int -> IO VkSharingMode
Ptr VkSharingMode -> Int -> VkSharingMode -> IO ()
Ptr VkSharingMode -> VkSharingMode -> IO ()
VkSharingMode -> Int
(VkSharingMode -> Int)
-> (VkSharingMode -> Int)
-> (Ptr VkSharingMode -> Int -> IO VkSharingMode)
-> (Ptr VkSharingMode -> Int -> VkSharingMode -> IO ())
-> (forall b. Ptr b -> Int -> IO VkSharingMode)
-> (forall b. Ptr b -> Int -> VkSharingMode -> IO ())
-> (Ptr VkSharingMode -> IO VkSharingMode)
-> (Ptr VkSharingMode -> VkSharingMode -> IO ())
-> Storable VkSharingMode
forall b. Ptr b -> Int -> IO VkSharingMode
forall b. Ptr b -> Int -> VkSharingMode -> 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 VkSharingMode -> VkSharingMode -> IO ()
$cpoke :: Ptr VkSharingMode -> VkSharingMode -> IO ()
peek :: Ptr VkSharingMode -> IO VkSharingMode
$cpeek :: Ptr VkSharingMode -> IO VkSharingMode
pokeByteOff :: Ptr b -> Int -> VkSharingMode -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> VkSharingMode -> IO ()
peekByteOff :: Ptr b -> Int -> IO VkSharingMode
$cpeekByteOff :: forall b. Ptr b -> Int -> IO VkSharingMode
pokeElemOff :: Ptr VkSharingMode -> Int -> VkSharingMode -> IO ()
$cpokeElemOff :: Ptr VkSharingMode -> Int -> VkSharingMode -> IO ()
peekElemOff :: Ptr VkSharingMode -> Int -> IO VkSharingMode
$cpeekElemOff :: Ptr VkSharingMode -> Int -> IO VkSharingMode
alignment :: VkSharingMode -> Int
$calignment :: VkSharingMode -> Int
sizeOf :: VkSharingMode -> Int
$csizeOf :: VkSharingMode -> Int
Storable, Int -> VkSharingMode
VkSharingMode -> Int
VkSharingMode -> [VkSharingMode]
VkSharingMode -> VkSharingMode
VkSharingMode -> VkSharingMode -> [VkSharingMode]
VkSharingMode -> VkSharingMode -> VkSharingMode -> [VkSharingMode]
(VkSharingMode -> VkSharingMode)
-> (VkSharingMode -> VkSharingMode)
-> (Int -> VkSharingMode)
-> (VkSharingMode -> Int)
-> (VkSharingMode -> [VkSharingMode])
-> (VkSharingMode -> VkSharingMode -> [VkSharingMode])
-> (VkSharingMode -> VkSharingMode -> [VkSharingMode])
-> (VkSharingMode
    -> VkSharingMode -> VkSharingMode -> [VkSharingMode])
-> Enum VkSharingMode
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 :: VkSharingMode -> VkSharingMode -> VkSharingMode -> [VkSharingMode]
$cenumFromThenTo :: VkSharingMode -> VkSharingMode -> VkSharingMode -> [VkSharingMode]
enumFromTo :: VkSharingMode -> VkSharingMode -> [VkSharingMode]
$cenumFromTo :: VkSharingMode -> VkSharingMode -> [VkSharingMode]
enumFromThen :: VkSharingMode -> VkSharingMode -> [VkSharingMode]
$cenumFromThen :: VkSharingMode -> VkSharingMode -> [VkSharingMode]
enumFrom :: VkSharingMode -> [VkSharingMode]
$cenumFrom :: VkSharingMode -> [VkSharingMode]
fromEnum :: VkSharingMode -> Int
$cfromEnum :: VkSharingMode -> Int
toEnum :: Int -> VkSharingMode
$ctoEnum :: Int -> VkSharingMode
pred :: VkSharingMode -> VkSharingMode
$cpred :: VkSharingMode -> VkSharingMode
succ :: VkSharingMode -> VkSharingMode
$csucc :: VkSharingMode -> VkSharingMode
Enum, Typeable VkSharingMode
DataType
Constr
Typeable VkSharingMode
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> VkSharingMode -> c VkSharingMode)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c VkSharingMode)
-> (VkSharingMode -> Constr)
-> (VkSharingMode -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c VkSharingMode))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e))
    -> Maybe (c VkSharingMode))
-> ((forall b. Data b => b -> b) -> VkSharingMode -> VkSharingMode)
-> (forall r r'.
    (r -> r' -> r)
    -> r -> (forall d. Data d => d -> r') -> VkSharingMode -> r)
-> (forall r r'.
    (r' -> r -> r)
    -> r -> (forall d. Data d => d -> r') -> VkSharingMode -> r)
-> (forall u. (forall d. Data d => d -> u) -> VkSharingMode -> [u])
-> (forall u.
    Int -> (forall d. Data d => d -> u) -> VkSharingMode -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode)
-> Data VkSharingMode
VkSharingMode -> DataType
VkSharingMode -> Constr
(forall b. Data b => b -> b) -> VkSharingMode -> VkSharingMode
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VkSharingMode -> c VkSharingMode
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c VkSharingMode
forall a.
Typeable a
-> (forall (c :: * -> *).
    (forall d b. Data d => c (d -> b) -> d -> c b)
    -> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
    (forall b r. Data b => c (b -> r) -> c r)
    -> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
    Typeable t =>
    (forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
    Typeable t =>
    (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
    (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
    (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
    Monad m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
    MonadPlus m =>
    (forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> VkSharingMode -> u
forall u. (forall d. Data d => d -> u) -> VkSharingMode -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> VkSharingMode -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> VkSharingMode -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c VkSharingMode
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VkSharingMode -> c VkSharingMode
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c VkSharingMode)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c VkSharingMode)
$cVkSharingMode :: Constr
$tVkSharingMode :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode
gmapMp :: (forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode
gmapM :: (forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> VkSharingMode -> m VkSharingMode
gmapQi :: Int -> (forall d. Data d => d -> u) -> VkSharingMode -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> VkSharingMode -> u
gmapQ :: (forall d. Data d => d -> u) -> VkSharingMode -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> VkSharingMode -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> VkSharingMode -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> VkSharingMode -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> VkSharingMode -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> VkSharingMode -> r
gmapT :: (forall b. Data b => b -> b) -> VkSharingMode -> VkSharingMode
$cgmapT :: (forall b. Data b => b -> b) -> VkSharingMode -> VkSharingMode
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c VkSharingMode)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c VkSharingMode)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c VkSharingMode)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c VkSharingMode)
dataTypeOf :: VkSharingMode -> DataType
$cdataTypeOf :: VkSharingMode -> DataType
toConstr :: VkSharingMode -> Constr
$ctoConstr :: VkSharingMode -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c VkSharingMode
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c VkSharingMode
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VkSharingMode -> c VkSharingMode
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> VkSharingMode -> c VkSharingMode
$cp1Data :: Typeable VkSharingMode
Data, (forall x. VkSharingMode -> Rep VkSharingMode x)
-> (forall x. Rep VkSharingMode x -> VkSharingMode)
-> Generic VkSharingMode
forall x. Rep VkSharingMode x -> VkSharingMode
forall x. VkSharingMode -> Rep VkSharingMode x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep VkSharingMode x -> VkSharingMode
$cfrom :: forall x. VkSharingMode -> Rep VkSharingMode x
Generic)

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

pattern $bVK_SHARING_MODE_EXCLUSIVE :: VkSharingMode
$mVK_SHARING_MODE_EXCLUSIVE :: forall r. VkSharingMode -> (Void# -> r) -> (Void# -> r) -> r
VK_SHARING_MODE_EXCLUSIVE = VkSharingMode 0

pattern VK_SHARING_MODE_CONCURRENT :: VkSharingMode

pattern $bVK_SHARING_MODE_CONCURRENT :: VkSharingMode
$mVK_SHARING_MODE_CONCURRENT :: forall r. VkSharingMode -> (Void# -> r) -> (Void# -> r) -> r
VK_SHARING_MODE_CONCURRENT = VkSharingMode 1