module Data.SpirV.Enum.FragmentShadingRate where

import Data.Bits (Bits)
import Data.String (IsString(..))
import Data.Word (Word32)
import Foreign (Storable(..))
import GHC.Read (Read(..))
import Text.ParserCombinators.ReadPrec (pfail)
import qualified GHC.Read as Read
import qualified Text.Read.Lex as Lex

newtype FragmentShadingRate = FragmentShadingRate Word32
  deriving (FragmentShadingRate -> FragmentShadingRate -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FragmentShadingRate -> FragmentShadingRate -> Bool
$c/= :: FragmentShadingRate -> FragmentShadingRate -> Bool
== :: FragmentShadingRate -> FragmentShadingRate -> Bool
$c== :: FragmentShadingRate -> FragmentShadingRate -> Bool
Eq, Eq FragmentShadingRate
FragmentShadingRate -> FragmentShadingRate -> Bool
FragmentShadingRate -> FragmentShadingRate -> Ordering
FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
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 :: FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
$cmin :: FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
max :: FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
$cmax :: FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
>= :: FragmentShadingRate -> FragmentShadingRate -> Bool
$c>= :: FragmentShadingRate -> FragmentShadingRate -> Bool
> :: FragmentShadingRate -> FragmentShadingRate -> Bool
$c> :: FragmentShadingRate -> FragmentShadingRate -> Bool
<= :: FragmentShadingRate -> FragmentShadingRate -> Bool
$c<= :: FragmentShadingRate -> FragmentShadingRate -> Bool
< :: FragmentShadingRate -> FragmentShadingRate -> Bool
$c< :: FragmentShadingRate -> FragmentShadingRate -> Bool
compare :: FragmentShadingRate -> FragmentShadingRate -> Ordering
$ccompare :: FragmentShadingRate -> FragmentShadingRate -> Ordering
Ord, Ptr FragmentShadingRate -> IO FragmentShadingRate
Ptr FragmentShadingRate -> Int -> IO FragmentShadingRate
Ptr FragmentShadingRate -> Int -> FragmentShadingRate -> IO ()
Ptr FragmentShadingRate -> FragmentShadingRate -> IO ()
FragmentShadingRate -> Int
forall b. Ptr b -> Int -> IO FragmentShadingRate
forall b. Ptr b -> Int -> FragmentShadingRate -> 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 FragmentShadingRate -> FragmentShadingRate -> IO ()
$cpoke :: Ptr FragmentShadingRate -> FragmentShadingRate -> IO ()
peek :: Ptr FragmentShadingRate -> IO FragmentShadingRate
$cpeek :: Ptr FragmentShadingRate -> IO FragmentShadingRate
pokeByteOff :: forall b. Ptr b -> Int -> FragmentShadingRate -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> FragmentShadingRate -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO FragmentShadingRate
$cpeekByteOff :: forall b. Ptr b -> Int -> IO FragmentShadingRate
pokeElemOff :: Ptr FragmentShadingRate -> Int -> FragmentShadingRate -> IO ()
$cpokeElemOff :: Ptr FragmentShadingRate -> Int -> FragmentShadingRate -> IO ()
peekElemOff :: Ptr FragmentShadingRate -> Int -> IO FragmentShadingRate
$cpeekElemOff :: Ptr FragmentShadingRate -> Int -> IO FragmentShadingRate
alignment :: FragmentShadingRate -> Int
$calignment :: FragmentShadingRate -> Int
sizeOf :: FragmentShadingRate -> Int
$csizeOf :: FragmentShadingRate -> Int
Storable, Eq FragmentShadingRate
FragmentShadingRate
Int -> FragmentShadingRate
FragmentShadingRate -> Bool
FragmentShadingRate -> Int
FragmentShadingRate -> Maybe Int
FragmentShadingRate -> FragmentShadingRate
FragmentShadingRate -> Int -> Bool
FragmentShadingRate -> Int -> FragmentShadingRate
FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
forall a.
Eq a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
popCount :: FragmentShadingRate -> Int
$cpopCount :: FragmentShadingRate -> Int
rotateR :: FragmentShadingRate -> Int -> FragmentShadingRate
$crotateR :: FragmentShadingRate -> Int -> FragmentShadingRate
rotateL :: FragmentShadingRate -> Int -> FragmentShadingRate
$crotateL :: FragmentShadingRate -> Int -> FragmentShadingRate
unsafeShiftR :: FragmentShadingRate -> Int -> FragmentShadingRate
$cunsafeShiftR :: FragmentShadingRate -> Int -> FragmentShadingRate
shiftR :: FragmentShadingRate -> Int -> FragmentShadingRate
$cshiftR :: FragmentShadingRate -> Int -> FragmentShadingRate
unsafeShiftL :: FragmentShadingRate -> Int -> FragmentShadingRate
$cunsafeShiftL :: FragmentShadingRate -> Int -> FragmentShadingRate
shiftL :: FragmentShadingRate -> Int -> FragmentShadingRate
$cshiftL :: FragmentShadingRate -> Int -> FragmentShadingRate
isSigned :: FragmentShadingRate -> Bool
$cisSigned :: FragmentShadingRate -> Bool
bitSize :: FragmentShadingRate -> Int
$cbitSize :: FragmentShadingRate -> Int
bitSizeMaybe :: FragmentShadingRate -> Maybe Int
$cbitSizeMaybe :: FragmentShadingRate -> Maybe Int
testBit :: FragmentShadingRate -> Int -> Bool
$ctestBit :: FragmentShadingRate -> Int -> Bool
complementBit :: FragmentShadingRate -> Int -> FragmentShadingRate
$ccomplementBit :: FragmentShadingRate -> Int -> FragmentShadingRate
clearBit :: FragmentShadingRate -> Int -> FragmentShadingRate
$cclearBit :: FragmentShadingRate -> Int -> FragmentShadingRate
setBit :: FragmentShadingRate -> Int -> FragmentShadingRate
$csetBit :: FragmentShadingRate -> Int -> FragmentShadingRate
bit :: Int -> FragmentShadingRate
$cbit :: Int -> FragmentShadingRate
zeroBits :: FragmentShadingRate
$czeroBits :: FragmentShadingRate
rotate :: FragmentShadingRate -> Int -> FragmentShadingRate
$crotate :: FragmentShadingRate -> Int -> FragmentShadingRate
shift :: FragmentShadingRate -> Int -> FragmentShadingRate
$cshift :: FragmentShadingRate -> Int -> FragmentShadingRate
complement :: FragmentShadingRate -> FragmentShadingRate
$ccomplement :: FragmentShadingRate -> FragmentShadingRate
xor :: FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
$cxor :: FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
.|. :: FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
$c.|. :: FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
.&. :: FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
$c.&. :: FragmentShadingRate -> FragmentShadingRate -> FragmentShadingRate
Bits)

pattern Vertical2Pixels :: FragmentShadingRate
pattern $bVertical2Pixels :: FragmentShadingRate
$mVertical2Pixels :: forall {r}.
FragmentShadingRate -> ((# #) -> r) -> ((# #) -> r) -> r
Vertical2Pixels = FragmentShadingRate 0x1

pattern Vertical4Pixels :: FragmentShadingRate
pattern $bVertical4Pixels :: FragmentShadingRate
$mVertical4Pixels :: forall {r}.
FragmentShadingRate -> ((# #) -> r) -> ((# #) -> r) -> r
Vertical4Pixels = FragmentShadingRate 0x2

pattern Horizontal2Pixels :: FragmentShadingRate
pattern $bHorizontal2Pixels :: FragmentShadingRate
$mHorizontal2Pixels :: forall {r}.
FragmentShadingRate -> ((# #) -> r) -> ((# #) -> r) -> r
Horizontal2Pixels = FragmentShadingRate 0x4

pattern Horizontal4Pixels :: FragmentShadingRate
pattern $bHorizontal4Pixels :: FragmentShadingRate
$mHorizontal4Pixels :: forall {r}.
FragmentShadingRate -> ((# #) -> r) -> ((# #) -> r) -> r
Horizontal4Pixels = FragmentShadingRate 0x8

toName :: IsString a => FragmentShadingRate -> a
toName :: forall a. IsString a => FragmentShadingRate -> a
toName FragmentShadingRate
x = case FragmentShadingRate
x of
  FragmentShadingRate
Vertical2Pixels -> a
"Vertical2Pixels"
  FragmentShadingRate
Vertical4Pixels -> a
"Vertical4Pixels"
  FragmentShadingRate
Horizontal2Pixels -> a
"Horizontal2Pixels"
  FragmentShadingRate
Horizontal4Pixels -> a
"Horizontal4Pixels"
  FragmentShadingRate
unknown -> forall a. IsString a => [Char] -> a
fromString forall a b. (a -> b) -> a -> b
$ [Char]
"FragmentShadingRate " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> [Char]
show FragmentShadingRate
unknown

instance Show FragmentShadingRate where
  show :: FragmentShadingRate -> [Char]
show = forall a. IsString a => FragmentShadingRate -> a
toName

fromName :: (IsString a, Eq a) => a -> Maybe FragmentShadingRate
fromName :: forall a. (IsString a, Eq a) => a -> Maybe FragmentShadingRate
fromName a
x = case a
x of
  a
"Vertical2Pixels" -> forall a. a -> Maybe a
Just FragmentShadingRate
Vertical2Pixels
  a
"Vertical4Pixels" -> forall a. a -> Maybe a
Just FragmentShadingRate
Vertical4Pixels
  a
"Horizontal2Pixels" -> forall a. a -> Maybe a
Just FragmentShadingRate
Horizontal2Pixels
  a
"Horizontal4Pixels" -> forall a. a -> Maybe a
Just FragmentShadingRate
Horizontal4Pixels
  a
_unknown -> forall a. Maybe a
Nothing

instance Read FragmentShadingRate where
  readPrec :: ReadPrec FragmentShadingRate
readPrec = forall a. ReadPrec a -> ReadPrec a
Read.parens do
    Lex.Ident [Char]
s <- ReadPrec Lexeme
Read.lexP
    forall b a. b -> (a -> b) -> Maybe a -> b
maybe forall a. ReadPrec a
pfail forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. (a -> b) -> a -> b
$ forall a. (IsString a, Eq a) => a -> Maybe FragmentShadingRate
fromName [Char]
s