module Data.SpirV.Enum.ImageFormat where

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 ImageFormat = ImageFormat Word32
  deriving (ImageFormat -> ImageFormat -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImageFormat -> ImageFormat -> Bool
$c/= :: ImageFormat -> ImageFormat -> Bool
== :: ImageFormat -> ImageFormat -> Bool
$c== :: ImageFormat -> ImageFormat -> Bool
Eq, Eq ImageFormat
ImageFormat -> ImageFormat -> Bool
ImageFormat -> ImageFormat -> Ordering
ImageFormat -> ImageFormat -> ImageFormat
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 :: ImageFormat -> ImageFormat -> ImageFormat
$cmin :: ImageFormat -> ImageFormat -> ImageFormat
max :: ImageFormat -> ImageFormat -> ImageFormat
$cmax :: ImageFormat -> ImageFormat -> ImageFormat
>= :: ImageFormat -> ImageFormat -> Bool
$c>= :: ImageFormat -> ImageFormat -> Bool
> :: ImageFormat -> ImageFormat -> Bool
$c> :: ImageFormat -> ImageFormat -> Bool
<= :: ImageFormat -> ImageFormat -> Bool
$c<= :: ImageFormat -> ImageFormat -> Bool
< :: ImageFormat -> ImageFormat -> Bool
$c< :: ImageFormat -> ImageFormat -> Bool
compare :: ImageFormat -> ImageFormat -> Ordering
$ccompare :: ImageFormat -> ImageFormat -> Ordering
Ord, Ptr ImageFormat -> IO ImageFormat
Ptr ImageFormat -> Int -> IO ImageFormat
Ptr ImageFormat -> Int -> ImageFormat -> IO ()
Ptr ImageFormat -> ImageFormat -> IO ()
ImageFormat -> Int
forall b. Ptr b -> Int -> IO ImageFormat
forall b. Ptr b -> Int -> ImageFormat -> 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 ImageFormat -> ImageFormat -> IO ()
$cpoke :: Ptr ImageFormat -> ImageFormat -> IO ()
peek :: Ptr ImageFormat -> IO ImageFormat
$cpeek :: Ptr ImageFormat -> IO ImageFormat
pokeByteOff :: forall b. Ptr b -> Int -> ImageFormat -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ImageFormat -> IO ()
peekByteOff :: forall b. Ptr b -> Int -> IO ImageFormat
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ImageFormat
pokeElemOff :: Ptr ImageFormat -> Int -> ImageFormat -> IO ()
$cpokeElemOff :: Ptr ImageFormat -> Int -> ImageFormat -> IO ()
peekElemOff :: Ptr ImageFormat -> Int -> IO ImageFormat
$cpeekElemOff :: Ptr ImageFormat -> Int -> IO ImageFormat
alignment :: ImageFormat -> Int
$calignment :: ImageFormat -> Int
sizeOf :: ImageFormat -> Int
$csizeOf :: ImageFormat -> Int
Storable)

pattern Unknown :: ImageFormat
pattern $bUnknown :: ImageFormat
$mUnknown :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Unknown = ImageFormat 0

pattern Rgba32f :: ImageFormat
pattern $bRgba32f :: ImageFormat
$mRgba32f :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba32f = ImageFormat 1

pattern Rgba16f :: ImageFormat
pattern $bRgba16f :: ImageFormat
$mRgba16f :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba16f = ImageFormat 2

pattern R32f :: ImageFormat
pattern $bR32f :: ImageFormat
$mR32f :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R32f = ImageFormat 3

pattern Rgba8 :: ImageFormat
pattern $bRgba8 :: ImageFormat
$mRgba8 :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba8 = ImageFormat 4

pattern Rgba8Snorm :: ImageFormat
pattern $bRgba8Snorm :: ImageFormat
$mRgba8Snorm :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba8Snorm = ImageFormat 5

pattern Rg32f :: ImageFormat
pattern $bRg32f :: ImageFormat
$mRg32f :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg32f = ImageFormat 6

pattern Rg16f :: ImageFormat
pattern $bRg16f :: ImageFormat
$mRg16f :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg16f = ImageFormat 7

pattern R11fG11fB10f :: ImageFormat
pattern $bR11fG11fB10f :: ImageFormat
$mR11fG11fB10f :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R11fG11fB10f = ImageFormat 8

pattern R16f :: ImageFormat
pattern $bR16f :: ImageFormat
$mR16f :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R16f = ImageFormat 9

pattern Rgba16 :: ImageFormat
pattern $bRgba16 :: ImageFormat
$mRgba16 :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba16 = ImageFormat 10

pattern Rgb10A2 :: ImageFormat
pattern $bRgb10A2 :: ImageFormat
$mRgb10A2 :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgb10A2 = ImageFormat 11

pattern Rg16 :: ImageFormat
pattern $bRg16 :: ImageFormat
$mRg16 :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg16 = ImageFormat 12

pattern Rg8 :: ImageFormat
pattern $bRg8 :: ImageFormat
$mRg8 :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg8 = ImageFormat 13

pattern R16 :: ImageFormat
pattern $bR16 :: ImageFormat
$mR16 :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R16 = ImageFormat 14

pattern R8 :: ImageFormat
pattern $bR8 :: ImageFormat
$mR8 :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R8 = ImageFormat 15

pattern Rgba16Snorm :: ImageFormat
pattern $bRgba16Snorm :: ImageFormat
$mRgba16Snorm :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba16Snorm = ImageFormat 16

pattern Rg16Snorm :: ImageFormat
pattern $bRg16Snorm :: ImageFormat
$mRg16Snorm :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg16Snorm = ImageFormat 17

pattern Rg8Snorm :: ImageFormat
pattern $bRg8Snorm :: ImageFormat
$mRg8Snorm :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg8Snorm = ImageFormat 18

pattern R16Snorm :: ImageFormat
pattern $bR16Snorm :: ImageFormat
$mR16Snorm :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R16Snorm = ImageFormat 19

pattern R8Snorm :: ImageFormat
pattern $bR8Snorm :: ImageFormat
$mR8Snorm :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R8Snorm = ImageFormat 20

pattern Rgba32i :: ImageFormat
pattern $bRgba32i :: ImageFormat
$mRgba32i :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba32i = ImageFormat 21

pattern Rgba16i :: ImageFormat
pattern $bRgba16i :: ImageFormat
$mRgba16i :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba16i = ImageFormat 22

pattern Rgba8i :: ImageFormat
pattern $bRgba8i :: ImageFormat
$mRgba8i :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba8i = ImageFormat 23

pattern R32i :: ImageFormat
pattern $bR32i :: ImageFormat
$mR32i :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R32i = ImageFormat 24

pattern Rg32i :: ImageFormat
pattern $bRg32i :: ImageFormat
$mRg32i :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg32i = ImageFormat 25

pattern Rg16i :: ImageFormat
pattern $bRg16i :: ImageFormat
$mRg16i :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg16i = ImageFormat 26

pattern Rg8i :: ImageFormat
pattern $bRg8i :: ImageFormat
$mRg8i :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg8i = ImageFormat 27

pattern R16i :: ImageFormat
pattern $bR16i :: ImageFormat
$mR16i :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R16i = ImageFormat 28

pattern R8i :: ImageFormat
pattern $bR8i :: ImageFormat
$mR8i :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R8i = ImageFormat 29

pattern Rgba32ui :: ImageFormat
pattern $bRgba32ui :: ImageFormat
$mRgba32ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba32ui = ImageFormat 30

pattern Rgba16ui :: ImageFormat
pattern $bRgba16ui :: ImageFormat
$mRgba16ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba16ui = ImageFormat 31

pattern Rgba8ui :: ImageFormat
pattern $bRgba8ui :: ImageFormat
$mRgba8ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgba8ui = ImageFormat 32

pattern R32ui :: ImageFormat
pattern $bR32ui :: ImageFormat
$mR32ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R32ui = ImageFormat 33

pattern Rgb10a2ui :: ImageFormat
pattern $bRgb10a2ui :: ImageFormat
$mRgb10a2ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rgb10a2ui = ImageFormat 34

pattern Rg32ui :: ImageFormat
pattern $bRg32ui :: ImageFormat
$mRg32ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg32ui = ImageFormat 35

pattern Rg16ui :: ImageFormat
pattern $bRg16ui :: ImageFormat
$mRg16ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg16ui = ImageFormat 36

pattern Rg8ui :: ImageFormat
pattern $bRg8ui :: ImageFormat
$mRg8ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
Rg8ui = ImageFormat 37

pattern R16ui :: ImageFormat
pattern $bR16ui :: ImageFormat
$mR16ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R16ui = ImageFormat 38

pattern R8ui :: ImageFormat
pattern $bR8ui :: ImageFormat
$mR8ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R8ui = ImageFormat 39

pattern R64ui :: ImageFormat
pattern $bR64ui :: ImageFormat
$mR64ui :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R64ui = ImageFormat 40

pattern R64i :: ImageFormat
pattern $bR64i :: ImageFormat
$mR64i :: forall {r}. ImageFormat -> ((# #) -> r) -> ((# #) -> r) -> r
R64i = ImageFormat 41

toName :: IsString a => ImageFormat -> a
toName :: forall a. IsString a => ImageFormat -> a
toName ImageFormat
x = case ImageFormat
x of
  ImageFormat
Unknown -> a
"Unknown"
  ImageFormat
Rgba32f -> a
"Rgba32f"
  ImageFormat
Rgba16f -> a
"Rgba16f"
  ImageFormat
R32f -> a
"R32f"
  ImageFormat
Rgba8 -> a
"Rgba8"
  ImageFormat
Rgba8Snorm -> a
"Rgba8Snorm"
  ImageFormat
Rg32f -> a
"Rg32f"
  ImageFormat
Rg16f -> a
"Rg16f"
  ImageFormat
R11fG11fB10f -> a
"R11fG11fB10f"
  ImageFormat
R16f -> a
"R16f"
  ImageFormat
Rgba16 -> a
"Rgba16"
  ImageFormat
Rgb10A2 -> a
"Rgb10A2"
  ImageFormat
Rg16 -> a
"Rg16"
  ImageFormat
Rg8 -> a
"Rg8"
  ImageFormat
R16 -> a
"R16"
  ImageFormat
R8 -> a
"R8"
  ImageFormat
Rgba16Snorm -> a
"Rgba16Snorm"
  ImageFormat
Rg16Snorm -> a
"Rg16Snorm"
  ImageFormat
Rg8Snorm -> a
"Rg8Snorm"
  ImageFormat
R16Snorm -> a
"R16Snorm"
  ImageFormat
R8Snorm -> a
"R8Snorm"
  ImageFormat
Rgba32i -> a
"Rgba32i"
  ImageFormat
Rgba16i -> a
"Rgba16i"
  ImageFormat
Rgba8i -> a
"Rgba8i"
  ImageFormat
R32i -> a
"R32i"
  ImageFormat
Rg32i -> a
"Rg32i"
  ImageFormat
Rg16i -> a
"Rg16i"
  ImageFormat
Rg8i -> a
"Rg8i"
  ImageFormat
R16i -> a
"R16i"
  ImageFormat
R8i -> a
"R8i"
  ImageFormat
Rgba32ui -> a
"Rgba32ui"
  ImageFormat
Rgba16ui -> a
"Rgba16ui"
  ImageFormat
Rgba8ui -> a
"Rgba8ui"
  ImageFormat
R32ui -> a
"R32ui"
  ImageFormat
Rgb10a2ui -> a
"Rgb10a2ui"
  ImageFormat
Rg32ui -> a
"Rg32ui"
  ImageFormat
Rg16ui -> a
"Rg16ui"
  ImageFormat
Rg8ui -> a
"Rg8ui"
  ImageFormat
R16ui -> a
"R16ui"
  ImageFormat
R8ui -> a
"R8ui"
  ImageFormat
R64ui -> a
"R64ui"
  ImageFormat
R64i -> a
"R64i"
  ImageFormat
unknown -> forall a. IsString a => [Char] -> a
fromString forall a b. (a -> b) -> a -> b
$ [Char]
"ImageFormat " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> [Char]
show ImageFormat
unknown

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

fromName :: (IsString a, Eq a) => a -> Maybe ImageFormat
fromName :: forall a. (IsString a, Eq a) => a -> Maybe ImageFormat
fromName a
x = case a
x of
  a
"Unknown" -> forall a. a -> Maybe a
Just ImageFormat
Unknown
  a
"Rgba32f" -> forall a. a -> Maybe a
Just ImageFormat
Rgba32f
  a
"Rgba16f" -> forall a. a -> Maybe a
Just ImageFormat
Rgba16f
  a
"R32f" -> forall a. a -> Maybe a
Just ImageFormat
R32f
  a
"Rgba8" -> forall a. a -> Maybe a
Just ImageFormat
Rgba8
  a
"Rgba8Snorm" -> forall a. a -> Maybe a
Just ImageFormat
Rgba8Snorm
  a
"Rg32f" -> forall a. a -> Maybe a
Just ImageFormat
Rg32f
  a
"Rg16f" -> forall a. a -> Maybe a
Just ImageFormat
Rg16f
  a
"R11fG11fB10f" -> forall a. a -> Maybe a
Just ImageFormat
R11fG11fB10f
  a
"R16f" -> forall a. a -> Maybe a
Just ImageFormat
R16f
  a
"Rgba16" -> forall a. a -> Maybe a
Just ImageFormat
Rgba16
  a
"Rgb10A2" -> forall a. a -> Maybe a
Just ImageFormat
Rgb10A2
  a
"Rg16" -> forall a. a -> Maybe a
Just ImageFormat
Rg16
  a
"Rg8" -> forall a. a -> Maybe a
Just ImageFormat
Rg8
  a
"R16" -> forall a. a -> Maybe a
Just ImageFormat
R16
  a
"R8" -> forall a. a -> Maybe a
Just ImageFormat
R8
  a
"Rgba16Snorm" -> forall a. a -> Maybe a
Just ImageFormat
Rgba16Snorm
  a
"Rg16Snorm" -> forall a. a -> Maybe a
Just ImageFormat
Rg16Snorm
  a
"Rg8Snorm" -> forall a. a -> Maybe a
Just ImageFormat
Rg8Snorm
  a
"R16Snorm" -> forall a. a -> Maybe a
Just ImageFormat
R16Snorm
  a
"R8Snorm" -> forall a. a -> Maybe a
Just ImageFormat
R8Snorm
  a
"Rgba32i" -> forall a. a -> Maybe a
Just ImageFormat
Rgba32i
  a
"Rgba16i" -> forall a. a -> Maybe a
Just ImageFormat
Rgba16i
  a
"Rgba8i" -> forall a. a -> Maybe a
Just ImageFormat
Rgba8i
  a
"R32i" -> forall a. a -> Maybe a
Just ImageFormat
R32i
  a
"Rg32i" -> forall a. a -> Maybe a
Just ImageFormat
Rg32i
  a
"Rg16i" -> forall a. a -> Maybe a
Just ImageFormat
Rg16i
  a
"Rg8i" -> forall a. a -> Maybe a
Just ImageFormat
Rg8i
  a
"R16i" -> forall a. a -> Maybe a
Just ImageFormat
R16i
  a
"R8i" -> forall a. a -> Maybe a
Just ImageFormat
R8i
  a
"Rgba32ui" -> forall a. a -> Maybe a
Just ImageFormat
Rgba32ui
  a
"Rgba16ui" -> forall a. a -> Maybe a
Just ImageFormat
Rgba16ui
  a
"Rgba8ui" -> forall a. a -> Maybe a
Just ImageFormat
Rgba8ui
  a
"R32ui" -> forall a. a -> Maybe a
Just ImageFormat
R32ui
  a
"Rgb10a2ui" -> forall a. a -> Maybe a
Just ImageFormat
Rgb10a2ui
  a
"Rg32ui" -> forall a. a -> Maybe a
Just ImageFormat
Rg32ui
  a
"Rg16ui" -> forall a. a -> Maybe a
Just ImageFormat
Rg16ui
  a
"Rg8ui" -> forall a. a -> Maybe a
Just ImageFormat
Rg8ui
  a
"R16ui" -> forall a. a -> Maybe a
Just ImageFormat
R16ui
  a
"R8ui" -> forall a. a -> Maybe a
Just ImageFormat
R8ui
  a
"R64ui" -> forall a. a -> Maybe a
Just ImageFormat
R64ui
  a
"R64i" -> forall a. a -> Maybe a
Just ImageFormat
R64i
  a
_unknown -> forall a. Maybe a
Nothing

instance Read ImageFormat where
  readPrec :: ReadPrec ImageFormat
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 ImageFormat
fromName [Char]
s