summaryrefslogtreecommitdiff
path: root/lambdacube-ir.haskell
diff options
context:
space:
mode:
Diffstat (limited to 'lambdacube-ir.haskell')
-rw-r--r--lambdacube-ir.haskell/lambdacube-ir.cabal10
l---------lambdacube-ir.haskell/src/IR.hs1
l---------lambdacube-ir.haskell/src/LambdaCube/IR.hs1
-rw-r--r--lambdacube-ir.haskell/src/LambdaCube/Linear.hs (renamed from lambdacube-ir.haskell/src/Linear.hs)2
l---------lambdacube-ir.haskell/src/LambdaCube/Mesh.hs1
l---------lambdacube-ir.haskell/src/LambdaCube/PipelineSchema.hs1
-rw-r--r--lambdacube-ir.haskell/src/LambdaCube/PipelineSchemaUtil.hs20
7 files changed, 31 insertions, 5 deletions
diff --git a/lambdacube-ir.haskell/lambdacube-ir.cabal b/lambdacube-ir.haskell/lambdacube-ir.cabal
index 1389a9c..4ff27ed 100644
--- a/lambdacube-ir.haskell/lambdacube-ir.cabal
+++ b/lambdacube-ir.haskell/lambdacube-ir.cabal
@@ -2,7 +2,7 @@
2-- documentation, see http://haskell.org/cabal/users-guide/ 2-- documentation, see http://haskell.org/cabal/users-guide/
3 3
4name: lambdacube-ir 4name: lambdacube-ir
5version: 0.1.0.0 5version: 0.2.0.0
6-- synopsis: 6-- synopsis:
7-- description: 7-- description:
8license: BSD3 8license: BSD3
@@ -16,10 +16,14 @@ build-type: Simple
16cabal-version: >=1.10 16cabal-version: >=1.10
17 17
18library 18library
19 exposed-modules: IR, Linear 19 exposed-modules: LambdaCube.Linear
20 LambdaCube.IR
21 LambdaCube.Mesh
22 LambdaCube.PipelineSchema
23 LambdaCube.PipelineSchemaUtil
20 -- other-modules: 24 -- other-modules:
21 other-extensions: OverloadedStrings, RecordWildCards, DeriveFunctor 25 other-extensions: OverloadedStrings, RecordWildCards, DeriveFunctor
22 -- CAUTION: When the build-depends change, please bump the git submodule in lambdacube-docker repository 26 -- CAUTION: When the build-depends change, please bump the git submodule in lambdacube-docker repository
23 build-depends: base >=4.8 && <4.9, containers >=0.5 && <0.6, vector >=0.11 && <0.12, text >=1.2 && <1.3, aeson >=0.9 && <0.11 27 build-depends: base >=4.8 && <4.9, containers >=0.5 && <0.6, vector >=0.11 && <0.12, text >=1.2 && <1.3, aeson >=0.9 && <0.11, mtl >=2.2 && <2.3
24 hs-source-dirs: src 28 hs-source-dirs: src
25 default-language: Haskell2010 29 default-language: Haskell2010
diff --git a/lambdacube-ir.haskell/src/IR.hs b/lambdacube-ir.haskell/src/IR.hs
deleted file mode 120000
index e256d2b..0000000
--- a/lambdacube-ir.haskell/src/IR.hs
+++ /dev/null
@@ -1 +0,0 @@
1../../ddl/out/IR.hs \ No newline at end of file
diff --git a/lambdacube-ir.haskell/src/LambdaCube/IR.hs b/lambdacube-ir.haskell/src/LambdaCube/IR.hs
new file mode 120000
index 0000000..7b90d33
--- /dev/null
+++ b/lambdacube-ir.haskell/src/LambdaCube/IR.hs
@@ -0,0 +1 @@
../../../ddl/out/LambdaCube.IR.hs \ No newline at end of file
diff --git a/lambdacube-ir.haskell/src/Linear.hs b/lambdacube-ir.haskell/src/LambdaCube/Linear.hs
index 1329841..286cc93 100644
--- a/lambdacube-ir.haskell/src/Linear.hs
+++ b/lambdacube-ir.haskell/src/LambdaCube/Linear.hs
@@ -1,5 +1,5 @@
1{-# LANGUAGE DeriveFunctor, OverloadedStrings #-} 1{-# LANGUAGE DeriveFunctor, OverloadedStrings #-}
2module Linear where 2module LambdaCube.Linear where
3 3
4import Data.Int 4import Data.Int
5import Data.Word 5import Data.Word
diff --git a/lambdacube-ir.haskell/src/LambdaCube/Mesh.hs b/lambdacube-ir.haskell/src/LambdaCube/Mesh.hs
new file mode 120000
index 0000000..9dfc009
--- /dev/null
+++ b/lambdacube-ir.haskell/src/LambdaCube/Mesh.hs
@@ -0,0 +1 @@
../../../ddl/out/LambdaCube.Mesh.hs \ No newline at end of file
diff --git a/lambdacube-ir.haskell/src/LambdaCube/PipelineSchema.hs b/lambdacube-ir.haskell/src/LambdaCube/PipelineSchema.hs
new file mode 120000
index 0000000..afe52ef
--- /dev/null
+++ b/lambdacube-ir.haskell/src/LambdaCube/PipelineSchema.hs
@@ -0,0 +1 @@
../../../ddl/out/LambdaCube.PipelineSchema.hs \ No newline at end of file
diff --git a/lambdacube-ir.haskell/src/LambdaCube/PipelineSchemaUtil.hs b/lambdacube-ir.haskell/src/LambdaCube/PipelineSchemaUtil.hs
new file mode 100644
index 0000000..a5eac55
--- /dev/null
+++ b/lambdacube-ir.haskell/src/LambdaCube/PipelineSchemaUtil.hs
@@ -0,0 +1,20 @@
1{-# LANGUAGE FlexibleContexts, TypeSynonymInstances, FlexibleInstances #-}
2module LambdaCube.PipelineSchemaUtil where
3
4import Control.Monad.Writer
5import qualified Data.Map as Map
6import LambdaCube.PipelineSchema
7
8a @: b = tell [(a,b)]
9defObjectArray n p m = mapM_ tell [PipelineSchema (Map.singleton n $ ObjectArraySchema p $ Map.singleton a t) mempty | (a,t) <- execWriter m]
10defUniforms m = tell $ PipelineSchema mempty $ Map.fromList $ execWriter m
11makeSchema a = execWriter a :: PipelineSchema
12
13unionObjectArraySchema (ObjectArraySchema a1 b1) (ObjectArraySchema a2 b2) =
14 ObjectArraySchema (if a1 == a2 then a1 else error $ "object array schema primitive mismatch " ++ show (a1,a2))
15 (Map.unionWith (\a b -> if a == b then a else error $ "object array schema attribute type mismatch " ++ show (a,b)) b1 b2)
16
17instance Monoid PipelineSchema where
18 mempty = PipelineSchema mempty mempty
19 mappend (PipelineSchema a1 b1) (PipelineSchema a2 b2) =
20 PipelineSchema (Map.unionWith unionObjectArraySchema a1 a2) (Map.unionWith (\a b -> if a == b then a else error $ "schema type mismatch " ++ show (a,b)) b1 b2)