module Data.SpirV.Enum.QuantizationModes 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 QuantizationModes = QuantizationModes Word32 deriving (Eq, Ord, Storable) pattern TRN :: QuantizationModes pattern TRN = QuantizationModes 0 pattern TRN_ZERO :: QuantizationModes pattern TRN_ZERO = QuantizationModes 1 pattern RND :: QuantizationModes pattern RND = QuantizationModes 2 pattern RND_ZERO :: QuantizationModes pattern RND_ZERO = QuantizationModes 3 pattern RND_INF :: QuantizationModes pattern RND_INF = QuantizationModes 4 pattern RND_MIN_INF :: QuantizationModes pattern RND_MIN_INF = QuantizationModes 5 pattern RND_CONV :: QuantizationModes pattern RND_CONV = QuantizationModes 6 pattern RND_CONV_ODD :: QuantizationModes pattern RND_CONV_ODD = QuantizationModes 7 toName :: IsString a => QuantizationModes -> a toName x = case x of TRN -> "TRN" TRN_ZERO -> "TRN_ZERO" RND -> "RND" RND_ZERO -> "RND_ZERO" RND_INF -> "RND_INF" RND_MIN_INF -> "RND_MIN_INF" RND_CONV -> "RND_CONV" RND_CONV_ODD -> "RND_CONV_ODD" unknown -> fromString $ "QuantizationModes " ++ show unknown instance Show QuantizationModes where show = toName fromName :: (IsString a, Eq a) => a -> Maybe QuantizationModes fromName x = case x of "TRN" -> Just TRN "TRN_ZERO" -> Just TRN_ZERO "RND" -> Just RND "RND_ZERO" -> Just RND_ZERO "RND_INF" -> Just RND_INF "RND_MIN_INF" -> Just RND_MIN_INF "RND_CONV" -> Just RND_CONV "RND_CONV_ODD" -> Just RND_CONV_ODD _unknown -> Nothing instance Read QuantizationModes where readPrec = Read.parens do Lex.Ident s <- Read.lexP maybe pfail pure $ fromName s