diff options
Diffstat (limited to 'ddl/out/haskell/TestData.hs')
-rw-r--r-- | ddl/out/haskell/TestData.hs | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/ddl/out/haskell/TestData.hs b/ddl/out/haskell/TestData.hs new file mode 100644 index 0000000..3904a3e --- /dev/null +++ b/ddl/out/haskell/TestData.hs | |||
@@ -0,0 +1,242 @@ | |||
1 | -- generated file, do not modify! | ||
2 | -- 2016-11-11T11:17:03.685172000000Z | ||
3 | |||
4 | {-# LANGUAGE OverloadedStrings, RecordWildCards #-} | ||
5 | module TestData where | ||
6 | |||
7 | import Data.Int | ||
8 | import Data.Word | ||
9 | import Data.Map | ||
10 | import Data.Vector (Vector(..)) | ||
11 | import LambdaCube.Linear | ||
12 | |||
13 | import Data.Text | ||
14 | import Data.Aeson hiding (Value,Bool) | ||
15 | import Data.Aeson.Types hiding (Value,Bool) | ||
16 | import Control.Monad | ||
17 | |||
18 | import LambdaCube.IR | ||
19 | import LambdaCube.Mesh | ||
20 | import LambdaCube.PipelineSchema | ||
21 | |||
22 | data ClientInfo | ||
23 | = ClientInfo | ||
24 | { clientName :: String | ||
25 | , clientBackend :: Backend | ||
26 | } | ||
27 | |||
28 | deriving (Show, Eq, Ord) | ||
29 | |||
30 | data Frame | ||
31 | = Frame | ||
32 | { renderCount :: Int | ||
33 | , frameUniforms :: Map String Value | ||
34 | , frameTextures :: Map String Int | ||
35 | } | ||
36 | |||
37 | deriving (Show, Eq, Ord) | ||
38 | |||
39 | data Scene | ||
40 | = Scene | ||
41 | { objectArrays :: Map String (Vector Int) | ||
42 | , renderTargetWidth :: Int | ||
43 | , renderTargetHeight :: Int | ||
44 | , frames :: Vector Frame | ||
45 | } | ||
46 | |||
47 | deriving (Show, Eq, Ord) | ||
48 | |||
49 | data PipelineInfo | ||
50 | = PipelineInfo | ||
51 | { pipelineName :: String | ||
52 | , pipeline :: Pipeline | ||
53 | } | ||
54 | |||
55 | deriving (Show, Eq, Ord) | ||
56 | |||
57 | data RenderJob | ||
58 | = RenderJob | ||
59 | { meshes :: Vector Mesh | ||
60 | , textures :: Vector String | ||
61 | , schema :: PipelineSchema | ||
62 | , scenes :: Vector Scene | ||
63 | , pipelines :: Vector PipelineInfo | ||
64 | } | ||
65 | |||
66 | deriving (Show, Eq, Ord) | ||
67 | |||
68 | data FrameResult | ||
69 | = FrameResult | ||
70 | { frRenderTimes :: Vector Float | ||
71 | , frImageWidth :: Int | ||
72 | , frImageHeight :: Int | ||
73 | } | ||
74 | |||
75 | deriving (Show, Eq, Ord) | ||
76 | |||
77 | data RenderJobResult | ||
78 | = RenderJobResult FrameResult | ||
79 | | RenderJobError String | ||
80 | deriving (Show, Eq, Ord) | ||
81 | |||
82 | |||
83 | instance ToJSON ClientInfo where | ||
84 | toJSON v = case v of | ||
85 | ClientInfo{..} -> object | ||
86 | [ "tag" .= ("ClientInfo" :: Text) | ||
87 | , "clientName" .= clientName | ||
88 | , "clientBackend" .= clientBackend | ||
89 | ] | ||
90 | |||
91 | instance FromJSON ClientInfo where | ||
92 | parseJSON (Object obj) = do | ||
93 | tag <- obj .: "tag" | ||
94 | case tag :: Text of | ||
95 | "ClientInfo" -> do | ||
96 | clientName <- obj .: "clientName" | ||
97 | clientBackend <- obj .: "clientBackend" | ||
98 | pure $ ClientInfo | ||
99 | { clientName = clientName | ||
100 | , clientBackend = clientBackend | ||
101 | } | ||
102 | parseJSON _ = mzero | ||
103 | |||
104 | instance ToJSON Frame where | ||
105 | toJSON v = case v of | ||
106 | Frame{..} -> object | ||
107 | [ "tag" .= ("Frame" :: Text) | ||
108 | , "renderCount" .= renderCount | ||
109 | , "frameUniforms" .= frameUniforms | ||
110 | , "frameTextures" .= frameTextures | ||
111 | ] | ||
112 | |||
113 | instance FromJSON Frame where | ||
114 | parseJSON (Object obj) = do | ||
115 | tag <- obj .: "tag" | ||
116 | case tag :: Text of | ||
117 | "Frame" -> do | ||
118 | renderCount <- obj .: "renderCount" | ||
119 | frameUniforms <- obj .: "frameUniforms" | ||
120 | frameTextures <- obj .: "frameTextures" | ||
121 | pure $ Frame | ||
122 | { renderCount = renderCount | ||
123 | , frameUniforms = frameUniforms | ||
124 | , frameTextures = frameTextures | ||
125 | } | ||
126 | parseJSON _ = mzero | ||
127 | |||
128 | instance ToJSON Scene where | ||
129 | toJSON v = case v of | ||
130 | Scene{..} -> object | ||
131 | [ "tag" .= ("Scene" :: Text) | ||
132 | , "objectArrays" .= objectArrays | ||
133 | , "renderTargetWidth" .= renderTargetWidth | ||
134 | , "renderTargetHeight" .= renderTargetHeight | ||
135 | , "frames" .= frames | ||
136 | ] | ||
137 | |||
138 | instance FromJSON Scene where | ||
139 | parseJSON (Object obj) = do | ||
140 | tag <- obj .: "tag" | ||
141 | case tag :: Text of | ||
142 | "Scene" -> do | ||
143 | objectArrays <- obj .: "objectArrays" | ||
144 | renderTargetWidth <- obj .: "renderTargetWidth" | ||
145 | renderTargetHeight <- obj .: "renderTargetHeight" | ||
146 | frames <- obj .: "frames" | ||
147 | pure $ Scene | ||
148 | { objectArrays = objectArrays | ||
149 | , renderTargetWidth = renderTargetWidth | ||
150 | , renderTargetHeight = renderTargetHeight | ||
151 | , frames = frames | ||
152 | } | ||
153 | parseJSON _ = mzero | ||
154 | |||
155 | instance ToJSON PipelineInfo where | ||
156 | toJSON v = case v of | ||
157 | PipelineInfo{..} -> object | ||
158 | [ "tag" .= ("PipelineInfo" :: Text) | ||
159 | , "pipelineName" .= pipelineName | ||
160 | , "pipeline" .= pipeline | ||
161 | ] | ||
162 | |||
163 | instance FromJSON PipelineInfo where | ||
164 | parseJSON (Object obj) = do | ||
165 | tag <- obj .: "tag" | ||
166 | case tag :: Text of | ||
167 | "PipelineInfo" -> do | ||
168 | pipelineName <- obj .: "pipelineName" | ||
169 | pipeline <- obj .: "pipeline" | ||
170 | pure $ PipelineInfo | ||
171 | { pipelineName = pipelineName | ||
172 | , pipeline = pipeline | ||
173 | } | ||
174 | parseJSON _ = mzero | ||
175 | |||
176 | instance ToJSON RenderJob where | ||
177 | toJSON v = case v of | ||
178 | RenderJob{..} -> object | ||
179 | [ "tag" .= ("RenderJob" :: Text) | ||
180 | , "meshes" .= meshes | ||
181 | , "textures" .= textures | ||
182 | , "schema" .= schema | ||
183 | , "scenes" .= scenes | ||
184 | , "pipelines" .= pipelines | ||
185 | ] | ||
186 | |||
187 | instance FromJSON RenderJob where | ||
188 | parseJSON (Object obj) = do | ||
189 | tag <- obj .: "tag" | ||
190 | case tag :: Text of | ||
191 | "RenderJob" -> do | ||
192 | meshes <- obj .: "meshes" | ||
193 | textures <- obj .: "textures" | ||
194 | schema <- obj .: "schema" | ||
195 | scenes <- obj .: "scenes" | ||
196 | pipelines <- obj .: "pipelines" | ||
197 | pure $ RenderJob | ||
198 | { meshes = meshes | ||
199 | , textures = textures | ||
200 | , schema = schema | ||
201 | , scenes = scenes | ||
202 | , pipelines = pipelines | ||
203 | } | ||
204 | parseJSON _ = mzero | ||
205 | |||
206 | instance ToJSON FrameResult where | ||
207 | toJSON v = case v of | ||
208 | FrameResult{..} -> object | ||
209 | [ "tag" .= ("FrameResult" :: Text) | ||
210 | , "frRenderTimes" .= frRenderTimes | ||
211 | , "frImageWidth" .= frImageWidth | ||
212 | , "frImageHeight" .= frImageHeight | ||
213 | ] | ||
214 | |||
215 | instance FromJSON FrameResult where | ||
216 | parseJSON (Object obj) = do | ||
217 | tag <- obj .: "tag" | ||
218 | case tag :: Text of | ||
219 | "FrameResult" -> do | ||
220 | frRenderTimes <- obj .: "frRenderTimes" | ||
221 | frImageWidth <- obj .: "frImageWidth" | ||
222 | frImageHeight <- obj .: "frImageHeight" | ||
223 | pure $ FrameResult | ||
224 | { frRenderTimes = frRenderTimes | ||
225 | , frImageWidth = frImageWidth | ||
226 | , frImageHeight = frImageHeight | ||
227 | } | ||
228 | parseJSON _ = mzero | ||
229 | |||
230 | instance ToJSON RenderJobResult where | ||
231 | toJSON v = case v of | ||
232 | RenderJobResult arg0 -> object [ "tag" .= ("RenderJobResult" :: Text), "arg0" .= arg0] | ||
233 | RenderJobError arg0 -> object [ "tag" .= ("RenderJobError" :: Text), "arg0" .= arg0] | ||
234 | |||
235 | instance FromJSON RenderJobResult where | ||
236 | parseJSON (Object obj) = do | ||
237 | tag <- obj .: "tag" | ||
238 | case tag :: Text of | ||
239 | "RenderJobResult" -> RenderJobResult <$> obj .: "arg0" | ||
240 | "RenderJobError" -> RenderJobError <$> obj .: "arg0" | ||
241 | parseJSON _ = mzero | ||
242 | |||