gelatin-shaders-0.1.0.0: Gelatin's OpenGL shaders.

Safe HaskellSafe
LanguageHaskell2010

Gelatin.Shaders.TypeLevel

Contents

Synopsis

Type level combinators

data a :& b infixr 8 Source #

A heterogenious list.

Constructors

a :& b infixr 8 

Instances

(HasGenFunc * a, HasGenFunc * b) => HasGenFunc * ((:&) a b) Source # 

Associated Types

type GenFunc ((:&) a b) (a :: (:&) a b) :: * Source #

Methods

genFunction :: Proxy (a :& b) a -> GenFunc (a :& b) a Source #

type GenFunc * ((:&) a b) Source # 
type GenFunc * ((:&) a b) = (:&) (GenFunc * a) (GenFunc * b)

Generating symbol values on type lists

class GetLits a t where Source #

Minimal complete definition

getSymbols

Methods

getSymbols :: Proxy a -> t Source #

Instances

KnownNat a => GetLits Nat a Integer Source # 

Methods

getSymbols :: Proxy a Integer -> t Source #

KnownSymbol a => GetLits Symbol a String Source # 

Methods

getSymbols :: Proxy a String -> t Source #

GetLits [k] ([] k) [t] Source # 

Methods

getSymbols :: Proxy [k] [t] -> t Source #

(GetLits a a1 t, GetLits [a] as [t]) => GetLits [a] ((:) a a1 as) [t] Source # 

Methods

getSymbols :: Proxy ((a ': a1) as) [t] -> t Source #

GetLits k1 name String => GetLits * (Uniform k k1 name val) String Source # 

Methods

getSymbols :: Proxy (Uniform k k1 name val) String -> t Source #

(GetLits k2 name String, GetLits k1 loc Integer) => GetLits * (Attribute k1 k k2 name val loc) (String, Integer) Source # 

Methods

getSymbols :: Proxy (Attribute k1 k k2 name val loc) (String, Integer) -> t Source #

Generating function class

class HasGenFunc a where Source #

Minimal complete definition

genFunction

Associated Types

type GenFunc a :: * Source #

Methods

genFunction :: Proxy a -> GenFunc a Source #

Instances

HasGenFunc [k] ([] k) Source # 

Associated Types

type GenFunc ([] k) (a :: [] k) :: * Source #

Methods

genFunction :: Proxy [k] a -> GenFunc [k] a Source #

(HasGenFunc * a, HasGenFunc * b) => HasGenFunc * ((:&) a b) Source # 

Associated Types

type GenFunc ((:&) a b) (a :: (:&) a b) :: * Source #

Methods

genFunction :: Proxy (a :& b) a -> GenFunc (a :& b) a Source #

(HasGenFunc a a1, HasGenFunc [a] as) => HasGenFunc [a] ((:) a a1 as) Source # 

Associated Types

type GenFunc ((:) a a1 as) (a :: (:) a a1 as) :: * Source #

Methods

genFunction :: Proxy ((a ': a1) as) a -> GenFunc ((a ': a1) as) a Source #

Mapping types

type family TypeMap (a :: * -> *) (xs :: [*]) :: [*] Source #

Instances

type TypeMap t ([] *) Source # 
type TypeMap t ([] *) = [] *
type TypeMap t ((:) * x xs) Source # 
type TypeMap t ((:) * x xs) = (:) * (t x) (TypeMap t xs)