summaryrefslogtreecommitdiff
path: root/ddl/out/cpp/LambdaCube.Mesh.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ddl/out/cpp/LambdaCube.Mesh.cpp')
-rw-r--r--ddl/out/cpp/LambdaCube.Mesh.cpp228
1 files changed, 228 insertions, 0 deletions
diff --git a/ddl/out/cpp/LambdaCube.Mesh.cpp b/ddl/out/cpp/LambdaCube.Mesh.cpp
new file mode 100644
index 0000000..ae47aa3
--- /dev/null
+++ b/ddl/out/cpp/LambdaCube.Mesh.cpp
@@ -0,0 +1,228 @@
1// generated file, do not modify!
2// 2016-11-11T11:17:03.517567000000Z
3
4#include "LambdaCube.Mesh.hpp"
5template<> json toJSON<std::shared_ptr<MeshAttribute>>(std::shared_ptr<MeshAttribute> &v) {
6 json obj({});
7 switch (v->tag) {
8 case ::MeshAttribute::tag::A_Float:
9 obj["tag"] = "A_Float";
10 {
11 std::shared_ptr<data::A_Float> tv = std::static_pointer_cast<data::A_Float>(v);
12 obj["arg0"] = toJSON(tv->_0);
13 }
14 break;
15 case ::MeshAttribute::tag::A_V2F:
16 obj["tag"] = "A_V2F";
17 {
18 std::shared_ptr<data::A_V2F> tv = std::static_pointer_cast<data::A_V2F>(v);
19 obj["arg0"] = toJSON(tv->_0);
20 }
21 break;
22 case ::MeshAttribute::tag::A_V3F:
23 obj["tag"] = "A_V3F";
24 {
25 std::shared_ptr<data::A_V3F> tv = std::static_pointer_cast<data::A_V3F>(v);
26 obj["arg0"] = toJSON(tv->_0);
27 }
28 break;
29 case ::MeshAttribute::tag::A_V4F:
30 obj["tag"] = "A_V4F";
31 {
32 std::shared_ptr<data::A_V4F> tv = std::static_pointer_cast<data::A_V4F>(v);
33 obj["arg0"] = toJSON(tv->_0);
34 }
35 break;
36 case ::MeshAttribute::tag::A_M22F:
37 obj["tag"] = "A_M22F";
38 {
39 std::shared_ptr<data::A_M22F> tv = std::static_pointer_cast<data::A_M22F>(v);
40 obj["arg0"] = toJSON(tv->_0);
41 }
42 break;
43 case ::MeshAttribute::tag::A_M33F:
44 obj["tag"] = "A_M33F";
45 {
46 std::shared_ptr<data::A_M33F> tv = std::static_pointer_cast<data::A_M33F>(v);
47 obj["arg0"] = toJSON(tv->_0);
48 }
49 break;
50 case ::MeshAttribute::tag::A_M44F:
51 obj["tag"] = "A_M44F";
52 {
53 std::shared_ptr<data::A_M44F> tv = std::static_pointer_cast<data::A_M44F>(v);
54 obj["arg0"] = toJSON(tv->_0);
55 }
56 break;
57 case ::MeshAttribute::tag::A_Int:
58 obj["tag"] = "A_Int";
59 {
60 std::shared_ptr<data::A_Int> tv = std::static_pointer_cast<data::A_Int>(v);
61 obj["arg0"] = toJSON(tv->_0);
62 }
63 break;
64 case ::MeshAttribute::tag::A_Word:
65 obj["tag"] = "A_Word";
66 {
67 std::shared_ptr<data::A_Word> tv = std::static_pointer_cast<data::A_Word>(v);
68 obj["arg0"] = toJSON(tv->_0);
69 }
70 break;
71 }
72 return obj;
73}
74
75template<> std::shared_ptr<MeshAttribute> fromJSON<std::shared_ptr<MeshAttribute>>(W<std::shared_ptr<MeshAttribute>> v, json &obj) {
76 enum ::MeshAttribute::tag tagType;
77 std::string tag = obj["tag"];
78 if (tag == "A_Float") {
79 tagType = ::MeshAttribute::tag::A_Float;
80 std::shared_ptr<data::A_Float> tv(new data::A_Float());
81 tv->_0 = fromJSON(W<std::vector<Float>>(), obj["arg0"]);
82 return tv;
83 }
84 else if (tag == "A_V2F") {
85 tagType = ::MeshAttribute::tag::A_V2F;
86 std::shared_ptr<data::A_V2F> tv(new data::A_V2F());
87 tv->_0 = fromJSON(W<std::vector<V2F>>(), obj["arg0"]);
88 return tv;
89 }
90 else if (tag == "A_V3F") {
91 tagType = ::MeshAttribute::tag::A_V3F;
92 std::shared_ptr<data::A_V3F> tv(new data::A_V3F());
93 tv->_0 = fromJSON(W<std::vector<V3F>>(), obj["arg0"]);
94 return tv;
95 }
96 else if (tag == "A_V4F") {
97 tagType = ::MeshAttribute::tag::A_V4F;
98 std::shared_ptr<data::A_V4F> tv(new data::A_V4F());
99 tv->_0 = fromJSON(W<std::vector<V4F>>(), obj["arg0"]);
100 return tv;
101 }
102 else if (tag == "A_M22F") {
103 tagType = ::MeshAttribute::tag::A_M22F;
104 std::shared_ptr<data::A_M22F> tv(new data::A_M22F());
105 tv->_0 = fromJSON(W<std::vector<M22F>>(), obj["arg0"]);
106 return tv;
107 }
108 else if (tag == "A_M33F") {
109 tagType = ::MeshAttribute::tag::A_M33F;
110 std::shared_ptr<data::A_M33F> tv(new data::A_M33F());
111 tv->_0 = fromJSON(W<std::vector<M33F>>(), obj["arg0"]);
112 return tv;
113 }
114 else if (tag == "A_M44F") {
115 tagType = ::MeshAttribute::tag::A_M44F;
116 std::shared_ptr<data::A_M44F> tv(new data::A_M44F());
117 tv->_0 = fromJSON(W<std::vector<M44F>>(), obj["arg0"]);
118 return tv;
119 }
120 else if (tag == "A_Int") {
121 tagType = ::MeshAttribute::tag::A_Int;
122 std::shared_ptr<data::A_Int> tv(new data::A_Int());
123 tv->_0 = fromJSON(W<std::vector<Int32>>(), obj["arg0"]);
124 return tv;
125 }
126 else if (tag == "A_Word") {
127 tagType = ::MeshAttribute::tag::A_Word;
128 std::shared_ptr<data::A_Word> tv(new data::A_Word());
129 tv->_0 = fromJSON(W<std::vector<Word32>>(), obj["arg0"]);
130 return tv;
131 }
132 else throw "unknown constructor: " + tag;
133 std::shared_ptr<::MeshAttribute> o(new ::MeshAttribute());
134 o->tag = tagType;
135 return o;
136}
137
138template<> json toJSON<std::shared_ptr<MeshPrimitive>>(std::shared_ptr<MeshPrimitive> &v) {
139 json obj({});
140 switch (v->tag) {
141 case ::MeshPrimitive::tag::P_Points:
142 obj["tag"] = "P_Points";
143 break;
144 case ::MeshPrimitive::tag::P_TriangleStrip:
145 obj["tag"] = "P_TriangleStrip";
146 break;
147 case ::MeshPrimitive::tag::P_Triangles:
148 obj["tag"] = "P_Triangles";
149 break;
150 case ::MeshPrimitive::tag::P_TriangleStripI:
151 obj["tag"] = "P_TriangleStripI";
152 {
153 std::shared_ptr<data::P_TriangleStripI> tv = std::static_pointer_cast<data::P_TriangleStripI>(v);
154 obj["arg0"] = toJSON(tv->_0);
155 }
156 break;
157 case ::MeshPrimitive::tag::P_TrianglesI:
158 obj["tag"] = "P_TrianglesI";
159 {
160 std::shared_ptr<data::P_TrianglesI> tv = std::static_pointer_cast<data::P_TrianglesI>(v);
161 obj["arg0"] = toJSON(tv->_0);
162 }
163 break;
164 }
165 return obj;
166}
167
168template<> std::shared_ptr<MeshPrimitive> fromJSON<std::shared_ptr<MeshPrimitive>>(W<std::shared_ptr<MeshPrimitive>> v, json &obj) {
169 enum ::MeshPrimitive::tag tagType;
170 std::string tag = obj["tag"];
171 if (tag == "P_Points") {
172 tagType = ::MeshPrimitive::tag::P_Points;
173 }
174 else if (tag == "P_TriangleStrip") {
175 tagType = ::MeshPrimitive::tag::P_TriangleStrip;
176 }
177 else if (tag == "P_Triangles") {
178 tagType = ::MeshPrimitive::tag::P_Triangles;
179 }
180 else if (tag == "P_TriangleStripI") {
181 tagType = ::MeshPrimitive::tag::P_TriangleStripI;
182 std::shared_ptr<data::P_TriangleStripI> tv(new data::P_TriangleStripI());
183 tv->_0 = fromJSON(W<std::vector<Int32>>(), obj["arg0"]);
184 return tv;
185 }
186 else if (tag == "P_TrianglesI") {
187 tagType = ::MeshPrimitive::tag::P_TrianglesI;
188 std::shared_ptr<data::P_TrianglesI> tv(new data::P_TrianglesI());
189 tv->_0 = fromJSON(W<std::vector<Int32>>(), obj["arg0"]);
190 return tv;
191 }
192 else throw "unknown constructor: " + tag;
193 std::shared_ptr<::MeshPrimitive> o(new ::MeshPrimitive());
194 o->tag = tagType;
195 return o;
196}
197
198template<> json toJSON<std::shared_ptr<Mesh>>(std::shared_ptr<Mesh> &v) {
199 json obj({});
200 switch (v->tag) {
201 case ::Mesh::tag::Mesh:
202 obj["tag"] = "Mesh";
203 {
204 std::shared_ptr<data::Mesh> tv = std::static_pointer_cast<data::Mesh>(v);
205 obj["mAttributes"] = toJSON(tv->mAttributes);
206 obj["mPrimitive"] = toJSON(tv->mPrimitive);
207 }
208 break;
209 }
210 return obj;
211}
212
213template<> std::shared_ptr<Mesh> fromJSON<std::shared_ptr<Mesh>>(W<std::shared_ptr<Mesh>> v, json &obj) {
214 enum ::Mesh::tag tagType;
215 std::string tag = obj["tag"];
216 if (tag == "Mesh") {
217 tagType = ::Mesh::tag::Mesh;
218 std::shared_ptr<data::Mesh> tv(new data::Mesh());
219 tv->mAttributes = fromJSON(W<std::map<String, std::shared_ptr<::MeshAttribute>>>(), obj["mAttributes"]);
220 tv->mPrimitive = fromJSON(W<std::shared_ptr<::MeshPrimitive>>(), obj["mPrimitive"]);
221 return tv;
222 }
223 else throw "unknown constructor: " + tag;
224 std::shared_ptr<::Mesh> o(new ::Mesh());
225 o->tag = tagType;
226 return o;
227}
228