#include <ccodegeneratorvisitor.h>
Inheritance diagram for CCodeGeneratorVisitor:
|
Definition at line 19 of file ccodegeneratorvisitor.h.
|
|
Implements Visitor. Definition at line 7 of file ccodegeneratorvisitor.cpp.
00007 { 00008 VisitorReturn *v; 00009 return v; 00010 } |
|
Implements Visitor. Definition at line 12 of file ccodegeneratorvisitor.cpp.
00012 { 00013 VisitorReturn *v; 00014 return v; 00015 } |
|
Implements Visitor. Definition at line 17 of file ccodegeneratorvisitor.cpp.
00017 { 00018 VisitorReturn *v; 00019 return v; 00020 } |
|
Implements Visitor. Definition at line 22 of file ccodegeneratorvisitor.cpp.
00022 { 00023 VisitorReturn *v; 00024 return v; 00025 } |
|
Implements Visitor. Definition at line 27 of file ccodegeneratorvisitor.cpp.
00027 { 00028 VisitorReturn *v; 00029 return v; 00030 } |
|
Implements Visitor. Definition at line 32 of file ccodegeneratorvisitor.cpp.
00032 { 00033 VisitorReturn *v; 00034 return v; 00035 } |
|
Implements Visitor. Definition at line 37 of file ccodegeneratorvisitor.cpp.
00037 { 00038 VisitorReturn *v; 00039 return v; 00040 } |
|
Implements Visitor. Definition at line 42 of file ccodegeneratorvisitor.cpp.
00042 { 00043 VisitorReturn *v; 00044 return v; 00045 } |
|
Implements Visitor. Definition at line 47 of file ccodegeneratorvisitor.cpp.
00047 { 00048 VisitorReturn *v; 00049 return v; 00050 } |
|
Implements Visitor. Definition at line 52 of file ccodegeneratorvisitor.cpp.
00052 { 00053 VisitorReturn *v; 00054 return v; 00055 } |
|
Implements Visitor. Definition at line 57 of file ccodegeneratorvisitor.cpp.
00057 { 00058 VisitorReturn *v; 00059 return v; 00060 } |
|
Implements Visitor. Definition at line 62 of file ccodegeneratorvisitor.cpp.
00062 { 00063 VisitorReturn *v; 00064 return v; 00065 } |
|
Implements Visitor. Definition at line 67 of file ccodegeneratorvisitor.cpp.
00067 { 00068 VisitorReturn *v; 00069 return v; 00070 } |
|
Implements Visitor. Definition at line 72 of file ccodegeneratorvisitor.cpp.
00072 { 00073 VisitorReturn *v; 00074 return v; 00075 } |
|
Implements Visitor. Definition at line 77 of file ccodegeneratorvisitor.cpp.
00077 { 00078 VisitorReturn *v; 00079 return v; 00080 } |
|
Implements Visitor. Definition at line 82 of file ccodegeneratorvisitor.cpp.
00082 { 00083 VisitorReturn *v; 00084 return v; 00085 } |
|
Implements Visitor. Definition at line 87 of file ccodegeneratorvisitor.cpp.
00087 { 00088 VisitorReturn *v; 00089 return v; 00090 } |
|
Implements Visitor. Definition at line 92 of file ccodegeneratorvisitor.cpp.
00092 { 00093 VisitorReturn *v; 00094 return v; 00095 } |
|
Implements Visitor. Definition at line 97 of file ccodegeneratorvisitor.cpp.
00097 { 00098 VisitorReturn *v; 00099 return v; 00100 } |
|
Implements Visitor. Definition at line 102 of file ccodegeneratorvisitor.cpp.
00102 { 00103 VisitorReturn *v; 00104 return v; 00105 } |
|
Implements Visitor. Definition at line 107 of file ccodegeneratorvisitor.cpp.
00107 { 00108 VisitorReturn *v; 00109 return v; 00110 } |
|
Implements Visitor. Definition at line 112 of file ccodegeneratorvisitor.cpp.
00112 { 00113 VisitorReturn *v; 00114 return v; 00115 } |
|
Implements Visitor. Definition at line 117 of file ccodegeneratorvisitor.cpp.
00117 { 00118 VisitorReturn *v; 00119 return v; 00120 } |
|
Implements Visitor. Definition at line 122 of file ccodegeneratorvisitor.cpp.
00122 { 00123 VisitorReturn *v; 00124 return v; 00125 } |
|
Implements Visitor. Definition at line 127 of file ccodegeneratorvisitor.cpp.
00127 { 00128 VisitorReturn *v; 00129 return v; 00130 } |
|
Implements Visitor. Definition at line 132 of file ccodegeneratorvisitor.cpp.
00132 { 00133 VisitorReturn *v; 00134 return v; 00135 } |
|
Implements Visitor. Definition at line 137 of file ccodegeneratorvisitor.cpp.
00137 { 00138 VisitorReturn *v; 00139 return v; 00140 } |
|
Implements Visitor. Definition at line 142 of file ccodegeneratorvisitor.cpp.
00142 { 00143 VisitorReturn *v; 00144 return v; 00145 } |
|
Implements Visitor. Definition at line 147 of file ccodegeneratorvisitor.cpp.
00147 { 00148 VisitorReturn *v; 00149 00150 return v; 00151 } |
|
Implements Visitor. Definition at line 153 of file ccodegeneratorvisitor.cpp.
00153 { 00154 VisitorReturn *v; 00155 return v; 00156 } |
|
Implements Visitor. Definition at line 158 of file ccodegeneratorvisitor.cpp.
00158 { 00159 VisitorReturn *v; 00160 return v; 00161 } |
|
hFile.is_open() && Implements Visitor. Definition at line 164 of file ccodegeneratorvisitor.cpp. References cFile, Program::getBehavior(), Program::getImport(), Program::getMessage(), hFile, and Ast::visit().
00164 { 00165 VisitorReturn *v = 0; 00166 00167 if(program->getImport()) 00168 program->getImport()->visit(*this); // Não está sendo considerado ainda 00169 if(program->getBehavior()) 00170 program->getBehavior()->visit(*this); // Não está sendo considerado ainda 00171 00172 // Creating messages files! 00173 this->hFile.open("./code/messages.h"); 00174 this->cFile.open("./code/messages.c"); 00175 00176 if (hFile.is_open() && cFile.is_open()) { 00177 hFile << "\n\n"; 00186 00187 hFile << "#ifndef _MESSAGES_H_\n"; 00188 hFile << "#define _MESSAGES_H_\n\n"; 00189 00190 hFile << "#include <netinet/in.h>\n"; 00191 hFile << "#include <stdint.h>\n\n"; 00192 00193 hFile << "#ifndef _PM_BYTE_TYPE_\n"; 00194 hFile << "#define _PM_BYTE_TYPE_\n"; 00195 hFile << "\ttypedef unsigned char byte;\n"; 00196 hFile << "#endif\n\n"; 00197 00198 cFile << "#include <string.h>\n"; 00199 cFile << "#include <stdlib.h>\n"; 00200 cFile << "#include \"messages.h\"\n\n"; 00201 } 00202 else { 00203 cerr << "Unable to create messages.h and messages.c!\n"; 00204 exit(1); 00205 } 00206 program->getMessage()->visit(*this); 00207 hFile << "#endif\n"; 00208 00209 hFile.close(); 00210 cFile.close(); 00211 00212 00213 // Creating process files! 00214 // this->hFile.open("./code/processes.h"); 00215 // this->cFile.open("./code/processes.c"); 00216 this->cFile.open("./code/server.c"); 00217 00218 00219 if ( cFile.is_open()) { 00220 /* hFile << " 00255 // Escrita do servidor do cliente. GAMBIARRA temporária!! 00256 cFile << "#include \"cpmsocket.h\"\n"; 00257 cFile << "#include \"messages.h\"\n\n"; 00258 cFile << "int main(void)\n{\n"; 00259 cFile << "\tPMSocket *server = pmsocket_open(\"127.0.0.1\", 9986, TCP);\n"; 00260 cFile << "\tbyte buffer[14];\n\n"; 00261 cFile << "\tpmsocket_accept(server, 10);\n"; 00262 cFile << "\tpmsocket_recv(server, buffer, 14, NULL);\n"; 00263 cFile << "\tpmsocket_close(server);\n\n"; 00264 cFile << "\treturn 0;\n}\n"; 00265 cFile.close(); 00266 00267 cFile.open("./code/client.c"); 00268 if (cFile.is_open()) { 00269 cFile << "#include \"cpmsocket.h\"\n"; 00270 cFile << "#include \"messages.h\"\n\n"; 00271 cFile << "int main(void)\n{\n"; 00272 cFile << "\tPMSocket *server = pmsocket_connect(\"127.0.0.1\", 9986);\n"; 00273 cFile << "\tmessage_one msg;\n"; 00274 cFile << "\tbyte *buffer;\n\n"; 00275 cFile << "\tmsg.length = 10;\n\tmsg.msg = (byte *) malloc(msg.length);\n"; 00276 cFile << "\tmemcpy(msg.msg, \"projeto-R2\", 10);\n"; 00277 cFile << "\tmsg.flags = 3;\n"; 00278 cFile << "\tbuffer = message_one_serialize(&msg, NULL);\n"; 00279 cFile << "\tpmsocket_send(server, buffer, 14);\n"; 00280 cFile << "\tpmsocket_close(server);\n\n"; 00281 cFile << "\treturn 0;\n}\n"; 00282 } 00283 } 00284 else { 00285 cerr << "Unable to create processes.h and processes.c!\n"; 00286 exit(1); 00287 } 00288 00289 program->getProcess()->visit(*this); 00290 00291 return v; 00292 } |
|
Implements Visitor. Definition at line 294 of file ccodegeneratorvisitor.cpp.
00294 { 00295 VisitorReturn *v; 00296 return v; 00297 } |
|
Implements Visitor. Definition at line 299 of file ccodegeneratorvisitor.cpp.
00299 { 00300 VisitorReturn *v; 00301 return v; 00302 } |
|
Implements Visitor. Definition at line 304 of file ccodegeneratorvisitor.cpp.
00304 { 00305 VisitorReturn *v; 00306 return v; 00307 } |
|
Implements Visitor. Definition at line 309 of file ccodegeneratorvisitor.cpp.
00309 { 00310 VisitorReturn *v; 00311 return v; 00312 } |
|
Implements Visitor. Definition at line 314 of file ccodegeneratorvisitor.cpp.
00314 { 00315 VisitorReturn *v; 00316 return v; 00317 } |
|
Implements Visitor. Definition at line 319 of file ccodegeneratorvisitor.cpp.
00319 { 00320 VisitorReturn *v; 00321 00322 sequentialDeclaration->getDeclaration()->visit(*this); 00323 sequentialDeclaration->getSimpleDeclaration()->visit(*this); 00324 00325 return v; 00326 } |
|
Implements Visitor. Definition at line 328 of file ccodegeneratorvisitor.cpp.
00328 { 00329 VisitorReturn *v; 00330 return v; 00331 } |
|
Implements Visitor. Definition at line 333 of file ccodegeneratorvisitor.cpp.
00333 { 00334 VisitorReturn *v1, *v2; 00335 00336 v1 = sequentialFieldDeclaration->getFieldDeclaration()->visit(*this); 00337 v2 = sequentialFieldDeclaration->getSimpleFieldDeclaration()->visit(*this); 00338 00339 v1->fields.push_back(v2->fields[0]); 00340 00341 return v1; 00342 } |
|
Implements Visitor. Definition at line 344 of file ccodegeneratorvisitor.cpp.
00344 { 00345 VisitorReturn *v; 00346 return v; 00347 } |
|
Implements Visitor. Definition at line 349 of file ccodegeneratorvisitor.cpp.
00349 { 00350 VisitorReturn *v; 00351 return v; 00352 } |
|
Implements Visitor. Definition at line 354 of file ccodegeneratorvisitor.cpp.
00354 { 00355 VisitorReturn *v; 00356 return v; 00357 } |
|
Implements Visitor. Definition at line 359 of file ccodegeneratorvisitor.cpp.
00359 { 00360 VisitorReturn *v; 00361 return v; 00362 } |
|
Implements Visitor. Definition at line 364 of file ccodegeneratorvisitor.cpp.
00364 { 00365 VisitorReturn *v = 0; 00366 00367 sequentialMessage->getMessage()->visit(*this); 00368 sequentialMessage->getSimpleMessage()->visit(*this); 00369 00370 return v; 00371 } |
|
Implements Visitor. Definition at line 373 of file ccodegeneratorvisitor.cpp.
00373 { 00374 VisitorReturn *v = 0; 00375 00376 sequentialProcess->getProcess()->visit(*this); 00377 sequentialProcess->getSimpleProcess()->visit(*this); 00378 00379 return v; 00380 } |
|
Implements Visitor. Definition at line 382 of file ccodegeneratorvisitor.cpp.
00382 { 00383 VisitorReturn *v; 00384 return v; 00385 } |
|
Implements Visitor. Definition at line 387 of file ccodegeneratorvisitor.cpp.
00387 { 00388 VisitorReturn *v; 00389 return v; 00390 } |
|
Implements Visitor. Definition at line 392 of file ccodegeneratorvisitor.cpp.
00392 { 00393 VisitorReturn *v; 00394 return v; 00395 } |
|
Implements Visitor. Definition at line 397 of file ccodegeneratorvisitor.cpp.
00397 { 00398 VisitorReturn *v; 00399 return v; 00400 } |
|
Implements Visitor. Definition at line 402 of file ccodegeneratorvisitor.cpp.
00402 { 00403 VisitorReturn *v; 00404 00405 return v; 00406 } |
|
Implements Visitor. Definition at line 408 of file ccodegeneratorvisitor.cpp.
00408 { 00409 VisitorReturn *v; 00410 return v; 00411 } |
|
Implements Visitor. Definition at line 413 of file ccodegeneratorvisitor.cpp.
00413 { 00414 VisitorReturn *v = new VisitorReturn; 00415 v->fields.push_back(simpleFieldDeclaration); 00416 00417 Expression *expr = simpleFieldDeclaration->getFieldType()->getExpression(); 00418 00419 hFile << "\t"; 00420 if (typeid(*expr) == typeid(IntegerLiteral)) { 00421 if (simpleFieldDeclaration->getFieldType()->getType() == FieldType::BYTE) 00422 hFile << "byte *"; 00423 00424 else if (simpleFieldDeclaration->getFieldType()->getType() == FieldType::BIT) { 00425 IntegerLiteral *il = dynamic_cast<IntegerLiteral*> (expr); 00426 00427 if (il->getValue() <= 8) 00428 hFile << "byte "; 00429 else if (il->getValue() <= 16) 00430 hFile << "uint16_t "; 00431 else if (il->getValue() <= 32) 00432 hFile << "uint32_t "; 00433 } 00434 } 00435 else if (typeid(*expr) == typeid(Identifier)) 00436 hFile << "byte *"; 00437 00438 hFile << simpleFieldDeclaration->getIdentifier()->getName() << ";\n"; 00439 00440 return v; 00441 } |
|
Implements Visitor. Definition at line 443 of file ccodegeneratorvisitor.cpp.
00443 { 00444 VisitorReturn *v; 00445 return v; 00446 } |
|
Implements Visitor. Definition at line 448 of file ccodegeneratorvisitor.cpp.
00448 { 00449 VisitorReturn *v; 00450 return v; 00451 } |
|
Implements Visitor. Definition at line 453 of file ccodegeneratorvisitor.cpp.
00453 { 00454 VisitorReturn *v; 00455 return v; 00456 } |
|
Implements Visitor. Definition at line 458 of file ccodegeneratorvisitor.cpp.
00458 { 00459 VisitorReturn *v; 00460 return v; 00461 } |
|
Implements Visitor. Definition at line 463 of file ccodegeneratorvisitor.cpp.
00463 { 00464 VisitorReturn *v; 00465 static int code = 1; 00466 string name = simpleMessage->getIdentifier()->getName(); 00467 00468 // Generate correct header for the messages.c file! 00469 hFile << "typedef struct {\n"; 00470 v = simpleMessage->getFieldDeclaration()->visit(*this); 00471 hFile << "} message_" << name << ";\n\n"; 00472 00473 hFile << "byte *message_" << name << "_serialize(const message_" << name; 00474 hFile << " *msg_" << name << ", byte *buffer);\n"; 00475 00476 hFile << "message_" << name << " *message_" << name << "_unserialize("; 00477 hFile << "const byte *buffer, message_" << name << " *msg_" << name << ");\n\n"; 00478 00479 00480 // Generate the implementation for the prototypes declared in message.h! 00481 // Serialize the struct 00482 cFile << "byte *message_" << name << "_serialize(const message_" << name; 00483 cFile << " *msg_" << name << ", byte *buffer) {\n"; 00484 00485 cFile << "\tuint16_t code = htons(" << code << ");\n"; 00486 cFile << "\tuint32_t offset = 0;\n"; 00487 cFile << "\tuint16_t temp16 = 0;\n"; 00488 cFile << "\tuint32_t temp32 = 0;\n"; 00489 cFile << "\tbyte *buf;\n\n"; 00490 cFile << "\tbuf = (byte *) malloc(("; 00491 00492 // Allocate the correct size for the buffer 00493 for (vector<SimpleFieldDeclaration*>::iterator itr = v->fields.begin(); 00494 itr != v->fields.end(); 00495 itr++) { 00496 if (itr != v->fields.begin()) 00497 cFile << " + "; 00498 00499 Expression *expr = (*itr)->getFieldType()->getExpression(); 00500 00501 if (typeid(*expr) == typeid(IntegerLiteral)) { 00502 IntegerLiteral *il = dynamic_cast<IntegerLiteral*> (expr); 00503 00504 if ((*itr)->getFieldType()->getType() == FieldType::BYTE) 00505 cFile << il->getValue(); 00506 00507 else if ((*itr)->getFieldType()->getType() == FieldType::BIT) { 00508 00509 if (il->getValue() <= 8) 00510 cFile << "1"; 00511 else if (il->getValue() <= 16) 00512 cFile << "2"; 00513 else if (il->getValue() <= 32) 00514 cFile << "4"; 00515 } 00516 } 00517 else if (typeid(*expr) == typeid(Identifier)) 00518 cFile << "msg_" << name << "->" << (dynamic_cast<Identifier*> (expr))->getName(); 00519 } 00520 cFile << ") * sizeof(byte));\n\n"; 00521 cFile << "\tmemcpy(buf, &code, 2);\n"; 00522 cFile << "\toffset = 2;\n\n"; 00523 00524 for (vector<SimpleFieldDeclaration*>::iterator itr = v->fields.begin(); 00525 itr != v->fields.end(); 00526 itr++) { 00527 Expression *expr = (*itr)->getFieldType()->getExpression(); 00528 00529 if (typeid(*expr) == typeid(IntegerLiteral)) { 00530 IntegerLiteral *il = dynamic_cast<IntegerLiteral*> (expr); 00531 00532 if ((*itr)->getFieldType()->getType() == FieldType::BYTE) { 00533 cFile << "\tmemcpy((buf + offset), "; 00534 cFile << "msg_" << name << "->" << (*itr)->getIdentifier()->getName(); 00535 cFile << ", " << il->getValue() << ");\n"; 00536 cFile << "\toffset += " << il->getValue() << ";\n\n"; 00537 } 00538 00539 else if ((*itr)->getFieldType()->getType() == FieldType::BIT) { 00540 if (il->getValue() > 8 && il->getValue() <= 16) { 00541 cFile << "\ttemp16 = htons(msg_" << name << "->" << (*itr)->getIdentifier()->getName(); 00542 cFile << ");\n"; 00543 } 00544 00545 else if (il->getValue() > 16 && il->getValue() <= 32) { 00546 cFile << "\ttemp32 = htonl(msg_" << name << "->" << (*itr)->getIdentifier()->getName(); 00547 cFile << ");\n"; 00548 } 00549 00550 cFile << "\tmemcpy((buf + offset), "; 00551 00552 if (il->getValue() <= 8) { 00553 cFile << "&(msg_" << name << "->" << (*itr)->getIdentifier()->getName() << "), "; 00554 cFile << "1);\n\toffset += 1;\n\n"; 00555 } 00556 else if (il->getValue() <= 16) 00557 cFile << "&temp16, 2);\n\toffset += 2;\n\n"; 00558 else if (il->getValue() <= 32) 00559 cFile << "&temp32, 4);\n\toffset += 4;\n\n"; 00560 } 00561 } 00562 else if (typeid(*expr) == typeid(Identifier)) { 00563 cFile << "\tmemcpy((buf + offset), "; 00564 cFile << "msg_" << name << "->" << (*itr)->getIdentifier()->getName() << ", "; 00565 cFile << "msg_" << name << "->" << (dynamic_cast<Identifier*> (expr))->getName() << ");\n"; 00566 cFile << "\toffset += msg_" << name << "->"; 00567 cFile << (dynamic_cast<Identifier*> (expr))->getName() << ";\n\n"; 00568 } 00569 } 00570 cFile << "\tif (buffer != NULL) {\n"; 00571 cFile << "\t\tmemmove(buffer, buf, offset);\n"; 00572 cFile << "\t\tfree(buf);\n\t\tbuf = NULL;\n\t}\n\n"; 00573 cFile << "\treturn buf;\n}\n\n"; 00574 00575 00576 // Unserialize the buffer 00577 cFile << "message_" << name << " *message_" << name << "_unserialize("; 00578 cFile << "const byte *buffer, message_" << name << " *msg_" << name << ") {\n"; 00579 00580 cFile << "\tmessage_" << name << " *msg = (message_" << name << " *) "; 00581 cFile << "malloc(sizeof(message_" << name << "));\n"; 00582 cFile << "\tuint32_t offset = 2;\n\n"; 00583 00584 for (vector<SimpleFieldDeclaration*>::iterator itr = v->fields.begin(); 00585 itr != v->fields.end(); 00586 itr++) { 00587 Expression *expr = (*itr)->getFieldType()->getExpression(); 00588 00589 if (typeid(*expr) == typeid(IntegerLiteral)) { 00590 IntegerLiteral *il = dynamic_cast<IntegerLiteral*> (expr); 00591 00592 if ((*itr)->getFieldType()->getType() == FieldType::BYTE) { 00593 cFile << "\tmemcpy(msg_" << name << "->" << (*itr)->getIdentifier()->getName(); 00594 cFile << ", (buffer + offset), " << il->getValue() << ");\n"; 00595 cFile << "\toffset += " << il->getValue() << ";\n\n"; 00596 } 00597 00598 else if ((*itr)->getFieldType()->getType() == FieldType::BIT) { 00599 cFile << "\tmemcpy(&(msg_" << name << "->" << (*itr)->getIdentifier()->getName(); 00600 cFile << "), (buffer + offset), "; 00601 00602 if (il->getValue() <= 8) 00603 cFile << "1);\n\toffset += 1;\n\n"; 00604 else if (il->getValue() <= 16) { 00605 cFile << "2);\n\toffset += 2;\n"; 00606 cFile << "\tmsg_" << name << "->" << (*itr)->getIdentifier()->getName() << " = "; 00607 cFile << "ntohs(msg_" << name << "->" << (*itr)->getIdentifier()->getName() << ");\n\n"; 00608 } 00609 else if (il->getValue() <= 32) { 00610 cFile << "4);\n\toffset += 4;\n"; 00611 cFile << "\tmsg_" << name << "->" << (*itr)->getIdentifier()->getName() << " = "; 00612 cFile << "ntohl(msg_" << name << "->" << (*itr)->getIdentifier()->getName() << ");\n\n"; 00613 } 00614 } 00615 } 00616 else if (typeid(*expr) == typeid(Identifier)) { 00617 cFile << "\tmemcpy(msg_" << name << "->" << (*itr)->getIdentifier()->getName(); 00618 cFile << ", (buffer + offset), "; 00619 cFile << "msg_" << name << "->" << (dynamic_cast<Identifier*> (expr))->getName() << ");\n"; 00620 cFile << "\toffset += msg_" << name << "->"; 00621 cFile << (dynamic_cast<Identifier*> (expr))->getName() << ";\n\n"; 00622 } 00623 } 00624 00625 cFile << "\tif (msg_" << name << " != NULL) {\n"; 00626 cFile << "\t\tmemmove(msg_" << name << ", msg, offset);\n"; 00627 cFile << "\t\tfree(msg);\n\t\tmsg = NULL;\n\t}\n\n"; 00628 cFile << "\treturn msg;\n}\n\n"; 00629 00630 // Increment the code for the next message 00631 code++; 00632 00633 return v; 00634 } |
|
Implements Visitor. Definition at line 636 of file ccodegeneratorvisitor.cpp.
00636 { 00637 VisitorReturn *v = new VisitorReturn(); 00638 string name = simpleProcess->getIdentifier()->getName(); 00639 00640 hFile << "typedef struct {\n"; 00641 hFile << "\tthreadData data;\n"; 00642 simpleProcess->getDeclaration()->visit(*this); 00643 hFile << "} processData;\n\n"; 00644 00645 hFile << "processData " << name << "_proc;\n"; 00646 hFile << "processData " << name << "_recp;\n\n"; 00647 00648 hFile << "void *proc_" << name << "(void *args);\n"; 00649 hFile << "void *recp_" << name << "(void *args);\n\n"; 00650 00651 00652 return v; 00653 } |
|
Implements Visitor. Definition at line 655 of file ccodegeneratorvisitor.cpp.
00655 { 00656 VisitorReturn *v; 00657 return v; 00658 } |
|
Implements Visitor. Definition at line 660 of file ccodegeneratorvisitor.cpp.
00660 { 00661 VisitorReturn *v; 00662 return v; 00663 } |
|
Implements Visitor. Definition at line 665 of file ccodegeneratorvisitor.cpp.
00665 { 00666 VisitorReturn *v; 00667 return v; 00668 } |
|
Implements Visitor. Definition at line 670 of file ccodegeneratorvisitor.cpp.
00670 { 00671 VisitorReturn *v; 00672 return v; 00673 } |
|
Implements Visitor. Definition at line 675 of file ccodegeneratorvisitor.cpp.
00675 { 00676 VisitorReturn *v; 00677 return v; 00678 } |
|
Implements Visitor. Definition at line 680 of file ccodegeneratorvisitor.cpp.
00680 { 00681 VisitorReturn *v; 00682 return v; 00683 } |
|
Implements Visitor. Definition at line 685 of file ccodegeneratorvisitor.cpp.
00685 { 00686 VisitorReturn *v; 00687 return v; 00688 } |
|
Implements Visitor. Definition at line 690 of file ccodegeneratorvisitor.cpp.
00690 { 00691 VisitorReturn *v; 00692 return v; 00693 } |
|
messageC e messageH devem ser mudados! Definition at line 15 of file ccodegeneratorvisitor.h. Referenced by visitProgram(). |
|
Definition at line 16 of file ccodegeneratorvisitor.h. Referenced by visitProgram(). |