packages feed

mischief-render-0.1.0.0: src/Mischief/Shader/Internal/Singletons.hs

{-# 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 (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 (Eq)

genSingletons [''PrimitiveTypes, ''Types]