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