#include <javacodegeneratorvisitor.h>
Inheritance diagram for JavaCodeGeneratorVisitor:
|
Definition at line 4 of file javacodegeneratorvisitor.cpp.
|
|
Definition at line 18 of file javacodegeneratorvisitor.h.
00018 {} |
|
Implements Visitor. Definition at line 7 of file javacodegeneratorvisitor.cpp.
00007 { 00008 VisitorReturn *v; 00009 return v; 00010 } |
|
Implements Visitor. Definition at line 12 of file javacodegeneratorvisitor.cpp.
00012 { 00013 VisitorReturn *v; 00014 return v; 00015 } |
|
Implements Visitor. Definition at line 17 of file javacodegeneratorvisitor.cpp.
00017 { 00018 VisitorReturn *v; 00019 return v; 00020 } |
|
Implements Visitor. Definition at line 22 of file javacodegeneratorvisitor.cpp.
00022 { 00023 VisitorReturn *v; 00024 return v; 00025 } |
|
Implements Visitor. Definition at line 27 of file javacodegeneratorvisitor.cpp.
00027 { 00028 VisitorReturn *v; 00029 return v; 00030 } |
|
Implements Visitor. Definition at line 32 of file javacodegeneratorvisitor.cpp.
00032 { 00033 VisitorReturn *v; 00034 return v; 00035 } |
|
Implements Visitor. Definition at line 37 of file javacodegeneratorvisitor.cpp.
00037 { 00038 VisitorReturn *v; 00039 return v; 00040 } |
|
Implements Visitor. Definition at line 42 of file javacodegeneratorvisitor.cpp.
00042 { 00043 VisitorReturn *v; 00044 return v; 00045 } |
|
Implements Visitor. Definition at line 47 of file javacodegeneratorvisitor.cpp.
00047 { 00048 VisitorReturn *v; 00049 return v; 00050 } |
|
Implements Visitor. Definition at line 52 of file javacodegeneratorvisitor.cpp.
00052 { 00053 VisitorReturn *v; 00054 return v; 00055 } |
|
Implements Visitor. Definition at line 57 of file javacodegeneratorvisitor.cpp.
00057 { 00058 VisitorReturn *v; 00059 return v; 00060 } |
|
Implements Visitor. Definition at line 62 of file javacodegeneratorvisitor.cpp.
00062 { 00063 VisitorReturn *v; 00064 return v; 00065 } |
|
Implements Visitor. Definition at line 67 of file javacodegeneratorvisitor.cpp.
00067 { 00068 VisitorReturn *v; 00069 return v; 00070 } |
|
Implements Visitor. Definition at line 72 of file javacodegeneratorvisitor.cpp.
00072 { 00073 VisitorReturn *v; 00074 return v; 00075 } |
|
Implements Visitor. Definition at line 77 of file javacodegeneratorvisitor.cpp.
00077 { 00078 VisitorReturn *v; 00079 return v; 00080 } |
|
Implements Visitor. Definition at line 82 of file javacodegeneratorvisitor.cpp.
00082 { 00083 VisitorReturn *v; 00084 return v; 00085 } |
|
Implements Visitor. Definition at line 87 of file javacodegeneratorvisitor.cpp.
00087 { 00088 VisitorReturn *v; 00089 return v; 00090 } |
|
Implements Visitor. Definition at line 92 of file javacodegeneratorvisitor.cpp.
00092 { 00093 VisitorReturn *v; 00094 return v; 00095 } |
|
Implements Visitor. Definition at line 97 of file javacodegeneratorvisitor.cpp.
00097 { 00098 VisitorReturn *v; 00099 return v; 00100 } |
|
Implements Visitor. Definition at line 102 of file javacodegeneratorvisitor.cpp.
00102 { 00103 VisitorReturn *v; 00104 return v; 00105 } |
|
Implements Visitor. Definition at line 107 of file javacodegeneratorvisitor.cpp.
00107 { 00108 VisitorReturn *v; 00109 return v; 00110 } |
|
Implements Visitor. Definition at line 112 of file javacodegeneratorvisitor.cpp.
00112 { 00113 VisitorReturn *v; 00114 return v; 00115 } |
|
Implements Visitor. Definition at line 117 of file javacodegeneratorvisitor.cpp.
00117 { 00118 VisitorReturn *v; 00119 return v; 00120 } |
|
Implements Visitor. Definition at line 122 of file javacodegeneratorvisitor.cpp.
00122 { 00123 VisitorReturn *v; 00124 return v; 00125 } |
|
Implements Visitor. Definition at line 127 of file javacodegeneratorvisitor.cpp.
00127 { 00128 VisitorReturn *v; 00129 return v; 00130 } |
|
Implements Visitor. Definition at line 132 of file javacodegeneratorvisitor.cpp.
00132 { 00133 VisitorReturn *v; 00134 return v; 00135 } |
|
Implements Visitor. Definition at line 137 of file javacodegeneratorvisitor.cpp.
00137 { 00138 VisitorReturn *v; 00139 return v; 00140 } |
|
Implements Visitor. Definition at line 142 of file javacodegeneratorvisitor.cpp.
00142 { 00143 VisitorReturn *v; 00144 return v; 00145 } |
|
Implements Visitor. Definition at line 147 of file javacodegeneratorvisitor.cpp.
00147 { 00148 VisitorReturn *v; 00149 return v; 00150 } |
|
Implements Visitor. Definition at line 152 of file javacodegeneratorvisitor.cpp.
00152 { 00153 VisitorReturn *v; 00154 return v; 00155 } |
|
Implements Visitor. Definition at line 157 of file javacodegeneratorvisitor.cpp.
00157 { 00158 VisitorReturn *v; 00159 return v; 00160 } |
|
Implements Visitor. Definition at line 162 of file javacodegeneratorvisitor.cpp. References Program::getMessage(), output, and Ast::visit().
00162 { 00163 VisitorReturn *v; 00164 output << "import java.io.*;\nimport java.net.*;\n\n\n"; 00165 program->getMessage()->visit(*this); 00166 output.close(); 00167 return v; 00168 } |
|
Implements Visitor. Definition at line 170 of file javacodegeneratorvisitor.cpp.
00170 { 00171 VisitorReturn *v; 00172 return v; 00173 } |
|
Implements Visitor. Definition at line 175 of file javacodegeneratorvisitor.cpp.
00175 { 00176 VisitorReturn *v; 00177 return v; 00178 } |
|
Implements Visitor. Definition at line 180 of file javacodegeneratorvisitor.cpp.
00180 { 00181 VisitorReturn *v; 00182 return v; 00183 } |
|
Implements Visitor. Definition at line 185 of file javacodegeneratorvisitor.cpp.
00185 { 00186 VisitorReturn *v; 00187 return v; 00188 } |
|
Implements Visitor. Definition at line 190 of file javacodegeneratorvisitor.cpp.
00190 { 00191 VisitorReturn *v; 00192 return v; 00193 } |
|
Implements Visitor. Definition at line 195 of file javacodegeneratorvisitor.cpp.
00195 { 00196 VisitorReturn *v; 00197 return v; 00198 } |
|
Implements Visitor. Definition at line 200 of file javacodegeneratorvisitor.cpp.
00200 { 00201 VisitorReturn *v; 00202 return v; 00203 } |
|
Implements Visitor. Definition at line 205 of file javacodegeneratorvisitor.cpp. References SequentialFieldDeclaration::getFieldDeclaration(), SequentialFieldDeclaration::getSimpleFieldDeclaration(), SimpleFieldDeclaration::visit(), and Ast::visit().
00205 { 00206 VisitorReturn *v; 00207 sequentialFieldDeclaration->getFieldDeclaration()->visit(*this); 00208 sequentialFieldDeclaration->getSimpleFieldDeclaration()->visit(*this); 00209 return v; 00210 } |
|
Implements Visitor. Definition at line 212 of file javacodegeneratorvisitor.cpp.
00212 { 00213 VisitorReturn *v; 00214 return v; 00215 } |
|
Implements Visitor. Definition at line 217 of file javacodegeneratorvisitor.cpp.
00217 { 00218 VisitorReturn *v; 00219 return v; 00220 } |
|
Implements Visitor. Definition at line 222 of file javacodegeneratorvisitor.cpp.
00222 { 00223 VisitorReturn *v; 00224 return v; 00225 } |
|
Implements Visitor. Definition at line 227 of file javacodegeneratorvisitor.cpp.
00227 { 00228 VisitorReturn *v; 00229 return v; 00230 } |
|
Implements Visitor. Definition at line 232 of file javacodegeneratorvisitor.cpp. References SequentialMessage::getMessage(), SequentialMessage::getSimpleMessage(), SimpleMessage::visit(), and Ast::visit().
00232 { 00233 VisitorReturn *v; 00234 sequentialMessage->getMessage()->visit(*this); 00235 sequentialMessage->getSimpleMessage()->visit(*this); 00236 return v; 00237 } |
|
Implements Visitor. Definition at line 239 of file javacodegeneratorvisitor.cpp.
00239 { 00240 VisitorReturn *v; 00241 return v; 00242 } |
|
Implements Visitor. Definition at line 244 of file javacodegeneratorvisitor.cpp.
00244 { 00245 VisitorReturn *v; 00246 return v; 00247 } |
|
Implements Visitor. Definition at line 249 of file javacodegeneratorvisitor.cpp.
00249 { 00250 VisitorReturn *v; 00251 return v; 00252 } |
|
Implements Visitor. Definition at line 254 of file javacodegeneratorvisitor.cpp.
00254 { 00255 VisitorReturn *v; 00256 return v; 00257 } |
|
Implements Visitor. Definition at line 259 of file javacodegeneratorvisitor.cpp.
00259 { 00260 VisitorReturn *v; 00261 return v; 00262 } |
|
Implements Visitor. Definition at line 264 of file javacodegeneratorvisitor.cpp.
00264 { 00265 VisitorReturn *v; 00266 return v; 00267 } |
|
Implements Visitor. Definition at line 269 of file javacodegeneratorvisitor.cpp.
00269 { 00270 VisitorReturn *v; 00271 return v; 00272 } |
|
Set from a unicode string Falta fazer!! Method set Method Get Implements Visitor. Definition at line 274 of file javacodegeneratorvisitor.cpp. References FieldType::BYTE, FieldType::getExpression(), SimpleFieldDeclaration::getFieldType(), SimpleFieldDeclaration::getIdentifier(), Identifier::getName(), FieldType::getType(), output, and stack.
00274 { 00275 VisitorReturn *v; 00276 string name = simpleFieldDeclaration->getIdentifier()->getName(); 00277 string type; 00278 00279 this->stack.push_back(simpleFieldDeclaration); 00280 00281 if(simpleFieldDeclaration->getFieldType()->getType() == FieldType::BYTE) { 00282 type = "byte[]"; 00283 } else { 00284 int value = ((IntegerLiteral*)simpleFieldDeclaration->getFieldType()->getExpression())->getValue(); 00285 if(value <= 8) { 00286 type = "byte"; 00287 } else if(value <= 16) { 00288 type = "short"; 00289 } else { 00290 type = "int"; 00291 } 00292 } 00293 output << "\tprivate " << type << " " << name << ";\n\n"; 00294 00299 if(type == "byte[]") { 00300 output << "\tpublic void set" << name << "(String " << name << ") {\n"; 00301 output << "\t}\n\n"; 00302 } 00303 00307 output << "\tpublic void set" << name << "(" << type << " " << name << ") {\n"; 00308 output << "\t\tthis." << name << " = " << name << ";\n\t}\n\n"; 00309 00313 output << "\tpublic " << type << " get" << name << "() {\n\t\treturn this." << name << ";\n\t}\n\n"; 00314 00315 return v; 00316 } |
|
Implements Visitor. Definition at line 318 of file javacodegeneratorvisitor.cpp.
00318 { 00319 VisitorReturn *v; 00320 return v; 00321 } |
|
Implements Visitor. Definition at line 323 of file javacodegeneratorvisitor.cpp.
00323 { 00324 VisitorReturn *v; 00325 return v; 00326 } |
|
Implements Visitor. Definition at line 328 of file javacodegeneratorvisitor.cpp.
00328 { 00329 VisitorReturn *v; 00330 return v; 00331 } |
|
Implements Visitor. Definition at line 333 of file javacodegeneratorvisitor.cpp.
00333 { 00334 VisitorReturn *v; 00335 return v; 00336 } |
|
Serialize... Unserialize HandleOut HandleIn Implements Visitor. Definition at line 338 of file javacodegeneratorvisitor.cpp. References FieldType::BYTE, FieldType::getExpression(), SimpleMessage::getFieldDeclaration(), SimpleFieldDeclaration::getFieldType(), SimpleMessage::getHandlerIn(), SimpleMessage::getHandlerOut(), SimpleFieldDeclaration::getIdentifier(), SimpleMessage::getIdentifier(), Identifier::getName(), FieldType::getType(), msgCode, output, stack, and Ast::visit().
00338 { 00339 VisitorReturn *v; 00340 this->msgCode++; 00341 00342 output << "\n class Message" << simpleMessage->getIdentifier()->getName() << 00343 " {\n"; 00344 output << "\tpublic static final short CODE = " << this->msgCode << ";\n"; 00345 this->stack.clear(); 00346 simpleMessage->getFieldDeclaration()->visit(*this); 00347 00348 string linha1 = "\t\t\tdataOS.writeShort(CODE);\n"; 00349 string linha2 = "\t\t\tdataIS.readShort();\n"; 00350 int size = 2; 00351 string campoByte; 00352 for(vector<Ast*>::iterator i = this->stack.begin(); i != this->stack.end(); i++) { 00353 SimpleFieldDeclaration& fdecl = dynamic_cast<SimpleFieldDeclaration&>(**i); 00354 string name = fdecl.getIdentifier()->getName(); 00355 linha1 += "\t\t\tdataOS.write"; 00356 00357 if(fdecl.getFieldType()->getType() == FieldType::BYTE) { 00358 linha1 += "(this." + name + ", 0, this." + name + ".length);\n"; 00359 linha2 += "\t\t\tdataIS.readFully(this." + name + ");\n"; 00360 campoByte += " + this." + name + ".length"; 00361 } else { 00362 int value = ((IntegerLiteral*)fdecl.getFieldType()->getExpression())->getValue(); 00363 linha2 += "\t\t\tthis." + name + " = dataIS.read"; 00364 if(value <= 8) { 00365 linha1 += "Byte(this." + name + ");\n"; 00366 linha2 += "Byte();\n"; 00367 size += 1; 00368 } else if(value <= 16) { 00369 linha1 += "Short(this." + name + ");\n"; 00370 linha2 += "Short();\n"; 00371 size += 2; 00372 } else { 00373 linha1 += "Int(this." + name + ");\n"; 00374 linha2 += "Int();\n"; 00375 size += 4; 00376 } 00377 } 00378 00379 } 00380 00384 output << "\tpublic byte[] serialize() {\n"; 00385 output << "\t\tByteArrayOutputStream byteOS = null;\n"; 00386 output << "\t\tDataOutputStream dataOS = null;\n\t\thandleOut();\n\t\ttry{\n"; 00387 output << "\t\t\tbyteOS = new ByteArrayOutputStream();\n\t\t\tdataOS = new DataOutputStream(byteOS);\n\n"; 00388 output << linha1; 00389 output << "\t\t\t\n"; 00390 output << "\t\t} catch(Exception e) {e.printStackTrace();}\n"; 00391 output << "\t\treturn byteOS.toByteArray();\n"; 00392 output << "\t}\n\n"; 00393 00397 output << "\tpublic void unserialize(byte[] array) {\n"; 00398 output << "\t\tByteArrayInputStream byteIS = null;\n"; 00399 output << "\t\tDataInputStream dataIS = null;\n\t\ttry{\n"; 00400 output << "\t\t\tbyteIS = new ByteArrayInputStream(array);\n\t\t\tdataIS = new DataInputStream(byteIS);\n\n"; 00401 output << linha2; 00402 output << "\t\t\t\n"; 00403 output << "\t\t} catch(Exception e) {e.printStackTrace();}\n"; 00404 output << "\t\thandleIn();\n"; 00405 output << "\t}\n\n"; 00406 00407 00411 string call; 00412 if(simpleMessage->getHandlerOut()) { 00413 call = simpleMessage->getHandlerOut()->getName() + "();\n\t}\n\n"; 00414 } else { 00415 call = "\n\t}\n\n"; 00416 } 00417 output << "\tprivate void handleOut() {\n\t\t" << call; 00418 00422 if(simpleMessage->getHandlerIn()) { 00423 call = simpleMessage->getHandlerIn()->getName() + "();\n\t}\n\n"; 00424 } else { 00425 call = "\n\t}\n\n"; 00426 } 00427 output << "\tprivate void handleIn() {\n\t\t" << call; 00428 00429 output << "\tpublic int getSize() {\n\t\treturn " << size << campoByte << ";\n\t}\n"; 00430 00431 00432 output << "}\n"; 00433 00434 if(this->msgCode == 1) { 00435 string one = simpleMessage->getIdentifier()->getName(); 00436 output << "\nclass Process {\n" << 00437 "\tpublic void processClient() {\n" << 00438 "\t\ttry {\n" << 00439 "\t\t\tMessage" << one << " m = new Message" << one << "();\n" << 00440 "\t\t\tSocket s = new Socket(\"127.0.0.1\", 100);\n" << 00441 "\t\t\tbyte[] msg = m.serialize();\n\n" << 00442 "\t\t\ts.getOutputStream().write(msg, 0, msg.length);\n" << 00443 "\t\t\ts.close();\n" << 00444 "\t\t} catch(Exception e){e.printStackTrace();}\n" << 00445 "\t}\n\n" << 00446 "\tpublic void processServer() {\n" << 00447 "\t\ttry {\n" << 00448 "\t\tMessage" << one << " m = new Message" << one << "();\n" << 00449 "\t\tServerSocket s = new ServerSocket(100);\n" << 00450 "\t\tSocket c = s.accept();\n" << 00451 "\t\tbyte[] code = new byte[256];\n" << 00452 "\t\tc.getInputStream().read(code, 0, 2);\n" << 00453 "\t\tif(code[1] == m.CODE){\n" << 00454 "\t\tc.getInputStream().read(code, 2, m.getSize() - 2);\n" << 00455 "\t}\n" << 00456 "\tm.unserialize(code);" << 00457 "\t} catch(Exception e){e.printStackTrace();}" << 00458 "}\n\n}\n"; 00459 } 00460 00461 return v; 00462 } |
|
Implements Visitor. Definition at line 464 of file javacodegeneratorvisitor.cpp.
00464 { 00465 VisitorReturn *v; 00466 return v; 00467 } |
|
Implements Visitor. Definition at line 469 of file javacodegeneratorvisitor.cpp.
00469 { 00470 VisitorReturn *v; 00471 return v; 00472 } |
|
Implements Visitor. Definition at line 474 of file javacodegeneratorvisitor.cpp.
00474 { 00475 VisitorReturn *v; 00476 return v; 00477 } |
|
Implements Visitor. Definition at line 479 of file javacodegeneratorvisitor.cpp.
00479 { 00480 VisitorReturn *v; 00481 return v; 00482 } |
|
Implements Visitor. Definition at line 484 of file javacodegeneratorvisitor.cpp.
00484 { 00485 VisitorReturn *v; 00486 return v; 00487 } |
|
Implements Visitor. Definition at line 489 of file javacodegeneratorvisitor.cpp.
00489 { 00490 VisitorReturn *v; 00491 return v; 00492 } |
|
Implements Visitor. Definition at line 494 of file javacodegeneratorvisitor.cpp.
00494 { 00495 VisitorReturn *v; 00496 return v; 00497 } |
|
Implements Visitor. Definition at line 499 of file javacodegeneratorvisitor.cpp.
00499 { 00500 VisitorReturn *v; 00501 return v; 00502 } |
|
Implements Visitor. Definition at line 504 of file javacodegeneratorvisitor.cpp.
00504 { 00505 VisitorReturn *v; 00506 return v; 00507 } |
|
Definition at line 12 of file javacodegeneratorvisitor.h. Referenced by visitSimpleMessage(). |
|
Definition at line 13 of file javacodegeneratorvisitor.h. Referenced by visitProgram(), visitSimpleFieldDeclaration(), and visitSimpleMessage(). |
|
Definition at line 14 of file javacodegeneratorvisitor.h. Referenced by visitSimpleFieldDeclaration(), and visitSimpleMessage(). |