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