root / trunk / compiler / cppAst / ast / serialize / ProtoBufAstTraversal.cpp
1 | 7 | krennw | /**
|
---|---|---|---|
2 | *
|
||
3 | * OOAS Compiler - C++ AST
|
||
4 | *
|
||
5 | * Copyright 2015, AIT Austrian Institute of Technology.
|
||
6 | * All rights reserved.
|
||
7 | *
|
||
8 | * SEE THE "LICENSE" FILE FOR THE TERMS UNDER WHICH THIS FILE IS PROVIDED.
|
||
9 | *
|
||
10 | * If you modify the file please update the list of contributors below to in-
|
||
11 | * clude your name. Please also stick to the coding convention of using TABs
|
||
12 | * to do the basic (block-level) indentation and spaces for anything after
|
||
13 | * that. (Enable the display of special chars and it should be pretty obvious
|
||
14 | * what this means.) Also, remove all trailing whitespace.
|
||
15 | *
|
||
16 | * Contributors:
|
||
17 | * Willibald Krenn (AIT)
|
||
18 | * Stephan Zimmerer (AIT)
|
||
19 | * Christoph Czurda (AIT)
|
||
20 | *
|
||
21 | */
|
||
22 | 2 | krennw | |
23 | |||
24 | |||
25 | #include "ProtoBufAstTraversal.hpp" |
||
26 | #include <tiresias.h> |
||
27 | #include <cstdint> |
||
28 | #include <iostream> |
||
29 | #include <fstream> |
||
30 | #include <boost/format.hpp> |
||
31 | |||
32 | namespace Ast {
|
||
33 | |||
34 | ProtoBufAstTraversal::ProtoBufAstTraversal (CallContext* context) : |
||
35 | m_context(context) |
||
36 | {} |
||
37 | |||
38 | ProtoBufAstTraversal::~ProtoBufAstTraversal () {} |
||
39 | |||
40 | void* ProtoBufAstTraversal::deserialize(){
|
||
41 | GOOGLE_PROTOBUF_VERIFY_VERSION; |
||
42 | |||
43 | // read in the serialized AST
|
||
44 | serialize::PBAstTraversal traversal; |
||
45 | std::fstream input(m_context->m_astLocation, std::ios::in | std::ios::binary); |
||
46 | if (!traversal.ParseFromIstream(&input)) {
|
||
47 | std::cerr << "Failed to parse seralized ast from " << m_context->m_astLocation << std::endl;
|
||
48 | throw;
|
||
49 | } |
||
50 | |||
51 | return doDeserialize(traversal);
|
||
52 | } |
||
53 | |||
54 | |||
55 | void* ProtoBufAstTraversal::deserialize(const std::uint8_t * buffer, std::uint32_t size) { |
||
56 | GOOGLE_PROTOBUF_VERIFY_VERSION; |
||
57 | |||
58 | // read in the serialized AST
|
||
59 | serialize::PBAstTraversal traversal; |
||
60 | if (!traversal.ParseFromArray(buffer, size)) {
|
||
61 | std::cerr << "Failed to parse seralized ast from memory buffer." << std::endl;
|
||
62 | throw;
|
||
63 | } |
||
64 | |||
65 | return doDeserialize(traversal);
|
||
66 | } |
||
67 | |||
68 | void* ProtoBufAstTraversal::doDeserialize(serialize::PBAstTraversal & traversal) {
|
||
69 | // Function calls may be passed a null reference, which has no UUID assigned.
|
||
70 | // Instead it is tagged "NULL" and must be mapped to a nullptr manually.
|
||
71 | m_objects[0] = (void*) nullptr; |
||
72 | |||
73 | for(int i = 0; i < traversal.calls_size(); i++){ |
||
74 | const serialize::PBFunctionCall& call = traversal.calls(i);
|
||
75 | |||
76 | if(call.has_allocate())
|
||
77 | allocate(call); |
||
78 | else if (call.has_add()) |
||
79 | add(call); |
||
80 | else if (call.has_identifier()) |
||
81 | identifier(call); |
||
82 | else if (call.has_type()) |
||
83 | type(call); |
||
84 | else if (call.has_statement()) |
||
85 | statement(call); |
||
86 | else if (call.has_expression()) |
||
87 | expression(call); |
||
88 | } |
||
89 | |||
90 | void* result = m_objects.at(traversal.main_module());
|
||
91 | |||
92 | // Delete all global objects allocated by libprotobuf.
|
||
93 | google::protobuf::ShutdownProtobufLibrary(); |
||
94 | |||
95 | return result;
|
||
96 | } |
||
97 | |||
98 | |||
99 | /**
|
||
100 | * Calls to allocation functions, like create identifier etc
|
||
101 | * */
|
||
102 | void ProtoBufAstTraversal::allocate(const serialize::PBFunctionCall& call){ |
||
103 | void* object;
|
||
104 | |||
105 | switch (call.allocate()) {
|
||
106 | case serialize::PBAllocation::TIRESIAS_CREATE_IDENTIFIER :
|
||
107 | { |
||
108 | // DLL void* TIRESIAS_CREATE_IDENTIFIER(void* context, std::int32_t ordinal, std::int32_t subOrd);
|
||
109 | object = TIRESIAS_CREATE_IDENTIFIER (m_context |
||
110 | 5 | krennw | , call.parameters(0).int32_value()
|
111 | , call.parameters(1).int32_value());
|
||
112 | 2 | krennw | break;
|
113 | } |
||
114 | case serialize::PBAllocation::TIRESIAS_CREATE_TYPE :
|
||
115 | { |
||
116 | // DLL void* TIRESIAS_CREATE_TYPE(void* context, std::int32_t ordinal);
|
||
117 | 5 | krennw | object = TIRESIAS_CREATE_TYPE (m_context, call.parameters(0).int32_value());
|
118 | 2 | krennw | break;
|
119 | } |
||
120 | case serialize::PBAllocation::TIRESIAS_CREATE_STATEMENT :
|
||
121 | { |
||
122 | // DLL void* TIRESIAS_CREATE_STATEMENT(void* context, std::int32_t ordinal);
|
||
123 | 5 | krennw | object = TIRESIAS_CREATE_STATEMENT (m_context, call.parameters(0).int32_value());
|
124 | 2 | krennw | break;
|
125 | } |
||
126 | case serialize::PBAllocation::TIRESIAS_CREATE_EXPRESSION :
|
||
127 | { |
||
128 | // DLL void* TIRESIAS_CREATE_EXPRESSION(void* context, std::int32_t ordinal, std::int32_t subOrd);
|
||
129 | object = TIRESIAS_CREATE_EXPRESSION (m_context |
||
130 | 5 | krennw | , call.parameters(0).int32_value()
|
131 | , call.parameters(1).int32_value());
|
||
132 | 2 | krennw | break;
|
133 | } |
||
134 | case serialize::PBAllocation::TIRESIAS_CREATE_IDENTIFIERLIST :
|
||
135 | { |
||
136 | object = TIRESIAS_CREATE_IDENTIFIERLIST (m_context); |
||
137 | break;
|
||
138 | } |
||
139 | case serialize::PBAllocation::TIRESIAS_CREATE_TYPELIST :
|
||
140 | { |
||
141 | object = TIRESIAS_CREATE_TYPELIST (m_context); |
||
142 | break;
|
||
143 | } |
||
144 | case serialize::PBAllocation::TIRESIAS_CREATE_STATEMENTLIST :
|
||
145 | { |
||
146 | object = TIRESIAS_CREATE_STATEMENTLIST (m_context); |
||
147 | break;
|
||
148 | } |
||
149 | case serialize::PBAllocation::TIRESIAS_CREATE_EXPRESSIONLIST :
|
||
150 | { |
||
151 | object = TIRESIAS_CREATE_EXPRESSIONLIST (m_context); |
||
152 | break;
|
||
153 | } |
||
154 | case serialize::PBAllocation::TIRESIAS_CREATE_SYMBTAB :
|
||
155 | { |
||
156 | object = TIRESIAS_CREATE_SYMBTAB (m_context); |
||
157 | break;
|
||
158 | } |
||
159 | case serialize::PBAllocation::TIRESIAS_CREATE_PARAMLIST :
|
||
160 | { |
||
161 | object = TIRESIAS_CREATE_PARAMLIST (m_context); |
||
162 | break;
|
||
163 | } |
||
164 | case serialize::PBAllocation::TIRESIAS_CREATE_ACTIONSYSTEMINSTANCE :
|
||
165 | { |
||
166 | object = TIRESIAS_CREATE_ACTIONSYSTEMINSTANCE (m_context); |
||
167 | break;
|
||
168 | } |
||
169 | case serialize::PBAllocation::TIRESIAS_CREATE_ACTIONSYSTEMINSTANCELIST :
|
||
170 | { |
||
171 | object = TIRESIAS_CREATE_ACTIONSYSTEMINSTANCELIST (m_context); |
||
172 | break;
|
||
173 | } |
||
174 | case serialize::PBAllocation::TIRESIAS_CAST_ASTELEMENT_TO_ISCOPE :
|
||
175 | { |
||
176 | // DLL void* TIRESIAS_CAST_ASTELEMENT_TO_ISCOPE(void* context, void* astelement);
|
||
177 | 5 | krennw | object = TIRESIAS_CAST_ASTELEMENT_TO_ISCOPE(m_context |
178 | , m_objects.at(call.parameters(0).uint64_value()));
|
||
179 | 2 | krennw | break;
|
180 | } |
||
181 | default:
|
||
182 | m_context->logError("Unknown value for enum PBAllocation.");
|
||
183 | abort(); |
||
184 | } |
||
185 | |||
186 | std::uint64_t id = call.return_value().return_id(); |
||
187 | m_objects[id] = object; |
||
188 | } |
||
189 | |||
190 | /**
|
||
191 | * Calls to functions that add objects to containers, like add identifier to symboltable etc.
|
||
192 | * */
|
||
193 | void ProtoBufAstTraversal::add(const serialize::PBFunctionCall& call){ |
||
194 | switch (call.add()) {
|
||
195 | case serialize::PBAdd::TIRESIAS_ADD_IDENTIFIERTOLIST :
|
||
196 | { |
||
197 | // DLL bool TIRESIAS_ADD_IDENTIFIERTOLIST(void* context, void* idList, void* idRef);
|
||
198 | TIRESIAS_ADD_IDENTIFIERTOLIST (m_context |
||
199 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
200 | , m_objects.at(call.parameters(1).uint64_value()));
|
||
201 | 2 | krennw | break;
|
202 | } |
||
203 | case serialize::PBAdd::TIRESIAS_ADD_TYPETOLIST :
|
||
204 | { |
||
205 | // DLL bool TIRESIAS_ADD_TYPETOLIST(void* context, void* typeList, void* type);
|
||
206 | TIRESIAS_ADD_TYPETOLIST (m_context |
||
207 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
208 | , m_objects.at(call.parameters(1).uint64_value()));
|
||
209 | 2 | krennw | break;
|
210 | } |
||
211 | case serialize::PBAdd::TIRESIAS_ADD_STATEMENTTOLIST :
|
||
212 | { |
||
213 | // DLL bool TIRESIAS_ADD_STATEMENTTOLIST(void* context, void* stmtList, void* stmntRef);
|
||
214 | TIRESIAS_ADD_STATEMENTTOLIST (m_context |
||
215 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
216 | , m_objects.at(call.parameters(1).uint64_value()));
|
||
217 | 2 | krennw | break;
|
218 | } |
||
219 | case serialize::PBAdd::TIRESIAS_ADD_EXPRESSIONTOLIST :
|
||
220 | { |
||
221 | // DLL bool TIRESIAS_ADD_EXPRESSIONTOLIST(void* context, void* exprList, void* exprRef);
|
||
222 | TIRESIAS_ADD_EXPRESSIONTOLIST (m_context |
||
223 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
224 | , m_objects.at(call.parameters(1).uint64_value()));
|
||
225 | 2 | krennw | break;
|
226 | } |
||
227 | case serialize::PBAdd::TIRESIAS_ADD_IDTOSYMBTAB :
|
||
228 | { |
||
229 | // DLL bool TIRESIAS_ADD_IDTOSYMBTAB(void* context, void* symbolTable, void* identifier);
|
||
230 | TIRESIAS_ADD_IDTOSYMBTAB (m_context |
||
231 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
232 | , m_objects.at(call.parameters(1).uint64_value()));
|
||
233 | 2 | krennw | break;
|
234 | } |
||
235 | case serialize::PBAdd::TIRESIAS_ADD_PARAMTOLIST :
|
||
236 | { |
||
237 | // DLL bool TIRESIAS_ADD_PARAMTOLIST(void* context, void* parameterList, void* par);
|
||
238 | TIRESIAS_ADD_PARAMTOLIST (m_context |
||
239 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
240 | , m_objects.at(call.parameters(1).uint64_value()));
|
||
241 | 2 | krennw | break;
|
242 | } |
||
243 | case serialize::PBAdd::TIRESIAS_ADD_ACTIONSYSTEMINSTANCETOLIST :
|
||
244 | { |
||
245 | // DLL bool TIRESIAS_ADD_ACTIONSYSTEMINSTANCETOLIST(void* context, void* objectsList, void* instanceRef);
|
||
246 | TIRESIAS_ADD_ACTIONSYSTEMINSTANCETOLIST (m_context |
||
247 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
248 | , m_objects.at(call.parameters(1).uint64_value()));
|
||
249 | 2 | krennw | break;
|
250 | } |
||
251 | case serialize::PBAdd::TIRESIAS_ADD_IDENTIFIERTOBLOCK :
|
||
252 | { |
||
253 | // DLL bool TIRESIAS_ADD_IDENTIFIERTOBLOCK(void* context, void* idList, void* idRef);
|
||
254 | TIRESIAS_ADD_IDENTIFIERTOBLOCK (m_context |
||
255 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
256 | , m_objects.at(call.parameters(1).uint64_value()));
|
||
257 | 2 | krennw | break;
|
258 | } |
||
259 | default:
|
||
260 | m_context->logError("Unknown value for enum PBAdd.");
|
||
261 | abort(); |
||
262 | } |
||
263 | } |
||
264 | |||
265 | /**
|
||
266 | * Calls to functions that initialize the various subtypes of Identifier.
|
||
267 | * */
|
||
268 | void ProtoBufAstTraversal::identifier(const serialize::PBFunctionCall& call){ |
||
269 | 5 | krennw | bool ok = true; |
270 | 2 | krennw | switch (call.identifier()) {
|
271 | case serialize::PBIdentifiers::TIRESIAS_INIT_ENUMIDENTIFIER :
|
||
272 | { |
||
273 | // DLL bool TIRESIAS_INIT_ENUMIDENTIFIER(void* context,
|
||
274 | // void* enumId, std::int32_t line, std::int32_t col, const char* text,
|
||
275 | // void* scopeRef, void* typeRef, bool haveValue, std::int32_t value);
|
||
276 | 5 | krennw | ok = TIRESIAS_INIT_ENUMIDENTIFIER (m_context |
277 | , m_objects.at(call.parameters(0).uint64_value())
|
||
278 | , call.parameters(1).int32_value()
|
||
279 | , call.parameters(2).int32_value()
|
||
280 | , call.parameters(3).literal_value().c_str()
|
||
281 | , m_objects.at(call.parameters(4).uint64_value())
|
||
282 | , m_objects.at(call.parameters(5).uint64_value())
|
||
283 | , call.parameters(6).bool_value()
|
||
284 | , call.parameters(7).int32_value());
|
||
285 | 2 | krennw | break;
|
286 | } |
||
287 | case serialize::PBIdentifiers::TIRESIAS_INIT_CONSTIDENTIFIER :
|
||
288 | { |
||
289 | // DLL bool TIRESIAS_INIT_CONSTIDENTIFIER(void* context,
|
||
290 | // void* constId, std::int32_t line, std::int32_t col, const char* text,
|
||
291 | // void* scopeRef, void* typeRef, void* valueRef);
|
||
292 | 5 | krennw | ok = TIRESIAS_INIT_CONSTIDENTIFIER (m_context |
293 | , m_objects.at(call.parameters(0).uint64_value())
|
||
294 | , call.parameters(1).int32_value()
|
||
295 | , call.parameters(2).int32_value()
|
||
296 | , call.parameters(3).literal_value().c_str()
|
||
297 | , m_objects.at(call.parameters(4).uint64_value())
|
||
298 | , m_objects.at(call.parameters(5).uint64_value())
|
||
299 | , m_objects.at(call.parameters(6).uint64_value()));
|
||
300 | 2 | krennw | break;
|
301 | } |
||
302 | case serialize::PBIdentifiers::TIRESIAS_INIT_ATTRIDENTIFIER :
|
||
303 | { |
||
304 | // DLL bool TIRESIAS_INIT_ATTRIDENTIFIER(void* context,
|
||
305 | // void* attrId, std::int32_t line, std::int32_t col, const char* text,
|
||
306 | // void* scopeRef, void* typeRef, void* initRef,
|
||
307 | // bool isStatic, bool isControllable, bool isObservable);
|
||
308 | 5 | krennw | ok = TIRESIAS_INIT_ATTRIDENTIFIER (m_context |
309 | , m_objects.at(call.parameters(0).uint64_value())
|
||
310 | , call.parameters(1).int32_value()
|
||
311 | , call.parameters(2).int32_value()
|
||
312 | , call.parameters(3).literal_value().c_str()
|
||
313 | , m_objects.at(call.parameters(4).uint64_value())
|
||
314 | , m_objects.at(call.parameters(5).uint64_value())
|
||
315 | , m_objects.at(call.parameters(6).uint64_value())
|
||
316 | , call.parameters(7).bool_value()
|
||
317 | , call.parameters(8).bool_value()
|
||
318 | , call.parameters(9).bool_value());
|
||
319 | 2 | krennw | break;
|
320 | } |
||
321 | case serialize::PBIdentifiers::TIRESIAS_INIT_EXPRVARIDENTIFIER :
|
||
322 | { |
||
323 | // DLL bool TIRESIAS_INIT_EXPRVARIDENTIFIER(void* context,
|
||
324 | // void* exprVarId, std::int32_t line, std::int32_t col, const char* text,
|
||
325 | // void* scopeRef, void* typeRef, bool initialized);
|
||
326 | 5 | krennw | ok = TIRESIAS_INIT_EXPRVARIDENTIFIER (m_context |
327 | , m_objects.at(call.parameters(0).uint64_value())
|
||
328 | , call.parameters(1).int32_value()
|
||
329 | , call.parameters(2).int32_value()
|
||
330 | , call.parameters(3).literal_value().c_str()
|
||
331 | , m_objects.at(call.parameters(4).uint64_value())
|
||
332 | , m_objects.at(call.parameters(5).uint64_value())
|
||
333 | , call.parameters(6).bool_value());
|
||
334 | 2 | krennw | break;
|
335 | } |
||
336 | case serialize::PBIdentifiers::TIRESIAS_INIT_PARAMIDENTIFIER :
|
||
337 | { |
||
338 | // DLL bool TIRESIAS_INIT_PARAMIDENTIFIER(void* context,
|
||
339 | // void* paramId, std::int32_t line, std::int32_t column, const char* text,
|
||
340 | // void* scopeRef, void* typeRef);
|
||
341 | 5 | krennw | ok = TIRESIAS_INIT_PARAMIDENTIFIER (m_context |
342 | , m_objects.at(call.parameters(0).uint64_value())
|
||
343 | , call.parameters(1).int32_value()
|
||
344 | , call.parameters(2).int32_value()
|
||
345 | , call.parameters(3).literal_value().c_str()
|
||
346 | , m_objects.at(call.parameters(4).uint64_value())
|
||
347 | , m_objects.at(call.parameters(5).uint64_value()));
|
||
348 | 2 | krennw | break;
|
349 | } |
||
350 | case serialize::PBIdentifiers::TIRESIAS_INIT_LOCVARIDENTIFIER :
|
||
351 | { |
||
352 | // DLL bool TIRESIAS_INIT_LOCVARIDENTIFIER(void* context,
|
||
353 | // void* locVarId, std::int32_t line, std::int32_t column, const char* text,
|
||
354 | // void* scopeRef, void* typeRef);
|
||
355 | 5 | krennw | ok = TIRESIAS_INIT_LOCVARIDENTIFIER (m_context |
356 | , m_objects.at(call.parameters(0).uint64_value())
|
||
357 | , call.parameters(1).int32_value()
|
||
358 | , call.parameters(2).int32_value()
|
||
359 | , call.parameters(3).literal_value().c_str()
|
||
360 | , m_objects.at(call.parameters(4).uint64_value())
|
||
361 | , m_objects.at(call.parameters(5).uint64_value()));
|
||
362 | 2 | krennw | break;
|
363 | } |
||
364 | case serialize::PBIdentifiers::TIRESIAS_INIT_TYPEIDENTIFIER :
|
||
365 | { |
||
366 | // DLL bool TIRESIAS_INIT_TYPEIDENTIFIER(void* context,
|
||
367 | // void* typeId, std::int32_t line, std::int32_t column, const char* text,
|
||
368 | // void* scopeRef, void* typeRef, const char* prefix);
|
||
369 | 5 | krennw | ok = TIRESIAS_INIT_TYPEIDENTIFIER (m_context |
370 | , m_objects.at(call.parameters(0).uint64_value())
|
||
371 | , call.parameters(1).int32_value()
|
||
372 | , call.parameters(2).int32_value()
|
||
373 | , call.parameters(3).literal_value().c_str()
|
||
374 | , m_objects.at(call.parameters(4).uint64_value())
|
||
375 | , m_objects.at(call.parameters(5).uint64_value())
|
||
376 | , call.parameters(6).literal_value().c_str());
|
||
377 | 2 | krennw | break;
|
378 | } |
||
379 | case serialize::PBIdentifiers::TIRESIAS_INIT_SELFIDENTIFIER :
|
||
380 | { |
||
381 | // DLL bool TIRESIAS_INIT_SELFIDENTIFIER(void* context,
|
||
382 | // void* typeId, std::int32_t line, std::int32_t column, const char* text,
|
||
383 | // void* scopeRef, void* typeRef, const char* prefix);
|
||
384 | 5 | krennw | ok = TIRESIAS_INIT_SELFIDENTIFIER (m_context |
385 | , m_objects.at(call.parameters(0).uint64_value())
|
||
386 | , call.parameters(1).int32_value()
|
||
387 | , call.parameters(2).int32_value()
|
||
388 | , call.parameters(3).literal_value().c_str()
|
||
389 | , m_objects.at(call.parameters(4).uint64_value())
|
||
390 | , m_objects.at(call.parameters(5).uint64_value())
|
||
391 | , call.parameters(6).literal_value().c_str());
|
||
392 | 2 | krennw | break;
|
393 | } |
||
394 | case serialize::PBIdentifiers::TIRESIAS_INIT_METHODIDENTIFIER :
|
||
395 | { |
||
396 | // DLL bool TIRESIAS_INIT_METHODIDENTIFIER(void* context,
|
||
397 | // void* methodId, std::int32_t line, std::int32_t column, const char* text,
|
||
398 | // void* scopeRef, void* typeRef, const char* prefix, void* parameterListRef,
|
||
399 | // void* symbolTableRef, void* bodyRef);
|
||
400 | 5 | krennw | ok = TIRESIAS_INIT_METHODIDENTIFIER (m_context |
401 | , m_objects.at(call.parameters(0).uint64_value())
|
||
402 | , call.parameters(1).int32_value()
|
||
403 | , call.parameters(2).int32_value()
|
||
404 | , call.parameters(3).literal_value().c_str()
|
||
405 | , m_objects.at(call.parameters(4).uint64_value())
|
||
406 | , m_objects.at(call.parameters(5).uint64_value())
|
||
407 | , call.parameters(6).literal_value().c_str()
|
||
408 | , m_objects.at(call.parameters(7).uint64_value())
|
||
409 | , m_objects.at(call.parameters(8).uint64_value())
|
||
410 | , m_objects.at(call.parameters(9).uint64_value()));
|
||
411 | 2 | krennw | break;
|
412 | } |
||
413 | case serialize::PBIdentifiers::TIRESIAS_INIT_MODULE :
|
||
414 | { |
||
415 | // DLL bool TIRESIAS_INIT_MODULE(void* context, void* moduleId,
|
||
416 | // int line, int column, const char* text, void* scopeRef,
|
||
417 | // void* typeRef, const char* prefix, void* symTabRef);
|
||
418 | 5 | krennw | ok = TIRESIAS_INIT_MODULE (m_context |
419 | , m_objects.at(call.parameters(0).uint64_value())
|
||
420 | , call.parameters(1).int32_value()
|
||
421 | , call.parameters(2).int32_value()
|
||
422 | , call.parameters(3).literal_value().c_str()
|
||
423 | , m_objects.at(call.parameters(4).uint64_value())
|
||
424 | , m_objects.at(call.parameters(5).uint64_value())
|
||
425 | , call.parameters(6).literal_value().c_str()
|
||
426 | , m_objects.at(call.parameters(7).uint64_value()));
|
||
427 | 2 | krennw | break;
|
428 | } |
||
429 | case serialize::PBIdentifiers::TIRESIAS_INIT_MAINMODULE :
|
||
430 | { |
||
431 | // DLL bool TIRESIAS_INIT_MAINMODULE(void* context,
|
||
432 | // void* moduleId, int line, int column, const char* text,
|
||
433 | // void* scopeRef, void* typeRef, const char* prefix,
|
||
434 | // void* symTabRef, void* identifierListRef);
|
||
435 | 5 | krennw | ok = TIRESIAS_INIT_MAINMODULE (m_context |
436 | , m_objects.at(call.parameters(0).uint64_value())
|
||
437 | , call.parameters(1).int32_value()
|
||
438 | , call.parameters(2).int32_value()
|
||
439 | , call.parameters(3).literal_value().c_str()
|
||
440 | , m_objects.at(call.parameters(4).uint64_value())
|
||
441 | , m_objects.at(call.parameters(5).uint64_value())
|
||
442 | , call.parameters(6).literal_value().c_str()
|
||
443 | , m_objects.at(call.parameters(7).uint64_value())
|
||
444 | , m_objects.at(call.parameters(8).uint64_value()));
|
||
445 | 2 | krennw | break;
|
446 | } |
||
447 | default:
|
||
448 | m_context->logError("Unknown value for enum PBIdentifiers.");
|
||
449 | abort(); |
||
450 | } |
||
451 | 5 | krennw | if (!ok) {
|
452 | m_context->logError("Error initializing identifier.");
|
||
453 | abort(); |
||
454 | } |
||
455 | 2 | krennw | } |
456 | |||
457 | /**
|
||
458 | * Calls to functions that initialize the various subtypes of Type.
|
||
459 | * */
|
||
460 | void ProtoBufAstTraversal::type(const serialize::PBFunctionCall& call){ |
||
461 | switch (call.type()) {
|
||
462 | case serialize::PBTypes::TIRESIAS_INIT_INTTYPE :
|
||
463 | { |
||
464 | // DLL bool TIRESIAS_INIT_INTTYPE(void* context, void* typeId,
|
||
465 | // void* identifierRef, bool anonymousType, std::int32_t low,
|
||
466 | // std::int32_t high);
|
||
467 | TIRESIAS_INIT_INTTYPE (m_context |
||
468 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
469 | , m_objects.at(call.parameters(1).uint64_value())
|
||
470 | , call.parameters(2).bool_value()
|
||
471 | , call.parameters(3).int32_value()
|
||
472 | , call.parameters(4).int32_value());
|
||
473 | 2 | krennw | break;
|
474 | } |
||
475 | case serialize::PBTypes::TIRESIAS_INIT_BOOLTYPE :
|
||
476 | { |
||
477 | // DLL bool TIRESIAS_INIT_BOOLTYPE(void* context, void* typeId,
|
||
478 | // void* identifierRef, bool anonymousType);
|
||
479 | TIRESIAS_INIT_BOOLTYPE (m_context |
||
480 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
481 | , m_objects.at(call.parameters(1).uint64_value())
|
||
482 | , call.parameters(2).bool_value());
|
||
483 | 2 | krennw | |
484 | break;
|
||
485 | } |
||
486 | case serialize::PBTypes::TIRESIAS_INIT_VALUEDENUMTYPE :
|
||
487 | { |
||
488 | // DLL bool TIRESIAS_INIT_VALUEDENUMTYPE(void* context,
|
||
489 | // void* typeId, void* identifierRef,
|
||
490 | // bool anonymousType, void* symTabRef, void* intTypeRef);
|
||
491 | TIRESIAS_INIT_VALUEDENUMTYPE (m_context |
||
492 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
493 | , m_objects.at(call.parameters(1).uint64_value())
|
||
494 | , call.parameters(2).bool_value()
|
||
495 | , m_objects.at(call.parameters(3).uint64_value())
|
||
496 | , m_objects.at(call.parameters(4).uint64_value()));
|
||
497 | 2 | krennw | break;
|
498 | } |
||
499 | case serialize::PBTypes::TIRESIAS_INIT_ENUMTYPE :
|
||
500 | { |
||
501 | // DLL bool TIRESIAS_INIT_ENUMTYPE(void* context, void* typeId,
|
||
502 | // void* identifierRef, bool anonymousType,
|
||
503 | // void* symTabRef);
|
||
504 | TIRESIAS_INIT_ENUMTYPE (m_context |
||
505 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
506 | , m_objects.at(call.parameters(1).uint64_value())
|
||
507 | , call.parameters(2).bool_value()
|
||
508 | , m_objects.at(call.parameters(3).uint64_value()));
|
||
509 | 2 | krennw | break;
|
510 | } |
||
511 | case serialize::PBTypes::TIRESIAS_INIT_LISTTYPE :
|
||
512 | { |
||
513 | // DLL bool TIRESIAS_INIT_LISTTYPE(void* context, void* typeId,
|
||
514 | // void* identifierRef, bool anonymousType,
|
||
515 | // void* innerTypeRef, std::uint32_t maxNumberOfElements);
|
||
516 | TIRESIAS_INIT_LISTTYPE (m_context |
||
517 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
518 | , m_objects.at(call.parameters(1).uint64_value())
|
||
519 | , call.parameters(2).bool_value()
|
||
520 | , m_objects.at(call.parameters(3).uint64_value())
|
||
521 | , call.parameters(4).uint32_value());
|
||
522 | 2 | krennw | break;
|
523 | } |
||
524 | case serialize::PBTypes::TIRESIAS_INIT_TUPLETYPE :
|
||
525 | { |
||
526 | // DLL bool TIRESIAS_INIT_TUPLETYPE(void* context, void* typeId,
|
||
527 | // void* identifierRef, bool anonymousType,
|
||
528 | // void* typeListRef);
|
||
529 | TIRESIAS_INIT_TUPLETYPE (m_context |
||
530 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
531 | , m_objects.at(call.parameters(1).uint64_value())
|
||
532 | , call.parameters(2).bool_value()
|
||
533 | , m_objects.at(call.parameters(3).uint64_value()));
|
||
534 | 2 | krennw | break;
|
535 | } |
||
536 | case serialize::PBTypes::TIRESIAS_INIT_FUNCTIONTYPE :
|
||
537 | { |
||
538 | // DLL bool TIRESIAS_INIT_FUNCTIONTYPE(void* context,
|
||
539 | // void* typeId, void* identifierRef,
|
||
540 | // bool anonymousType, void* paramTypeListRef,
|
||
541 | // void* returnTypeRef, std::int32_t functionKind, bool isPure);
|
||
542 | TIRESIAS_INIT_FUNCTIONTYPE (m_context |
||
543 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
544 | , m_objects.at(call.parameters(1).uint64_value())
|
||
545 | , call.parameters(2).bool_value()
|
||
546 | , m_objects.at(call.parameters(3).uint64_value())
|
||
547 | , m_objects.at(call.parameters(4).uint64_value())
|
||
548 | , call.parameters(5).int32_value()
|
||
549 | , call.parameters(6).bool_value());
|
||
550 | 2 | krennw | break;
|
551 | } |
||
552 | case serialize::PBTypes::TIRESIAS_INIT_ACTIONSYSTEMINSTANCE :
|
||
553 | { |
||
554 | // DLL bool TIRESIAS_INIT_ACTIONSYSTEMINSTANCE(void* context,
|
||
555 | // void* instance, void* typeRef, const char* name,
|
||
556 | // std::int32_t numOfCreatedObjs, void* parentInstanceRef);
|
||
557 | TIRESIAS_INIT_ACTIONSYSTEMINSTANCE (m_context |
||
558 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
559 | , m_objects.at(call.parameters(1).uint64_value())
|
||
560 | , call.parameters(2).literal_value().c_str()
|
||
561 | , call.parameters(3).int32_value()
|
||
562 | , m_objects.at(call.parameters(4).uint64_value()));
|
||
563 | 2 | krennw | break;
|
564 | } |
||
565 | case serialize::PBTypes::TIRESIAS_INIT_ACTIONSYSTEMTYPE :
|
||
566 | { |
||
567 | // DLL bool TIRESIAS_INIT_ACTIONSYSTEMTYPE(void* context,
|
||
568 | // void* typeId, void* identifierRef,
|
||
569 | // bool anonymousType, void* baseTypeRef,
|
||
570 | // void* parentScopeRef, void* doOdBlockRef,
|
||
571 | // void* symTab, void* objectsListRef,
|
||
572 | // void* derivedObjectsListRef, bool autoConstruction,
|
||
573 | // bool isInSystemDescription);
|
||
574 | TIRESIAS_INIT_ACTIONSYSTEMTYPE (m_context |
||
575 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
576 | , m_objects.at(call.parameters(1).uint64_value())
|
||
577 | , call.parameters(2).bool_value()
|
||
578 | , m_objects.at(call.parameters(3).uint64_value())
|
||
579 | , m_objects.at(call.parameters(4).uint64_value())
|
||
580 | , m_objects.at(call.parameters(5).uint64_value())
|
||
581 | , m_objects.at(call.parameters(6).uint64_value())
|
||
582 | , m_objects.at(call.parameters(7).uint64_value())
|
||
583 | , m_objects.at(call.parameters(8).uint64_value())
|
||
584 | , call.parameters(9).bool_value()
|
||
585 | , call.parameters(10).bool_value());
|
||
586 | 2 | krennw | break;
|
587 | } |
||
588 | case serialize::PBTypes::TIRESIAS_INIT_NULLTYPE :
|
||
589 | { |
||
590 | // DLL bool TIRESIAS_INIT_NULLTYPE(void* context, void* typeId,
|
||
591 | // void* identifierRef, bool anonymousType);
|
||
592 | TIRESIAS_INIT_NULLTYPE (m_context |
||
593 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
594 | , m_objects.at(call.parameters(1).uint64_value())
|
||
595 | , call.parameters(2).bool_value());
|
||
596 | 2 | krennw | break;
|
597 | } |
||
598 | default:
|
||
599 | m_context->logError("Unknown value for enum PBTypes.");
|
||
600 | abort(); |
||
601 | |||
602 | } |
||
603 | } |
||
604 | |||
605 | /**
|
||
606 | * Calls to functions that initialize the various subtypes of Statement.
|
||
607 | * */
|
||
608 | void ProtoBufAstTraversal::statement(const serialize::PBFunctionCall& call){ |
||
609 | switch (call.statement()) {
|
||
610 | case serialize::PBStatements::TIRESIAS_INIT_SKIP :
|
||
611 | { |
||
612 | // DLL bool TIRESIAS_INIT_SKIP(void* context, void* stmnt,
|
||
613 | // std::int32_t line, std::int32_t col);
|
||
614 | TIRESIAS_INIT_SKIP (m_context |
||
615 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
616 | , call.parameters(1).int32_value()
|
||
617 | , call.parameters(2).int32_value());
|
||
618 | 2 | krennw | break;
|
619 | } |
||
620 | case serialize::PBStatements::TIRESIAS_INIT_BREAK :
|
||
621 | { |
||
622 | // DLL bool TIRESIAS_INIT_BREAK(void* context, void* stmnt,
|
||
623 | // std::int32_t line, std::int32_t col);
|
||
624 | TIRESIAS_INIT_BREAK (m_context |
||
625 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
626 | , call.parameters(1).int32_value()
|
||
627 | , call.parameters(2).int32_value());
|
||
628 | 2 | krennw | break;
|
629 | } |
||
630 | case serialize::PBStatements::TIRESIAS_INIT_ABORT :
|
||
631 | { |
||
632 | // DLL bool TIRESIAS_INIT_ABORT(void* context, void* stmnt,
|
||
633 | // std::int32_t line, std::int32_t col);
|
||
634 | TIRESIAS_INIT_ABORT (m_context |
||
635 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
636 | , call.parameters(1).int32_value()
|
||
637 | , call.parameters(2).int32_value());
|
||
638 | 2 | krennw | break;
|
639 | } |
||
640 | case serialize::PBStatements::TIRESIAS_INIT_NONDETBLOCK :
|
||
641 | { |
||
642 | // DLL bool TIRESIAS_INIT_NONDETBLOCK(void* context, void* block,
|
||
643 | // std::int32_t line, std::int32_t col, void* symTabRef, void* stmtListRef,
|
||
644 | // void* scopeRef);
|
||
645 | TIRESIAS_INIT_NONDETBLOCK (m_context |
||
646 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
647 | , call.parameters(1).int32_value()
|
||
648 | , call.parameters(2).int32_value()
|
||
649 | , m_objects.at(call.parameters(3).uint64_value())
|
||
650 | , m_objects.at(call.parameters(4).uint64_value())
|
||
651 | , m_objects.at(call.parameters(5).uint64_value()));
|
||
652 | 2 | krennw | break;
|
653 | } |
||
654 | case serialize::PBStatements::TIRESIAS_INIT_SEQBLOCK :
|
||
655 | { |
||
656 | // DLL bool TIRESIAS_INIT_SEQBLOCK(void* context, void* block,
|
||
657 | // std::int32_t line, std::int32_t col, void* symTabRef, void* stmtListRef,
|
||
658 | // void* scopeRef, void* filterExprRef);
|
||
659 | TIRESIAS_INIT_SEQBLOCK (m_context |
||
660 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
661 | , call.parameters(1).int32_value()
|
||
662 | , call.parameters(2).int32_value()
|
||
663 | , m_objects.at(call.parameters(3).uint64_value())
|
||
664 | , m_objects.at(call.parameters(4).uint64_value())
|
||
665 | , m_objects.at(call.parameters(5).uint64_value())
|
||
666 | , m_objects.at(call.parameters(6).uint64_value()));
|
||
667 | 2 | krennw | break;
|
668 | } |
||
669 | case serialize::PBStatements::TIRESIAS_INIT_PRIOBLOCK :
|
||
670 | { |
||
671 | // DLL bool TIRESIAS_INIT_PRIOBLOCK(void* context, void* block,
|
||
672 | // std::int32_t line, std::int32_t col, void* symTabRef, void* stmtListRef,
|
||
673 | // void* scopeRef);
|
||
674 | TIRESIAS_INIT_PRIOBLOCK (m_context |
||
675 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
676 | , call.parameters(1).int32_value()
|
||
677 | , call.parameters(2).int32_value()
|
||
678 | , m_objects.at(call.parameters(3).uint64_value())
|
||
679 | , m_objects.at(call.parameters(4).uint64_value())
|
||
680 | , m_objects.at(call.parameters(5).uint64_value()));
|
||
681 | 2 | krennw | break;
|
682 | } |
||
683 | case serialize::PBStatements::TIRESIAS_INIT_GUARDEDCOMMAND :
|
||
684 | { |
||
685 | // DLL bool TIRESIAS_INIT_GUARDEDCOMMAND(void* context,
|
||
686 | // void* stmt, std::int32_t line, std::int32_t pos, void* scopeRef,
|
||
687 | // void* guardExprRef, void* bodyRef);
|
||
688 | TIRESIAS_INIT_GUARDEDCOMMAND (m_context |
||
689 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
690 | , call.parameters(1).int32_value()
|
||
691 | , call.parameters(2).int32_value()
|
||
692 | , m_objects.at(call.parameters(3).uint64_value())
|
||
693 | , m_objects.at(call.parameters(4).uint64_value())
|
||
694 | , m_objects.at(call.parameters(5).uint64_value()));
|
||
695 | 2 | krennw | break;
|
696 | } |
||
697 | case serialize::PBStatements::TIRESIAS_INIT_ASSIGNMENT :
|
||
698 | { |
||
699 | // DLL bool TIRESIAS_INIT_ASSIGNMENT(void* context, void* stmt,
|
||
700 | // std::int32_t line, std::int32_t pos, void* scopeRef, void* nonDetExprRef,
|
||
701 | // void* placeExprListRef, void* valueExprListRef,
|
||
702 | // void* symTabRef);
|
||
703 | TIRESIAS_INIT_ASSIGNMENT (m_context |
||
704 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
705 | , call.parameters(1).int32_value()
|
||
706 | , call.parameters(2).int32_value()
|
||
707 | , m_objects.at(call.parameters(3).uint64_value())
|
||
708 | , m_objects.at(call.parameters(4).uint64_value())
|
||
709 | , m_objects.at(call.parameters(5).uint64_value())
|
||
710 | , m_objects.at(call.parameters(6).uint64_value())
|
||
711 | , m_objects.at(call.parameters(7).uint64_value()));
|
||
712 | 2 | krennw | break;
|
713 | } |
||
714 | case serialize::PBStatements::TIRESIAS_INIT_CALL :
|
||
715 | { |
||
716 | // DLL bool TIRESIAS_INIT_CALL(void* context, void* stmt,
|
||
717 | // std::int32_t line, std::int32_t pos, void* callExprRef);
|
||
718 | TIRESIAS_INIT_CALL (m_context |
||
719 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
720 | , call.parameters(1).int32_value()
|
||
721 | , call.parameters(2).int32_value()
|
||
722 | , m_objects.at(call.parameters(3).uint64_value()));
|
||
723 | 2 | krennw | break;
|
724 | } |
||
725 | default:
|
||
726 | m_context->logError("Unknown value for enum PBStatements.");
|
||
727 | abort(); |
||
728 | } |
||
729 | } |
||
730 | |||
731 | /**
|
||
732 | * Calls to functions that initialize the various subtypes of Expression.
|
||
733 | * */
|
||
734 | void ProtoBufAstTraversal::expression(const serialize::PBFunctionCall& call){ |
||
735 | switch (call.expression()) {
|
||
736 | case serialize::PBExpressions::TIRESIAS_INIT_TYPEEXPRESSION :
|
||
737 | { |
||
738 | // DLL bool TIRESIAS_INIT_TYPEEXPRESSION(void* context,
|
||
739 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
740 | // void* callTargetsIdentifierListRef, void* symbTabRef);
|
||
741 | TIRESIAS_INIT_TYPEEXPRESSION (m_context |
||
742 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
743 | , call.parameters(1).int32_value()
|
||
744 | , call.parameters(2).int32_value()
|
||
745 | , m_objects.at(call.parameters(3).uint64_value())
|
||
746 | , m_objects.at(call.parameters(4).uint64_value())
|
||
747 | , m_objects.at(call.parameters(5).uint64_value()));
|
||
748 | 2 | krennw | break;
|
749 | } |
||
750 | case serialize::PBExpressions::TIRESIAS_INIT_IDENTIFIEREXPRESSION :
|
||
751 | { |
||
752 | // DLL bool TIRESIAS_INIT_IDENTIFIEREXPRESSION(void* context,
|
||
753 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
754 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
755 | // void* identifierRef, bool isSelf);
|
||
756 | TIRESIAS_INIT_IDENTIFIEREXPRESSION (m_context |
||
757 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
758 | , call.parameters(1).int32_value()
|
||
759 | , call.parameters(2).int32_value()
|
||
760 | , m_objects.at(call.parameters(3).uint64_value())
|
||
761 | , m_objects.at(call.parameters(4).uint64_value())
|
||
762 | , m_objects.at(call.parameters(5).uint64_value())
|
||
763 | , m_objects.at(call.parameters(6).uint64_value())
|
||
764 | , call.parameters(7).bool_value());
|
||
765 | 2 | krennw | break;
|
766 | } |
||
767 | case serialize::PBExpressions::TIRESIAS_INIT_UNARYEXPRESSION :
|
||
768 | { |
||
769 | // DLL bool TIRESIAS_INIT_UNARYEXPRESSION(void* context,
|
||
770 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
771 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
772 | // void* child);
|
||
773 | TIRESIAS_INIT_UNARYEXPRESSION (m_context |
||
774 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
775 | , call.parameters(1).int32_value()
|
||
776 | , call.parameters(2).int32_value()
|
||
777 | , m_objects.at(call.parameters(3).uint64_value())
|
||
778 | , m_objects.at(call.parameters(4).uint64_value())
|
||
779 | , m_objects.at(call.parameters(5).uint64_value())
|
||
780 | , m_objects.at(call.parameters(6).uint64_value()));
|
||
781 | 2 | krennw | break;
|
782 | } |
||
783 | case serialize::PBExpressions::TIRESIAS_INIT_BINARYEXPRESSION :
|
||
784 | { |
||
785 | // DLL bool TIRESIAS_INIT_BINARYEXPRESSION(void* context,
|
||
786 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
787 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
788 | // void* left, void* right);
|
||
789 | TIRESIAS_INIT_BINARYEXPRESSION (m_context |
||
790 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
791 | , call.parameters(1).int32_value()
|
||
792 | , call.parameters(2).int32_value()
|
||
793 | , m_objects.at(call.parameters(3).uint64_value())
|
||
794 | , m_objects.at(call.parameters(4).uint64_value())
|
||
795 | , m_objects.at(call.parameters(5).uint64_value())
|
||
796 | , m_objects.at(call.parameters(6).uint64_value())
|
||
797 | , m_objects.at(call.parameters(7).uint64_value()));
|
||
798 | 2 | krennw | break;
|
799 | } |
||
800 | case serialize::PBExpressions::TIRESIAS_INIT_TERNARYEXPRESSION :
|
||
801 | { |
||
802 | // DLL bool TIRESIAS_INIT_TERNARYEXPRESSION(void* context,
|
||
803 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
804 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
805 | // void* left, void* mid, void* right, void* defScopeRef);
|
||
806 | TIRESIAS_INIT_TERNARYEXPRESSION (m_context |
||
807 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
808 | , call.parameters(1).int32_value()
|
||
809 | , call.parameters(2).int32_value()
|
||
810 | , m_objects.at(call.parameters(3).uint64_value())
|
||
811 | , m_objects.at(call.parameters(4).uint64_value())
|
||
812 | , m_objects.at(call.parameters(5).uint64_value())
|
||
813 | , m_objects.at(call.parameters(6).uint64_value())
|
||
814 | , m_objects.at(call.parameters(7).uint64_value())
|
||
815 | , m_objects.at(call.parameters(8).uint64_value())
|
||
816 | , m_objects.at(call.parameters(9).uint64_value()));
|
||
817 | 2 | krennw | break;
|
818 | } |
||
819 | case serialize::PBExpressions::TIRESIAS_INIT_INTVALUEEXPRESSION :
|
||
820 | { |
||
821 | // DLL bool TIRESIAS_INIT_INTVALUEEXPRESSION(void* context,
|
||
822 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
823 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
824 | // std::int32_t value);
|
||
825 | TIRESIAS_INIT_INTVALUEEXPRESSION (m_context |
||
826 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
827 | , call.parameters(1).int32_value()
|
||
828 | , call.parameters(2).int32_value()
|
||
829 | , m_objects.at(call.parameters(3).uint64_value())
|
||
830 | , m_objects.at(call.parameters(4).uint64_value())
|
||
831 | , m_objects.at(call.parameters(5).uint64_value())
|
||
832 | , call.parameters(6).int32_value());
|
||
833 | 2 | krennw | break;
|
834 | } |
||
835 | case serialize::PBExpressions::TIRESIAS_INIT_BOOLVALUEEXPRESSION :
|
||
836 | { |
||
837 | // DLL bool TIRESIAS_INIT_BOOLVALUEEXPRESSION(void* context,
|
||
838 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
839 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
840 | // bool value);
|
||
841 | TIRESIAS_INIT_BOOLVALUEEXPRESSION (m_context |
||
842 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
843 | , call.parameters(1).int32_value()
|
||
844 | , call.parameters(2).int32_value()
|
||
845 | , m_objects.at(call.parameters(3).uint64_value())
|
||
846 | , m_objects.at(call.parameters(4).uint64_value())
|
||
847 | , m_objects.at(call.parameters(5).uint64_value())
|
||
848 | , call.parameters(6).bool_value());
|
||
849 | 2 | krennw | break;
|
850 | } |
||
851 | case serialize::PBExpressions::TIRESIAS_INIT_REFVALUEEXPRESSION :
|
||
852 | { |
||
853 | // DLL bool TIRESIAS_INIT_REFVALUEEXPRESSION(void* context,
|
||
854 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
855 | // void* callTargetsIdentifierListRef, void* symbTabRef,void* object);
|
||
856 | TIRESIAS_INIT_REFVALUEEXPRESSION (m_context |
||
857 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
858 | , call.parameters(1).int32_value()
|
||
859 | , call.parameters(2).int32_value()
|
||
860 | , m_objects.at(call.parameters(3).uint64_value())
|
||
861 | , m_objects.at(call.parameters(4).uint64_value())
|
||
862 | , m_objects.at(call.parameters(5).uint64_value())
|
||
863 | , m_objects.at(call.parameters(6).uint64_value()));
|
||
864 | 2 | krennw | break;
|
865 | } |
||
866 | case serialize::PBExpressions::TIRESIAS_INIT_LISTCONSTRUCTOR :
|
||
867 | { |
||
868 | // DLL bool TIRESIAS_INIT_LISTCONSTRUCTOR(void* context,
|
||
869 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
870 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
871 | // void* exprList, void* symTab, void* parentScope,
|
||
872 | // void* comprehension, bool hasComprehension);
|
||
873 | TIRESIAS_INIT_LISTCONSTRUCTOR (m_context |
||
874 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
875 | , call.parameters(1).int32_value()
|
||
876 | , call.parameters(2).int32_value()
|
||
877 | , m_objects.at(call.parameters(3).uint64_value())
|
||
878 | , m_objects.at(call.parameters(4).uint64_value())
|
||
879 | , m_objects.at(call.parameters(5).uint64_value())
|
||
880 | , m_objects.at(call.parameters(6).uint64_value())
|
||
881 | , m_objects.at(call.parameters(7).uint64_value())
|
||
882 | , m_objects.at(call.parameters(8).uint64_value())
|
||
883 | , m_objects.at(call.parameters(9).uint64_value())
|
||
884 | , call.parameters(10).bool_value());
|
||
885 | 2 | krennw | break;
|
886 | } |
||
887 | case serialize::PBExpressions::TIRESIAS_INIT_SETCONSTRUCTOR :
|
||
888 | { |
||
889 | // DLL bool TIRESIAS_INIT_SETCONSTRUCTOR(void* context,
|
||
890 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
891 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
892 | // void* exprList, void* symTab, void* parentScope,
|
||
893 | // void* comprehension, bool hasComprehension);
|
||
894 | TIRESIAS_INIT_SETCONSTRUCTOR (m_context |
||
895 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
896 | , call.parameters(1).int32_value()
|
||
897 | , call.parameters(2).int32_value()
|
||
898 | , m_objects.at(call.parameters(3).uint64_value())
|
||
899 | , m_objects.at(call.parameters(4).uint64_value())
|
||
900 | , m_objects.at(call.parameters(5).uint64_value())
|
||
901 | , m_objects.at(call.parameters(6).uint64_value())
|
||
902 | , m_objects.at(call.parameters(7).uint64_value())
|
||
903 | , m_objects.at(call.parameters(8).uint64_value())
|
||
904 | , m_objects.at(call.parameters(9).uint64_value())
|
||
905 | , call.parameters(10).bool_value());
|
||
906 | 2 | krennw | break;
|
907 | } |
||
908 | case serialize::PBExpressions::TIRESIAS_INIT_TUPLECONSTRUCTOR :
|
||
909 | { |
||
910 | // DLL bool TIRESIAS_INIT_TUPLECONSTRUCTOR(void* context,
|
||
911 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
912 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
913 | // void* exprList, void* tupleTypeId, bool isMatcher);
|
||
914 | TIRESIAS_INIT_TUPLECONSTRUCTOR (m_context |
||
915 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
916 | , call.parameters(1).int32_value()
|
||
917 | , call.parameters(2).int32_value()
|
||
918 | , m_objects.at(call.parameters(3).uint64_value())
|
||
919 | , m_objects.at(call.parameters(4).uint64_value())
|
||
920 | , m_objects.at(call.parameters(5).uint64_value())
|
||
921 | , m_objects.at(call.parameters(6).uint64_value())
|
||
922 | , m_objects.at(call.parameters(7).uint64_value())
|
||
923 | , call.parameters(8).bool_value());
|
||
924 | 2 | krennw | break;
|
925 | } |
||
926 | case serialize::PBExpressions::TIRESIAS_INIT_ACCESSEXPRESSION :
|
||
927 | { |
||
928 | // DLL bool TIRESIAS_INIT_ACCESSEXPRESSION(void* context,
|
||
929 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
930 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
931 | // void* left, void* right);
|
||
932 | TIRESIAS_INIT_ACCESSEXPRESSION (m_context |
||
933 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
934 | , call.parameters(1).int32_value()
|
||
935 | , call.parameters(2).int32_value()
|
||
936 | , m_objects.at(call.parameters(3).uint64_value())
|
||
937 | , m_objects.at(call.parameters(4).uint64_value())
|
||
938 | , m_objects.at(call.parameters(5).uint64_value())
|
||
939 | , m_objects.at(call.parameters(6).uint64_value())
|
||
940 | , m_objects.at(call.parameters(7).uint64_value()));
|
||
941 | 2 | krennw | break;
|
942 | } |
||
943 | case serialize::PBExpressions::TIRESIAS_INIT_TUPLEMAPACCESSEXPRESSION :
|
||
944 | { |
||
945 | // DLL bool TIRESIAS_INIT_TUPLEMAPACCESSEXPRESSION(void* context,
|
||
946 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
947 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
948 | // void* child, void* argument);
|
||
949 | TIRESIAS_INIT_TUPLEMAPACCESSEXPRESSION (m_context |
||
950 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
951 | , call.parameters(1).int32_value()
|
||
952 | , call.parameters(2).int32_value()
|
||
953 | , m_objects.at(call.parameters(3).uint64_value())
|
||
954 | , m_objects.at(call.parameters(4).uint64_value())
|
||
955 | , m_objects.at(call.parameters(5).uint64_value())
|
||
956 | , m_objects.at(call.parameters(6).uint64_value())
|
||
957 | , m_objects.at(call.parameters(7).uint64_value()));
|
||
958 | 2 | krennw | break;
|
959 | } |
||
960 | case serialize::PBExpressions::TIRESIAS_INIT_CALLEXPRESSION :
|
||
961 | { |
||
962 | // DLL bool TIRESIAS_INIT_CALLEXPRESSION(void* context,
|
||
963 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
964 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
965 | // void* child, void* argumentList, void* scopeRef);
|
||
966 | TIRESIAS_INIT_CALLEXPRESSION (m_context |
||
967 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
968 | , call.parameters(1).int32_value()
|
||
969 | , call.parameters(2).int32_value()
|
||
970 | , m_objects.at(call.parameters(3).uint64_value())
|
||
971 | , m_objects.at(call.parameters(4).uint64_value())
|
||
972 | , m_objects.at(call.parameters(5).uint64_value())
|
||
973 | , m_objects.at(call.parameters(6).uint64_value())
|
||
974 | , m_objects.at(call.parameters(7).uint64_value())
|
||
975 | , m_objects.at(call.parameters(8).uint64_value()));
|
||
976 | 2 | krennw | break;
|
977 | } |
||
978 | case serialize::PBExpressions::TIRESIAS_INIT_QUANTIFIEREXPRESSION :
|
||
979 | { |
||
980 | // DLL bool TIRESIAS_INIT_QUANTIFIEREXPRESSION(void* context,
|
||
981 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
982 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
983 | // void* child, void* symTabRef, void* scopeRef);
|
||
984 | TIRESIAS_INIT_QUANTIFIEREXPRESSION (m_context |
||
985 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
986 | , call.parameters(1).int32_value()
|
||
987 | , call.parameters(2).int32_value()
|
||
988 | , m_objects.at(call.parameters(3).uint64_value())
|
||
989 | , m_objects.at(call.parameters(4).uint64_value())
|
||
990 | , m_objects.at(call.parameters(5).uint64_value())
|
||
991 | , m_objects.at(call.parameters(6).uint64_value())
|
||
992 | , m_objects.at(call.parameters(7).uint64_value())
|
||
993 | , m_objects.at(call.parameters(8).uint64_value()));
|
||
994 | 2 | krennw | break;
|
995 | } |
||
996 | case serialize::PBExpressions::TIRESIAS_INIT_OBJECTCONSTRUCTOR :
|
||
997 | { |
||
998 | // DLL bool TIRESIAS_INIT_OBJECTCONSTRUCTOR(void* context,
|
||
999 | // void* expr, std::int32_t line, std::int32_t pos, void* typeRef,
|
||
1000 | // void* callTargetsIdentifierListRef, void* symbTabRef,
|
||
1001 | // void* instanceList, std::uint32_t currentInstance, const char* name);
|
||
1002 | TIRESIAS_INIT_OBJECTCONSTRUCTOR (m_context |
||
1003 | 5 | krennw | , m_objects.at(call.parameters(0).uint64_value())
|
1004 | , call.parameters(1).int32_value()
|
||
1005 | , call.parameters(2).int32_value()
|
||
1006 | , m_objects.at(call.parameters(3).uint64_value())
|
||
1007 | , m_objects.at(call.parameters(4).uint64_value())
|
||
1008 | , m_objects.at(call.parameters(5).uint64_value())
|
||
1009 | , m_objects.at(call.parameters(6).uint64_value())
|
||
1010 | , call.parameters(7).uint32_value()
|
||
1011 | , call.parameters(8).literal_value().c_str());
|
||
1012 | 2 | krennw | break;
|
1013 | } |
||
1014 | default:
|
||
1015 | m_context->logError("Unknown value for enum PBExpressions.");
|
||
1016 | abort(); |
||
1017 | } |
||
1018 | } |
||
1019 | |||
1020 | } |