module Data.SpirV.Enum.PackedVectorFormat 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 PackedVectorFormat = PackedVectorFormat Word32 deriving (Eq, Ord, Storable) pattern PackedVectorFormat4x8Bit :: PackedVectorFormat pattern PackedVectorFormat4x8Bit = PackedVectorFormat 0 pattern PackedVectorFormat4x8BitKHR :: PackedVectorFormat pattern PackedVectorFormat4x8BitKHR = PackedVectorFormat 0 toName :: IsString a => PackedVectorFormat -> a toName x = case x of PackedVectorFormat4x8Bit -> "PackedVectorFormat4x8Bit" PackedVectorFormat4x8BitKHR -> "PackedVectorFormat4x8BitKHR" unknown -> fromString $ "PackedVectorFormat " ++ show unknown instance Show PackedVectorFormat where show = toName fromName :: (IsString a, Eq a) => a -> Maybe PackedVectorFormat fromName x = case x of "PackedVectorFormat4x8Bit" -> Just PackedVectorFormat4x8Bit "PackedVectorFormat4x8BitKHR" -> Just PackedVectorFormat4x8BitKHR _unknown -> Nothing instance Read PackedVectorFormat where readPrec = Read.parens do Lex.Ident s <- Read.lexP maybe pfail pure $ fromName s