154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project#include "AST.h" 254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project#include "Type.h" 354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectWriteModifiers(FILE* to, int mod, int mask) 654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int m = mod & mask; 854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 97ea9d79e302b1d71c62802aa514566c9b7f39f67Xavier Ducrohet if (m & OVERRIDE) { 107ea9d79e302b1d71c62802aa514566c9b7f39f67Xavier Ducrohet fprintf(to, "@Override "); 117ea9d79e302b1d71c62802aa514566c9b7f39f67Xavier Ducrohet } 127ea9d79e302b1d71c62802aa514566c9b7f39f67Xavier Ducrohet 1354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if ((m & SCOPE_MASK) == PUBLIC) { 1454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "public "); 1554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project else if ((m & SCOPE_MASK) == PRIVATE) { 1754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "private "); 1854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 1954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project else if ((m & SCOPE_MASK) == PROTECTED) { 2054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "protected "); 2154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 2254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 2354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (m & STATIC) { 2454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "static "); 2554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 2654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 2754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (m & FINAL) { 2854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "final "); 2954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 3054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 3154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (m & ABSTRACT) { 3254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "abstract "); 3354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 3454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 3554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 3654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 3754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectWriteArgumentList(FILE* to, const vector<Expression*>& arguments) 3854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 3954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t N = arguments.size(); 4054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (size_t i=0; i<N; i++) { 4154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project arguments[i]->Write(to); 4254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (i != N-1) { 4354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ", "); 4454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 4554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 4654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 4754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 4854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectClassElement::ClassElement() 4954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 5054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 5154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 5254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectClassElement::~ClassElement() 5354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 5454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 5554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 5654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectField::Field() 5754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :ClassElement(), 5854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project modifiers(0), 5954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project variable(NULL) 6054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 6154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 6254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 6354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectField::Field(int m, Variable* v) 6454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :ClassElement(), 6554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project modifiers(m), 6654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project variable(v) 6754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 6854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 6954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 7054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectField::~Field() 7154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 7254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 7354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 7454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 7554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectField::GatherTypes(set<Type*>* types) const 7654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 7754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->variable->type); 7854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 7954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 8054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 8154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectField::Write(FILE* to) 8254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 8354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->comment.length() != 0) { 8454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s\n", this->comment.c_str()); 8554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 867ea9d79e302b1d71c62802aa514566c9b7f39f67Xavier Ducrohet WriteModifiers(to, this->modifiers, SCOPE_MASK | STATIC | FINAL | OVERRIDE); 8754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s %s", this->variable->type->QualifiedName().c_str(), 8854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->variable->name.c_str()); 8954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->value.length() != 0) { 9054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " = %s", this->value.c_str()); 9154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 9254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ";\n"); 9354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 9454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 9554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectExpression::~Expression() 9654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 9754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 9854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 9954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectLiteralExpression::LiteralExpression(const string& v) 10054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :value(v) 10154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 10254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 10354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 10454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectLiteralExpression::~LiteralExpression() 10554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 10654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 10754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 10854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 10954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectLiteralExpression::Write(FILE* to) 11054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 11154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", this->value.c_str()); 11254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 11354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 114fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoStringLiteralExpression::StringLiteralExpression(const string& v) 115fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato :value(v) 116fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 117fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 118fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 119fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoStringLiteralExpression::~StringLiteralExpression() 120fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 121fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 122fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 123fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 124fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoStringLiteralExpression::Write(FILE* to) 125fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 126fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato fprintf(to, "\"%s\"", this->value.c_str()); 127fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 128fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 12954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::Variable() 13054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(NULL), 13154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(), 13254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dimension(0) 13354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 13454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 13554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 13654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::Variable(Type* t, const string& n) 13754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(t), 13854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n), 13954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dimension(0) 14054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 14154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 14254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 14354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::Variable(Type* t, const string& n, int d) 14454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(t), 14554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n), 14654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dimension(d) 14754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 14854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 14954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 15054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::~Variable() 15154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 15254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 15354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 15454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 15554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::GatherTypes(set<Type*>* types) const 15654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 15754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->type); 15854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 15954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 16054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 16154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::WriteDeclaration(FILE* to) 16254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 16354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project string dim; 16454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (int i=0; i<this->dimension; i++) { 16554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dim += "[]"; 16654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 16754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s%s %s", this->type->QualifiedName().c_str(), dim.c_str(), 16854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->name.c_str()); 16954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 17054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 17154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 17254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::Write(FILE* to) 17354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 17454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", name.c_str()); 17554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 17654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 17754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFieldVariable::FieldVariable(Expression* o, const string& n) 17854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :object(o), 17954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(NULL), 18054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 18154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 18254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 18354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 18454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFieldVariable::FieldVariable(Type* c, const string& n) 18554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :object(NULL), 18654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(c), 18754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 18854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 18954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 19054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 19154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFieldVariable::~FieldVariable() 19254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 19354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 19454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 19554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 19654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFieldVariable::Write(FILE* to) 19754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 19854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->object != NULL) { 19954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->object->Write(to); 20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 20154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project else if (this->clazz != NULL) { 20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", this->clazz->QualifiedName().c_str()); 20354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 20454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ".%s", name.c_str()); 20554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 20654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 20754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 20854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatement::~Statement() 20954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 21054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 21154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 21254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatementBlock::StatementBlock() 21354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 21454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 21554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 21654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatementBlock::~StatementBlock() 21754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 21854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 21954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 22054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 22154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatementBlock::Write(FILE* to) 22254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 22354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "{\n"); 22454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int N = this->statements.size(); 22554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (int i=0; i<N; i++) { 22654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements[i]->Write(to); 22754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 22854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "}\n"); 22954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 23054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 23154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 23254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatementBlock::Add(Statement* statement) 23354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 23454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements.push_back(statement); 23554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 23654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 23754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 23854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatementBlock::Add(Expression* expression) 23954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 24054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements.push_back(new ExpressionStatement(expression)); 24154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 24254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 24354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectExpressionStatement::ExpressionStatement(Expression* e) 24454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :expression(e) 24554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 24654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 24754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 24854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectExpressionStatement::~ExpressionStatement() 24954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 25054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 25154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 25254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 25354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectExpressionStatement::Write(FILE* to) 25454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 25554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->expression->Write(to); 25654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ";\n"); 25754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 25854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 25954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectAssignment::Assignment(Variable* l, Expression* r) 26054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :lvalue(l), 26154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project rvalue(r), 26254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cast(NULL) 26354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 26454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 26554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 26654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectAssignment::Assignment(Variable* l, Expression* r, Type* c) 26754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :lvalue(l), 26854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project rvalue(r), 26954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cast(c) 27054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 27154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 27254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 27354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectAssignment::~Assignment() 27454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 27554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 27654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 27754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 27854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectAssignment::Write(FILE* to) 27954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 28054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->lvalue->Write(to); 28154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " = "); 28254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->cast != NULL) { 28354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "(%s)", this->cast->QualifiedName().c_str()); 28454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 28554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->rvalue->Write(to); 28654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 28754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 28854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::MethodCall(const string& n) 28954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :obj(NULL), 29054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(NULL), 29154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 29254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 29354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 29454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 295fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoMethodCall::MethodCall(const string& n, int argc = 0, ...) 296fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato :obj(NULL), 297fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato clazz(NULL), 298fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato name(n) 299fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 300fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato va_list args; 301fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato va_start(args, argc); 302fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato init(argc, args); 303fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato va_end(args); 304fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 305fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 30654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::MethodCall(Expression* o, const string& n) 30754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :obj(o), 30854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(NULL), 30954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 31054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 31154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 31254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 31354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::MethodCall(Type* t, const string& n) 31454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :obj(NULL), 31554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(t), 31654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 31754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 31854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 31954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 32054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::MethodCall(Expression* o, const string& n, int argc = 0, ...) 32154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :obj(o), 32254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(NULL), 32354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 32454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 32554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_list args; 32654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_start(args, argc); 32754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project init(argc, args); 32854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_end(args); 32954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 33054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 33154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::MethodCall(Type* t, const string& n, int argc = 0, ...) 33254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :obj(NULL), 33354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(t), 33454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 33554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 33654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_list args; 33754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_start(args, argc); 33854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project init(argc, args); 33954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_end(args); 34054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 34154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 34254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::~MethodCall() 34354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 34454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 34554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 34654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 34754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::init(int n, va_list args) 34854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 34954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (int i=0; i<n; i++) { 35054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Expression* expression = (Expression*)va_arg(args, void*); 35154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->arguments.push_back(expression); 35254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 35354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 35454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 35554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 35654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::Write(FILE* to) 35754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 35854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->obj != NULL) { 35954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->obj->Write(to); 36054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "."); 36154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 36254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project else if (this->clazz != NULL) { 36354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s.", this->clazz->QualifiedName().c_str()); 36454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 36554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s(", this->name.c_str()); 36654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project WriteArgumentList(to, this->arguments); 36754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")"); 36854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 36954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 37054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectComparison::Comparison(Expression* l, const string& o, Expression* r) 37154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :lvalue(l), 37254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project op(o), 37354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project rvalue(r) 37454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 37554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 37654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 37754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectComparison::~Comparison() 37854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 37954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 38054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 38154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 38254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectComparison::Write(FILE* to) 38354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 38454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "("); 38554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->lvalue->Write(to); 38654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", this->op.c_str()); 38754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->rvalue->Write(to); 38854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")"); 38954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 39054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 39154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewExpression::NewExpression(Type* t) 39254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(t) 39354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 39454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 39554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 396fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoNewExpression::NewExpression(Type* t, int argc = 0, ...) 397fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato :type(t) 398fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 399fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato va_list args; 400fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato va_start(args, argc); 401fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato init(argc, args); 402fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato va_end(args); 403fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 404fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 40554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewExpression::~NewExpression() 40654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 40754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 40854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 40954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 410fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoNewExpression::init(int n, va_list args) 411fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 412fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato for (int i=0; i<n; i++) { 413fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Expression* expression = (Expression*)va_arg(args, void*); 414fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato this->arguments.push_back(expression); 415fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato } 416fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 417fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 418fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 41954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewExpression::Write(FILE* to) 42054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 42154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "new %s(", this->type->InstantiableName().c_str()); 42254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project WriteArgumentList(to, this->arguments); 42354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")"); 42454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 42554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 42654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewArrayExpression::NewArrayExpression(Type* t, Expression* s) 42754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(t), 42854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size(s) 42954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 43054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 43154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 43254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewArrayExpression::~NewArrayExpression() 43354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 43454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 43554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 43654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 43754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewArrayExpression::Write(FILE* to) 43854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 43954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "new %s[", this->type->QualifiedName().c_str()); 44054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size->Write(to); 44154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "]"); 44254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 44354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 44454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTernary::Ternary() 44554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :condition(NULL), 44654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ifpart(NULL), 44754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project elsepart(NULL) 44854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 44954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 45054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 45154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTernary::Ternary(Expression* a, Expression* b, Expression* c) 45254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :condition(a), 45354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ifpart(b), 45454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project elsepart(c) 45554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 45654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 45754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 45854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTernary::~Ternary() 45954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 46054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 46154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 46254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 46354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTernary::Write(FILE* to) 46454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 46554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "(("); 46654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->condition->Write(to); 46754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")?("); 46854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->ifpart->Write(to); 46954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "):("); 47054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->elsepart->Write(to); 47154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "))"); 47254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 47354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 47454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCast::Cast() 47554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(NULL), 47654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project expression(NULL) 47754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 47854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 47954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 48054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCast::Cast(Type* t, Expression* e) 48154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(t), 48254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project expression(e) 48354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 48454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 48554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 48654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCast::~Cast() 48754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 48854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 48954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 49054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 49154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCast::Write(FILE* to) 49254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 49354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "((%s)", this->type->QualifiedName().c_str()); 49454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project expression->Write(to); 49554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")"); 49654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 49754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 49854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariableDeclaration::VariableDeclaration(Variable* l, Expression* r, Type* c) 49954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :lvalue(l), 50054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cast(c), 50154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project rvalue(r) 50254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 50354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 50454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 50554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariableDeclaration::VariableDeclaration(Variable* l) 50654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :lvalue(l), 50754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cast(NULL), 50854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project rvalue(NULL) 50954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 51054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 51154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 51254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariableDeclaration::~VariableDeclaration() 51354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 51454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 51554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 51654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 51754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariableDeclaration::Write(FILE* to) 51854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 51954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->lvalue->WriteDeclaration(to); 52054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->rvalue != NULL) { 52154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " = "); 52254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->cast != NULL) { 52354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "(%s)", this->cast->QualifiedName().c_str()); 52454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 52554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->rvalue->Write(to); 52654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 52754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ";\n"); 52854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 52954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 53054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectIfStatement::IfStatement() 53154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :expression(NULL), 53254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project statements(new StatementBlock), 53354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project elseif(NULL) 53454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 53554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 53654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 53754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectIfStatement::~IfStatement() 53854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 53954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 54054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 54154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 54254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectIfStatement::Write(FILE* to) 54354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 54454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->expression != NULL) { 54554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "if ("); 54654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->expression->Write(to); 54754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ") "); 54854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 54954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements->Write(to); 55054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->elseif != NULL) { 55154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "else "); 55254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->elseif->Write(to); 55354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 55454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 55554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 55654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectReturnStatement::ReturnStatement(Expression* e) 55754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :expression(e) 55854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 55954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 56054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 56154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectReturnStatement::~ReturnStatement() 56254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 56354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 56454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 56554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 56654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectReturnStatement::Write(FILE* to) 56754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 56854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "return "); 56954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->expression->Write(to); 57054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ";\n"); 57154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 57254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 57354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTryStatement::TryStatement() 57454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :statements(new StatementBlock) 57554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 57654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 57754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 57854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTryStatement::~TryStatement() 57954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 58054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 58154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 58254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 58354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTryStatement::Write(FILE* to) 58454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 58554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "try "); 58654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements->Write(to); 58754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 58854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 58954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCatchStatement::CatchStatement(Variable* e) 59054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :statements(new StatementBlock), 59154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project exception(e) 59254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 59354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 59454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 59554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCatchStatement::~CatchStatement() 59654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 59754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 59854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 59954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 60054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCatchStatement::Write(FILE* to) 60154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 60254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "catch "); 60354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->exception != NULL) { 60454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "("); 60554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->exception->WriteDeclaration(to); 60654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ") "); 60754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 60854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements->Write(to); 60954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 61054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 61154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFinallyStatement::FinallyStatement() 61254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :statements(new StatementBlock) 61354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 61454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 61554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 61654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFinallyStatement::~FinallyStatement() 61754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 61854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 61954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 62054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 62154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFinallyStatement::Write(FILE* to) 62254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 62354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "finally "); 62454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements->Write(to); 62554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 62654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 62754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCase::Case() 62854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :statements(new StatementBlock) 62954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 63054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 63154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 63254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCase::Case(const string& c) 63354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :statements(new StatementBlock) 63454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 63554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cases.push_back(c); 63654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 63754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 63854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCase::~Case() 63954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 64054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 64154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 64254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 64354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCase::Write(FILE* to) 64454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 64554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int N = this->cases.size(); 64654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (N > 0) { 64754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (int i=0; i<N; i++) { 64854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project string s = this->cases[i]; 64954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (s.length() != 0) { 65054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "case %s:\n", s.c_str()); 65154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 65254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "default:\n"); 65354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 65454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 65554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 65654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "default:\n"); 65754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 65854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project statements->Write(to); 65954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 66054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 66154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectSwitchStatement::SwitchStatement(Expression* e) 66254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :expression(e) 66354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 66454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 66554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 66654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectSwitchStatement::~SwitchStatement() 66754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 66854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 66954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 67054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 67154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectSwitchStatement::Write(FILE* to) 67254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 67354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "switch ("); 67454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->expression->Write(to); 67554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")\n{\n"); 67654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int N = this->cases.size(); 67754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (int i=0; i<N; i++) { 67854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->cases[i]->Write(to); 67954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 68054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "}\n"); 68154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 68254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 68305ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBreak::Break() 68405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 68505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 68605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 68705ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBreak::~Break() 68805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 68905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 69005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 69105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 69205ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBreak::Write(FILE* to) 69305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 69405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato fprintf(to, "break;\n"); 69505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 69605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 69754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethod::Method() 69854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :ClassElement(), 69954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project modifiers(0), 70054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project returnType(NULL), // (NULL means constructor) 70154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project returnTypeDimension(0), 70254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project statements(NULL) 70354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 70454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 70554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 70654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethod::~Method() 70754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 70854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 70954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 71054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 71154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethod::GatherTypes(set<Type*>* types) const 71254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 71354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t N, i; 71454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 71554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->returnType) { 71654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->returnType); 71754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 71954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->parameters.size(); 72054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 72154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->parameters[i]->GatherTypes(types); 72254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 72354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 72454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->exceptions.size(); 72554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 72654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->exceptions[i]); 72754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 72854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 72954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 73154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethod::Write(FILE* to) 73254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 73354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t N, i; 73454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->comment.length() != 0) { 73654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s\n", this->comment.c_str()); 73754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 73854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 739fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato WriteModifiers(to, this->modifiers, SCOPE_MASK | STATIC | ABSTRACT | FINAL | OVERRIDE); 74054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 74154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->returnType != NULL) { 74254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project string dim; 74354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<this->returnTypeDimension; i++) { 74454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dim += "[]"; 74554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 74654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s%s ", this->returnType->QualifiedName().c_str(), 74754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dim.c_str()); 74854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 74954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 75054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s(", this->name.c_str()); 75154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 75254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->parameters.size(); 75354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 75454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->parameters[i]->WriteDeclaration(to); 75554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (i != N-1) { 75654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ", "); 75754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 76054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")"); 76154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 76254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->exceptions.size(); 76354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 76454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (i == 0) { 76554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " throws "); 76654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 76754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ", "); 76854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 76954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", this->exceptions[i]->QualifiedName().c_str()); 77054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 77254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->statements == NULL) { 77354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ";\n"); 77454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 77554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "\n"); 77654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements->Write(to); 77754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 77954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 78054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectClass::Class() 78154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :modifiers(0), 78254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project what(CLASS), 78354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project type(NULL), 78454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project extends(NULL) 78554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 78654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 78754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 78854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectClass::~Class() 78954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 79054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 79154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 79254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 79354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectClass::GatherTypes(set<Type*>* types) const 79454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 79554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int N, i; 79654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 79754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->type); 79854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->extends != NULL) { 79954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->extends); 80054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 80154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 80254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->interfaces.size(); 80354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 80454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->interfaces[i]); 80554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 80654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 80754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->elements.size(); 80854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 80954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->elements[i]->GatherTypes(types); 81054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 81154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 81254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 81354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 81454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectClass::Write(FILE* to) 81554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 81654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t N, i; 81754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 81854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->comment.length() != 0) { 81954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s\n", this->comment.c_str()); 82054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 82154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 82254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project WriteModifiers(to, this->modifiers, ALL_MODIFIERS); 82354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 82454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->what == Class::CLASS) { 82554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "class "); 82654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 82754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "interface "); 82854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 82954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 83054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project string name = this->type->Name(); 83154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t pos = name.rfind('.'); 83254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (pos != string::npos) { 83354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name = name.c_str() + pos + 1; 83454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 83554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 83654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", name.c_str()); 83754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 83854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->extends != NULL) { 83954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " extends %s", this->extends->QualifiedName().c_str()); 84054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 84154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 84254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->interfaces.size(); 84354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (N != 0) { 84454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->what == Class::CLASS) { 84554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " implements"); 84654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 84754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " extends"); 84854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 84954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 85054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " %s", this->interfaces[i]->QualifiedName().c_str()); 85154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 85454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "\n"); 85554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "{\n"); 85654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 85754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->elements.size(); 85854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 85954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->elements[i]->Write(to); 86054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 86154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 86254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "}\n"); 86354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 86454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 86554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 86654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectDocument::Document() 86754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 86854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 86954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 87054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectDocument::~Document() 87154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 87254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 87354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 87454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectstatic string 87554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectescape_backslashes(const string& str) 87654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 87754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project string result; 87854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project const size_t I=str.length(); 87954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (size_t i=0; i<I; i++) { 88054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project char c = str[i]; 88154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (c == '\\') { 88254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project result += "\\\\"; 88354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 88454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project result += c; 88554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 88654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 88754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return result; 88854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 88954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 89054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 89154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectDocument::Write(FILE* to) 89254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 89354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t N, i; 89454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 89554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->comment.length() != 0) { 89654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s\n", this->comment.c_str()); 89754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 89854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "/*\n" 89954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project " * This file is auto-generated. DO NOT MODIFY.\n" 90054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project " * Original file: %s\n" 90154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project " */\n", escape_backslashes(this->originalSrc).c_str()); 90254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->package.length() != 0) { 90354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "package %s;\n", this->package.c_str()); 90454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 90554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 90654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->classes.size(); 90754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 90854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Class* c = this->classes[i]; 90954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c->Write(to); 91054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 91154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 91254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 913