summaryrefslogtreecommitdiff
path: root/ddl/out/haskell/LambdaCube/Mesh.hs
diff options
context:
space:
mode:
Diffstat (limited to 'ddl/out/haskell/LambdaCube/Mesh.hs')
-rw-r--r--ddl/out/haskell/LambdaCube/Mesh.hs114
1 files changed, 114 insertions, 0 deletions
diff --git a/ddl/out/haskell/LambdaCube/Mesh.hs b/ddl/out/haskell/LambdaCube/Mesh.hs
new file mode 100644
index 0000000..8d6db7a
--- /dev/null
+++ b/ddl/out/haskell/LambdaCube/Mesh.hs
@@ -0,0 +1,114 @@
1-- generated file, do not modify!
2-- 2016-11-11T11:17:03.517567000000Z
3
4{-# LANGUAGE OverloadedStrings, RecordWildCards #-}
5module LambdaCube.Mesh where
6
7import Data.Int
8import Data.Word
9import Data.Map
10import Data.Vector (Vector(..))
11import LambdaCube.Linear
12
13import Data.Text
14import Data.Aeson hiding (Value,Bool)
15import Data.Aeson.Types hiding (Value,Bool)
16import Control.Monad
17
18
19data MeshAttribute
20 = A_Float (Vector Float)
21 | A_V2F (Vector V2F)
22 | A_V3F (Vector V3F)
23 | A_V4F (Vector V4F)
24 | A_M22F (Vector M22F)
25 | A_M33F (Vector M33F)
26 | A_M44F (Vector M44F)
27 | A_Int (Vector Int32)
28 | A_Word (Vector Word32)
29 deriving (Show, Eq, Ord)
30
31data MeshPrimitive
32 = P_Points
33 | P_TriangleStrip
34 | P_Triangles
35 | P_TriangleStripI (Vector Int32)
36 | P_TrianglesI (Vector Int32)
37 deriving (Show, Eq, Ord)
38
39data Mesh
40 = Mesh
41 { mAttributes :: Map String MeshAttribute
42 , mPrimitive :: MeshPrimitive
43 }
44
45 deriving (Show, Eq, Ord)
46
47
48instance ToJSON MeshAttribute where
49 toJSON v = case v of
50 A_Float arg0 -> object [ "tag" .= ("A_Float" :: Text), "arg0" .= arg0]
51 A_V2F arg0 -> object [ "tag" .= ("A_V2F" :: Text), "arg0" .= arg0]
52 A_V3F arg0 -> object [ "tag" .= ("A_V3F" :: Text), "arg0" .= arg0]
53 A_V4F arg0 -> object [ "tag" .= ("A_V4F" :: Text), "arg0" .= arg0]
54 A_M22F arg0 -> object [ "tag" .= ("A_M22F" :: Text), "arg0" .= arg0]
55 A_M33F arg0 -> object [ "tag" .= ("A_M33F" :: Text), "arg0" .= arg0]
56 A_M44F arg0 -> object [ "tag" .= ("A_M44F" :: Text), "arg0" .= arg0]
57 A_Int arg0 -> object [ "tag" .= ("A_Int" :: Text), "arg0" .= arg0]
58 A_Word arg0 -> object [ "tag" .= ("A_Word" :: Text), "arg0" .= arg0]
59
60instance FromJSON MeshAttribute where
61 parseJSON (Object obj) = do
62 tag <- obj .: "tag"
63 case tag :: Text of
64 "A_Float" -> A_Float <$> obj .: "arg0"
65 "A_V2F" -> A_V2F <$> obj .: "arg0"
66 "A_V3F" -> A_V3F <$> obj .: "arg0"
67 "A_V4F" -> A_V4F <$> obj .: "arg0"
68 "A_M22F" -> A_M22F <$> obj .: "arg0"
69 "A_M33F" -> A_M33F <$> obj .: "arg0"
70 "A_M44F" -> A_M44F <$> obj .: "arg0"
71 "A_Int" -> A_Int <$> obj .: "arg0"
72 "A_Word" -> A_Word <$> obj .: "arg0"
73 parseJSON _ = mzero
74
75instance ToJSON MeshPrimitive where
76 toJSON v = case v of
77 P_Points -> object [ "tag" .= ("P_Points" :: Text)]
78 P_TriangleStrip -> object [ "tag" .= ("P_TriangleStrip" :: Text)]
79 P_Triangles -> object [ "tag" .= ("P_Triangles" :: Text)]
80 P_TriangleStripI arg0 -> object [ "tag" .= ("P_TriangleStripI" :: Text), "arg0" .= arg0]
81 P_TrianglesI arg0 -> object [ "tag" .= ("P_TrianglesI" :: Text), "arg0" .= arg0]
82
83instance FromJSON MeshPrimitive where
84 parseJSON (Object obj) = do
85 tag <- obj .: "tag"
86 case tag :: Text of
87 "P_Points" -> pure P_Points
88 "P_TriangleStrip" -> pure P_TriangleStrip
89 "P_Triangles" -> pure P_Triangles
90 "P_TriangleStripI" -> P_TriangleStripI <$> obj .: "arg0"
91 "P_TrianglesI" -> P_TrianglesI <$> obj .: "arg0"
92 parseJSON _ = mzero
93
94instance ToJSON Mesh where
95 toJSON v = case v of
96 Mesh{..} -> object
97 [ "tag" .= ("Mesh" :: Text)
98 , "mAttributes" .= mAttributes
99 , "mPrimitive" .= mPrimitive
100 ]
101
102instance FromJSON Mesh where
103 parseJSON (Object obj) = do
104 tag <- obj .: "tag"
105 case tag :: Text of
106 "Mesh" -> do
107 mAttributes <- obj .: "mAttributes"
108 mPrimitive <- obj .: "mPrimitive"
109 pure $ Mesh
110 { mAttributes = mAttributes
111 , mPrimitive = mPrimitive
112 }
113 parseJSON _ = mzero
114