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