{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE EmptyCase #-} {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE InstanceSigs #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE StandaloneKindSignatures #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeAbstractions #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE NoCUSKs #-} {-# LANGUAGE NoNamedWildCards #-} {-# LANGUAGE NoStarIsType #-} module Mischief.Shader.Internal.Singletons where import Data.Singletons.Base.CustomStar import GHC.TypeLits import Prelude (Eq) data PrimitiveTypes = TInt | TFloat | TUInt deriving (PrimitiveTypes -> PrimitiveTypes -> Bool (PrimitiveTypes -> PrimitiveTypes -> Bool) -> (PrimitiveTypes -> PrimitiveTypes -> Bool) -> Eq PrimitiveTypes forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: PrimitiveTypes -> PrimitiveTypes -> Bool == :: PrimitiveTypes -> PrimitiveTypes -> Bool $c/= :: PrimitiveTypes -> PrimitiveTypes -> Bool /= :: PrimitiveTypes -> PrimitiveTypes -> Bool Eq) data Types where Primitive :: PrimitiveTypes -> Types ArrayType :: Types -> Types VectorType :: Nat -> PrimitiveTypes -> Types MatrixType :: Nat -> Nat -> Types TTexture :: Types TSampler :: Types TVoid :: Types TBool :: Types MType :: Types -> Types deriving (Types -> Types -> Bool (Types -> Types -> Bool) -> (Types -> Types -> Bool) -> Eq Types forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Types -> Types -> Bool == :: Types -> Types -> Bool $c/= :: Types -> Types -> Bool /= :: Types -> Types -> Bool Eq) genSingletons [''PrimitiveTypes, ''Types]