Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

JavaCodeGeneratorVisitor Class Reference

#include <javacodegeneratorvisitor.h>

Inheritance diagram for JavaCodeGeneratorVisitor:

Inheritance graph
[legend]
Collaboration diagram for JavaCodeGeneratorVisitor:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 JavaCodeGeneratorVisitor (const char *name)
virtual ~JavaCodeGeneratorVisitor ()
VisitorReturnvisitAction (Action *action)
VisitorReturnvisitActStatement (ActStatement *actStatement)
VisitorReturnvisitArrayReference (ArrayReference *arrayReference)
VisitorReturnvisitArrayType (ArrayType *arrayType)
VisitorReturnvisitAssignStatement (AssignStatement *assignStatement)
VisitorReturnvisitAst (Ast *ast)
VisitorReturnvisitBehavior (Behavior *behavior)
VisitorReturnvisitBehaviorStatement (BehaviorStatement *behaviorStatement)
VisitorReturnvisitBinaryExpression (BinaryExpression *binaryExpression)
VisitorReturnvisitDeclaration (Declaration *declaration)
VisitorReturnvisitDoStatement (DoStatement *doStatement)
VisitorReturnvisitExpression (Expression *expression)
VisitorReturnvisitExpressionList (ExpressionList *expressionList)
VisitorReturnvisitFieldDeclaration (FieldDeclaration *fieldDeclaration)
VisitorReturnvisitFieldReference (FieldReference *fieldReference)
VisitorReturnvisitFieldType (FieldType *fieldType)
VisitorReturnvisitGuard (Guard *guard)
VisitorReturnvisitGuardedStatement (GuardedStatement *guardedStatement)
VisitorReturnvisitGuardExpression (GuardExpression *guardExpression)
VisitorReturnvisitGuardReceive (GuardReceive *guardReceive)
VisitorReturnvisitGuardTimeout (GuardTimeout *guardTimeout)
VisitorReturnvisitIdentifier (Identifier *identifier)
VisitorReturnvisitIdentifierList (IdentifierList *identifierList)
VisitorReturnvisitIfStatement (IfStatement *ifStatement)
VisitorReturnvisitImport (Import *import)
VisitorReturnvisitIntegerLiteral (IntegerLiteral *integerLiteral)
VisitorReturnvisitLeftSide (LeftSide *leftSide)
VisitorReturnvisitLeftSideList (LeftSideList *leftSideList)
VisitorReturnvisitMessage (Message *message)
VisitorReturnvisitMultipleArrayReference (MultipleArrayReference *multipleArrayReference)
VisitorReturnvisitProcess (Process *process)
VisitorReturnvisitProgram (Program *program)
VisitorReturnvisitRangeType (RangeType *rangeType)
VisitorReturnvisitReceiveStatement (ReceiveStatement *receiveStatement)
VisitorReturnvisitSendStatement (SendStatement *sendStatement)
VisitorReturnvisitSequentialAction (SequentialAction *sequentialAction)
VisitorReturnvisitSequentialBehavior (SequentialBehavior *sequentialBehavior)
VisitorReturnvisitSequentialDeclaration (SequentialDeclaration *sequentialDeclaration)
VisitorReturnvisitSequentialExpressionList (SequentialExpressionList *sequentialExpressionList)
VisitorReturnvisitSequentialFieldDeclaration (SequentialFieldDeclaration *sequentialFieldDeclaration)
VisitorReturnvisitSequentialGuardedStatement (SequentialGuardedStatement *sequentialGuardedStatement)
VisitorReturnvisitSequentialIdentifierList (SequentialIdentifierList *sequentialIdentifierList)
VisitorReturnvisitSequentialImport (SequentialImport *sequentialImport)
VisitorReturnvisitSequentialLeftSideList (SequentialLeftSideList *sequentialLeftSideList)
VisitorReturnvisitSequentialMessage (SequentialMessage *sequentialMessage)
VisitorReturnvisitSequentialProcess (SequentialProcess *sequentialProcess)
VisitorReturnvisitSequentialStatement (SequentialStatement *sequentialStatement)
VisitorReturnvisitSimpleAction (SimpleAction *simpleAction)
VisitorReturnvisitSimpleArrayReference (SimpleArrayReference *simpleArrayReference)
VisitorReturnvisitSimpleBehavior (SimpleBehavior *simpleBehavior)
VisitorReturnvisitSimpleDeclaration (SimpleDeclaration *simpleDeclaration)
VisitorReturnvisitSimpleExpressionList (SimpleExpressionList *simpleExpressionList)
VisitorReturnvisitSimpleFieldDeclaration (SimpleFieldDeclaration *simpleFieldDeclaration)
VisitorReturnvisitSimpleGuardedStatement (SimpleGuardedStatement *simpleGuardedStatement)
VisitorReturnvisitSimpleIdentifierList (SimpleIdentifierList *simpleIdentifierList)
VisitorReturnvisitSimpleImport (SimpleImport *simpleImport)
VisitorReturnvisitSimpleLeftSideList (SimpleLeftSideList *simpleLeftSideList)
VisitorReturnvisitSimpleMessage (SimpleMessage *simpleMessage)
VisitorReturnvisitSimpleProcess (SimpleProcess *simpleProcess)
VisitorReturnvisitSimpleStatement (SimpleStatement *simpleStatement)
VisitorReturnvisitSkipStatement (SkipStatement *skipStatement)
VisitorReturnvisitStartStatement (StartStatement *startStatement)
VisitorReturnvisitStatement (Statement *statement)
VisitorReturnvisitStopStatement (StopStatement *stopStatement)
VisitorReturnvisitStringLiteral (StringLiteral *stringLiteral)
VisitorReturnvisitType (Type *type)
VisitorReturnvisitUnaryExpression (UnaryExpression *unaryExpression)

Private Attributes

int msgCode
ofstream output
vector< Ast * > stack

Constructor & Destructor Documentation

JavaCodeGeneratorVisitor::JavaCodeGeneratorVisitor const char *  name  ) 
 

Definition at line 4 of file javacodegeneratorvisitor.cpp.

00004                                                                        : msgCode(0), output(filename) {
00005 }

virtual JavaCodeGeneratorVisitor::~JavaCodeGeneratorVisitor  )  [inline, virtual]
 

Definition at line 18 of file javacodegeneratorvisitor.h.

00018 {}


Member Function Documentation

VisitorReturn * JavaCodeGeneratorVisitor::visitAction Action action  )  [virtual]
 

Implements Visitor.

Definition at line 7 of file javacodegeneratorvisitor.cpp.

00007                                                                    {
00008         VisitorReturn *v;
00009         return v;
00010 }

VisitorReturn * JavaCodeGeneratorVisitor::visitActStatement ActStatement actStatement  )  [virtual]
 

Implements Visitor.

Definition at line 12 of file javacodegeneratorvisitor.cpp.

00012                                                                                      {
00013         VisitorReturn *v;
00014         return v;
00015 }

VisitorReturn * JavaCodeGeneratorVisitor::visitArrayReference ArrayReference arrayReference  )  [virtual]
 

Implements Visitor.

Definition at line 17 of file javacodegeneratorvisitor.cpp.

00017                                                                                            {
00018         VisitorReturn *v;
00019         return v;
00020 }

VisitorReturn * JavaCodeGeneratorVisitor::visitArrayType ArrayType arrayType  )  [virtual]
 

Implements Visitor.

Definition at line 22 of file javacodegeneratorvisitor.cpp.

00022                                                                             {
00023         VisitorReturn *v;
00024         return v;
00025 }

VisitorReturn * JavaCodeGeneratorVisitor::visitAssignStatement AssignStatement assignStatement  )  [virtual]
 

Implements Visitor.

Definition at line 27 of file javacodegeneratorvisitor.cpp.

00027                                                                                               {
00028         VisitorReturn *v;
00029         return v;
00030 }

VisitorReturn * JavaCodeGeneratorVisitor::visitAst Ast ast  )  [virtual]
 

Implements Visitor.

Definition at line 32 of file javacodegeneratorvisitor.cpp.

00032                                                           {
00033         VisitorReturn *v;
00034         return v;
00035 }

VisitorReturn * JavaCodeGeneratorVisitor::visitBehavior Behavior behavior  )  [virtual]
 

Implements Visitor.

Definition at line 37 of file javacodegeneratorvisitor.cpp.

00037                                                                          {
00038         VisitorReturn *v;
00039         return v;
00040 }

VisitorReturn * JavaCodeGeneratorVisitor::visitBehaviorStatement BehaviorStatement behaviorStatement  )  [virtual]
 

Implements Visitor.

Definition at line 42 of file javacodegeneratorvisitor.cpp.

00042                                                                                                     {
00043         VisitorReturn *v;
00044         return v;
00045 }

VisitorReturn * JavaCodeGeneratorVisitor::visitBinaryExpression BinaryExpression binaryExpression  )  [virtual]
 

Implements Visitor.

Definition at line 47 of file javacodegeneratorvisitor.cpp.

00047                                                                                                  {
00048         VisitorReturn *v;
00049         return v;
00050 }

VisitorReturn * JavaCodeGeneratorVisitor::visitDeclaration Declaration declaration  )  [virtual]
 

Implements Visitor.

Definition at line 52 of file javacodegeneratorvisitor.cpp.

00052                                                                                   {
00053         VisitorReturn *v;
00054         return v;
00055 }

VisitorReturn * JavaCodeGeneratorVisitor::visitDoStatement DoStatement doStatement  )  [virtual]
 

Implements Visitor.

Definition at line 57 of file javacodegeneratorvisitor.cpp.

00057                                                                                   {
00058         VisitorReturn *v;
00059         return v;
00060 }

VisitorReturn * JavaCodeGeneratorVisitor::visitExpression Expression expression  )  [virtual]
 

Implements Visitor.

Definition at line 62 of file javacodegeneratorvisitor.cpp.

00062                                                                                {
00063         VisitorReturn *v;
00064         return v;
00065 }

VisitorReturn * JavaCodeGeneratorVisitor::visitExpressionList ExpressionList expressionList  )  [virtual]
 

Implements Visitor.

Definition at line 67 of file javacodegeneratorvisitor.cpp.

00067                                                                                            {
00068         VisitorReturn *v;
00069         return v;
00070 }

VisitorReturn * JavaCodeGeneratorVisitor::visitFieldDeclaration FieldDeclaration fieldDeclaration  )  [virtual]
 

Implements Visitor.

Definition at line 72 of file javacodegeneratorvisitor.cpp.

00072                                                                                                  {
00073         VisitorReturn *v;
00074         return v;
00075 }

VisitorReturn * JavaCodeGeneratorVisitor::visitFieldReference FieldReference fieldReference  )  [virtual]
 

Implements Visitor.

Definition at line 77 of file javacodegeneratorvisitor.cpp.

00077                                                                                            {
00078         VisitorReturn *v;
00079         return v;
00080 }

VisitorReturn * JavaCodeGeneratorVisitor::visitFieldType FieldType fieldType  )  [virtual]
 

Implements Visitor.

Definition at line 82 of file javacodegeneratorvisitor.cpp.

00082                                                                             {
00083         VisitorReturn *v;
00084         return v;
00085 }

VisitorReturn * JavaCodeGeneratorVisitor::visitGuard Guard guard  )  [virtual]
 

Implements Visitor.

Definition at line 87 of file javacodegeneratorvisitor.cpp.

00087                                                                 {
00088         VisitorReturn *v;
00089         return v;
00090 }

VisitorReturn * JavaCodeGeneratorVisitor::visitGuardedStatement GuardedStatement guardedStatement  )  [virtual]
 

Implements Visitor.

Definition at line 92 of file javacodegeneratorvisitor.cpp.

00092                                                                                                  {
00093         VisitorReturn *v;
00094         return v;
00095 }

VisitorReturn * JavaCodeGeneratorVisitor::visitGuardExpression GuardExpression guardExpression  )  [virtual]
 

Implements Visitor.

Definition at line 97 of file javacodegeneratorvisitor.cpp.

00097                                                                                               {
00098         VisitorReturn *v;
00099         return v;
00100 }

VisitorReturn * JavaCodeGeneratorVisitor::visitGuardReceive GuardReceive guardReceive  )  [virtual]
 

Implements Visitor.

Definition at line 102 of file javacodegeneratorvisitor.cpp.

00102                                                                                      {
00103         VisitorReturn *v;
00104         return v;
00105 }

VisitorReturn * JavaCodeGeneratorVisitor::visitGuardTimeout GuardTimeout guardTimeout  )  [virtual]
 

Implements Visitor.

Definition at line 107 of file javacodegeneratorvisitor.cpp.

00107                                                                                      {
00108         VisitorReturn *v;
00109         return v;
00110 }

VisitorReturn * JavaCodeGeneratorVisitor::visitIdentifier Identifier identifier  )  [virtual]
 

Implements Visitor.

Definition at line 112 of file javacodegeneratorvisitor.cpp.

00112                                                                                {
00113         VisitorReturn *v;
00114         return v;
00115 }

VisitorReturn * JavaCodeGeneratorVisitor::visitIdentifierList IdentifierList identifierList  )  [virtual]
 

Implements Visitor.

Definition at line 117 of file javacodegeneratorvisitor.cpp.

00117                                                                                            {
00118         VisitorReturn *v;
00119         return v;
00120 }

VisitorReturn * JavaCodeGeneratorVisitor::visitIfStatement IfStatement ifStatement  )  [virtual]
 

Implements Visitor.

Definition at line 122 of file javacodegeneratorvisitor.cpp.

00122                                                                                   {
00123         VisitorReturn *v;
00124         return v;
00125 }

VisitorReturn * JavaCodeGeneratorVisitor::visitImport Import import  )  [virtual]
 

Implements Visitor.

Definition at line 127 of file javacodegeneratorvisitor.cpp.

00127                                                                    {
00128         VisitorReturn *v;
00129         return v;
00130 }

VisitorReturn * JavaCodeGeneratorVisitor::visitIntegerLiteral IntegerLiteral integerLiteral  )  [virtual]
 

Implements Visitor.

Definition at line 132 of file javacodegeneratorvisitor.cpp.

00132                                                                                            {
00133         VisitorReturn *v;
00134         return v;
00135 }

VisitorReturn * JavaCodeGeneratorVisitor::visitLeftSide LeftSide leftSide  )  [virtual]
 

Implements Visitor.

Definition at line 137 of file javacodegeneratorvisitor.cpp.

00137                                                                          {
00138         VisitorReturn *v;
00139         return v;
00140 }

VisitorReturn * JavaCodeGeneratorVisitor::visitLeftSideList LeftSideList leftSideList  )  [virtual]
 

Implements Visitor.

Definition at line 142 of file javacodegeneratorvisitor.cpp.

00142                                                                                      {
00143         VisitorReturn *v;
00144         return v;
00145 }

VisitorReturn * JavaCodeGeneratorVisitor::visitMessage Message message  )  [virtual]
 

Implements Visitor.

Definition at line 147 of file javacodegeneratorvisitor.cpp.

00147                                                                       {
00148         VisitorReturn *v;
00149         return v;
00150 }

VisitorReturn * JavaCodeGeneratorVisitor::visitMultipleArrayReference MultipleArrayReference multipleArrayReference  )  [virtual]
 

Implements Visitor.

Definition at line 152 of file javacodegeneratorvisitor.cpp.

00152                                                                                                                    {
00153         VisitorReturn *v;
00154         return v;
00155 }

VisitorReturn * JavaCodeGeneratorVisitor::visitProcess Process process  )  [virtual]
 

Implements Visitor.

Definition at line 157 of file javacodegeneratorvisitor.cpp.

00157                                                                       {
00158         VisitorReturn *v;
00159         return v;
00160 }

VisitorReturn * JavaCodeGeneratorVisitor::visitProgram Program program  )  [virtual]
 

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 }

VisitorReturn * JavaCodeGeneratorVisitor::visitRangeType RangeType rangeType  )  [virtual]
 

Implements Visitor.

Definition at line 170 of file javacodegeneratorvisitor.cpp.

00170                                                                             {
00171         VisitorReturn *v;
00172         return v;
00173 }

VisitorReturn * JavaCodeGeneratorVisitor::visitReceiveStatement ReceiveStatement receiveStatement  )  [virtual]
 

Implements Visitor.

Definition at line 175 of file javacodegeneratorvisitor.cpp.

00175                                                                                                  {
00176         VisitorReturn *v;
00177         return v;
00178 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSendStatement SendStatement sendStatement  )  [virtual]
 

Implements Visitor.

Definition at line 180 of file javacodegeneratorvisitor.cpp.

00180                                                                                         {
00181         VisitorReturn *v;
00182         return v;
00183 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialAction SequentialAction sequentialAction  )  [virtual]
 

Implements Visitor.

Definition at line 185 of file javacodegeneratorvisitor.cpp.

00185                                                                                                  {
00186         VisitorReturn *v;
00187         return v;
00188 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialBehavior SequentialBehavior sequentialBehavior  )  [virtual]
 

Implements Visitor.

Definition at line 190 of file javacodegeneratorvisitor.cpp.

00190                                                                                                        {
00191         VisitorReturn *v;
00192         return v;
00193 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialDeclaration SequentialDeclaration sequentialDeclaration  )  [virtual]
 

Implements Visitor.

Definition at line 195 of file javacodegeneratorvisitor.cpp.

00195                                                                                                                 {
00196         VisitorReturn *v;
00197         return v;
00198 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialExpressionList SequentialExpressionList sequentialExpressionList  )  [virtual]
 

Implements Visitor.

Definition at line 200 of file javacodegeneratorvisitor.cpp.

00200                                                                                                                          {
00201         VisitorReturn *v;
00202         return v;
00203 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialFieldDeclaration SequentialFieldDeclaration sequentialFieldDeclaration  )  [virtual]
 

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 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialGuardedStatement SequentialGuardedStatement sequentialGuardedStatement  )  [virtual]
 

Implements Visitor.

Definition at line 212 of file javacodegeneratorvisitor.cpp.

00212                                                                                                                                {
00213         VisitorReturn *v;
00214         return v;
00215 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialIdentifierList SequentialIdentifierList sequentialIdentifierList  )  [virtual]
 

Implements Visitor.

Definition at line 217 of file javacodegeneratorvisitor.cpp.

00217                                                                                                                          {
00218         VisitorReturn *v;
00219         return v;
00220 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialImport SequentialImport sequentialImport  )  [virtual]
 

Implements Visitor.

Definition at line 222 of file javacodegeneratorvisitor.cpp.

00222                                                                                                  {
00223         VisitorReturn *v;
00224         return v;
00225 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialLeftSideList SequentialLeftSideList sequentialLeftSideList  )  [virtual]
 

Implements Visitor.

Definition at line 227 of file javacodegeneratorvisitor.cpp.

00227                                                                                                                    {
00228         VisitorReturn *v;
00229         return v;
00230 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialMessage SequentialMessage sequentialMessage  )  [virtual]
 

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 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialProcess SequentialProcess sequentialProcess  )  [virtual]
 

Implements Visitor.

Definition at line 239 of file javacodegeneratorvisitor.cpp.

00239                                                                                                     {
00240         VisitorReturn *v;
00241         return v;
00242 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSequentialStatement SequentialStatement sequentialStatement  )  [virtual]
 

Implements Visitor.

Definition at line 244 of file javacodegeneratorvisitor.cpp.

00244                                                                                                           {
00245         VisitorReturn *v;
00246         return v;
00247 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleAction SimpleAction simpleAction  )  [virtual]
 

Implements Visitor.

Definition at line 249 of file javacodegeneratorvisitor.cpp.

00249                                                                                      {
00250         VisitorReturn *v;
00251         return v;
00252 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleArrayReference SimpleArrayReference simpleArrayReference  )  [virtual]
 

Implements Visitor.

Definition at line 254 of file javacodegeneratorvisitor.cpp.

00254                                                                                                              {
00255         VisitorReturn *v;
00256         return v;
00257 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleBehavior SimpleBehavior simpleBehavior  )  [virtual]
 

Implements Visitor.

Definition at line 259 of file javacodegeneratorvisitor.cpp.

00259                                                                                            {
00260         VisitorReturn *v;
00261         return v;
00262 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleDeclaration SimpleDeclaration simpleDeclaration  )  [virtual]
 

Implements Visitor.

Definition at line 264 of file javacodegeneratorvisitor.cpp.

00264                                                                                                     {
00265         VisitorReturn *v;
00266         return v;
00267 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleExpressionList SimpleExpressionList simpleExpressionList  )  [virtual]
 

Implements Visitor.

Definition at line 269 of file javacodegeneratorvisitor.cpp.

00269                                                                                                              {
00270         VisitorReturn *v;
00271         return v;
00272 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleFieldDeclaration SimpleFieldDeclaration simpleFieldDeclaration  )  [virtual]
 

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 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleGuardedStatement SimpleGuardedStatement simpleGuardedStatement  )  [virtual]
 

Implements Visitor.

Definition at line 318 of file javacodegeneratorvisitor.cpp.

00318                                                                                                                    {
00319         VisitorReturn *v;
00320         return v;
00321 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleIdentifierList SimpleIdentifierList simpleIdentifierList  )  [virtual]
 

Implements Visitor.

Definition at line 323 of file javacodegeneratorvisitor.cpp.

00323                                                                                                              {
00324         VisitorReturn *v;
00325         return v;
00326 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleImport SimpleImport simpleImport  )  [virtual]
 

Implements Visitor.

Definition at line 328 of file javacodegeneratorvisitor.cpp.

00328                                                                                      {
00329         VisitorReturn *v;
00330         return v;
00331 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleLeftSideList SimpleLeftSideList simpleLeftSideList  )  [virtual]
 

Implements Visitor.

Definition at line 333 of file javacodegeneratorvisitor.cpp.

00333                                                                                                        {
00334         VisitorReturn *v;
00335         return v;
00336 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleMessage SimpleMessage simpleMessage  )  [virtual]
 

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 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleProcess SimpleProcess simpleProcess  )  [virtual]
 

Implements Visitor.

Definition at line 464 of file javacodegeneratorvisitor.cpp.

00464                                                                                         {
00465         VisitorReturn *v;
00466         return v;
00467 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSimpleStatement SimpleStatement simpleStatement  )  [virtual]
 

Implements Visitor.

Definition at line 469 of file javacodegeneratorvisitor.cpp.

00469                                                                                               {
00470         VisitorReturn *v;
00471         return v;
00472 }

VisitorReturn * JavaCodeGeneratorVisitor::visitSkipStatement SkipStatement skipStatement  )  [virtual]
 

Implements Visitor.

Definition at line 474 of file javacodegeneratorvisitor.cpp.

00474                                                                                         {
00475         VisitorReturn *v;
00476         return v;
00477 }

VisitorReturn * JavaCodeGeneratorVisitor::visitStartStatement StartStatement startStatement  )  [virtual]
 

Implements Visitor.

Definition at line 479 of file javacodegeneratorvisitor.cpp.

00479                                                                                            {
00480         VisitorReturn *v;
00481         return v;
00482 }

VisitorReturn * JavaCodeGeneratorVisitor::visitStatement Statement statement  )  [virtual]
 

Implements Visitor.

Definition at line 484 of file javacodegeneratorvisitor.cpp.

00484                                                                             {
00485         VisitorReturn *v;
00486         return v;
00487 }

VisitorReturn * JavaCodeGeneratorVisitor::visitStopStatement StopStatement stopStatement  )  [virtual]
 

Implements Visitor.

Definition at line 489 of file javacodegeneratorvisitor.cpp.

00489                                                                                         {
00490         VisitorReturn *v;
00491         return v;
00492 }

VisitorReturn * JavaCodeGeneratorVisitor::visitStringLiteral StringLiteral stringLiteral  )  [virtual]
 

Implements Visitor.

Definition at line 494 of file javacodegeneratorvisitor.cpp.

00494                                                                                         {
00495         VisitorReturn *v;
00496         return v;
00497 }

VisitorReturn * JavaCodeGeneratorVisitor::visitType Type type  )  [virtual]
 

Implements Visitor.

Definition at line 499 of file javacodegeneratorvisitor.cpp.

00499                                                              {
00500         VisitorReturn *v;
00501         return v;
00502 }

VisitorReturn * JavaCodeGeneratorVisitor::visitUnaryExpression UnaryExpression unaryExpression  )  [virtual]
 

Implements Visitor.

Definition at line 504 of file javacodegeneratorvisitor.cpp.

00504                                                                                               {
00505         VisitorReturn *v;
00506         return v;
00507 }


Member Data Documentation

int JavaCodeGeneratorVisitor::msgCode [private]
 

Definition at line 12 of file javacodegeneratorvisitor.h.

Referenced by visitSimpleMessage().

ofstream JavaCodeGeneratorVisitor::output [private]
 

Definition at line 13 of file javacodegeneratorvisitor.h.

Referenced by visitProgram(), visitSimpleFieldDeclaration(), and visitSimpleMessage().

vector<Ast*> JavaCodeGeneratorVisitor::stack [private]
 

Definition at line 14 of file javacodegeneratorvisitor.h.

Referenced by visitSimpleFieldDeclaration(), and visitSimpleMessage().


The documentation for this class was generated from the following files:
Generated on Mon Dec 1 17:39:08 2003 for Protomake by doxygen1.3