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 11454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::Variable() 11554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(NULL), 11654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(), 11754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dimension(0) 11854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 11954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 12054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 12154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::Variable(Type* t, const string& n) 12254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(t), 12354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n), 12454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dimension(0) 12554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 12654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 12754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 12854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::Variable(Type* t, const string& n, int d) 12954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(t), 13054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n), 13154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dimension(d) 13254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 13354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 13454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 13554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::~Variable() 13654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 13754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 13854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 13954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 14054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::GatherTypes(set<Type*>* types) const 14154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 14254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->type); 14354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 14454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 14554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 14654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::WriteDeclaration(FILE* to) 14754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 14854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project string dim; 14954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (int i=0; i<this->dimension; i++) { 15054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dim += "[]"; 15154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 15254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s%s %s", this->type->QualifiedName().c_str(), dim.c_str(), 15354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->name.c_str()); 15454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 15554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 15654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 15754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariable::Write(FILE* to) 15854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 15954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", name.c_str()); 16054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 16154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 16254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFieldVariable::FieldVariable(Expression* o, const string& n) 16354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :object(o), 16454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(NULL), 16554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 16654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 16754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 16854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 16954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFieldVariable::FieldVariable(Type* c, const string& n) 17054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :object(NULL), 17154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(c), 17254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 17354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 17454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 17554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 17654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFieldVariable::~FieldVariable() 17754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 17854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 17954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 18054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 18154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFieldVariable::Write(FILE* to) 18254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 18354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->object != NULL) { 18454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->object->Write(to); 18554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 18654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project else if (this->clazz != NULL) { 18754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", this->clazz->QualifiedName().c_str()); 18854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 18954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ".%s", name.c_str()); 19054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 19154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 19254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 19354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatement::~Statement() 19454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 19554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 19654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 19754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatementBlock::StatementBlock() 19854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 19954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 20054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 20154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatementBlock::~StatementBlock() 20254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 20354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 20454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 20554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 20654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatementBlock::Write(FILE* to) 20754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 20854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "{\n"); 20954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int N = this->statements.size(); 21054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (int i=0; i<N; i++) { 21154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements[i]->Write(to); 21254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 21354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "}\n"); 21454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 21554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 21654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 21754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatementBlock::Add(Statement* statement) 21854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 21954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements.push_back(statement); 22054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 22154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 22254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 22354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectStatementBlock::Add(Expression* expression) 22454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 22554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements.push_back(new ExpressionStatement(expression)); 22654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 22754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 22854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectExpressionStatement::ExpressionStatement(Expression* e) 22954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :expression(e) 23054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 23154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 23254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 23354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectExpressionStatement::~ExpressionStatement() 23454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 23554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 23654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 23754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 23854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectExpressionStatement::Write(FILE* to) 23954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 24054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->expression->Write(to); 24154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ";\n"); 24254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 24354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 24454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectAssignment::Assignment(Variable* l, Expression* r) 24554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :lvalue(l), 24654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project rvalue(r), 24754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cast(NULL) 24854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 24954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 25054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 25154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectAssignment::Assignment(Variable* l, Expression* r, Type* c) 25254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :lvalue(l), 25354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project rvalue(r), 25454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cast(c) 25554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 25654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 25754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 25854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectAssignment::~Assignment() 25954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 26054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 26154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 26254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 26354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectAssignment::Write(FILE* to) 26454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 26554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->lvalue->Write(to); 26654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " = "); 26754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->cast != NULL) { 26854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "(%s)", this->cast->QualifiedName().c_str()); 26954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 27054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->rvalue->Write(to); 27154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 27254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 27354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::MethodCall(const string& n) 27454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :obj(NULL), 27554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(NULL), 27654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 27754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 27854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 27954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 28054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::MethodCall(Expression* o, const string& n) 28154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :obj(o), 28254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(NULL), 28354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 28454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 28554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 28654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 28754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::MethodCall(Type* t, const string& n) 28854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :obj(NULL), 28954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(t), 29054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 29154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 29254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 29354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 29454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::MethodCall(Expression* o, const string& n, int argc = 0, ...) 29554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :obj(o), 29654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(NULL), 29754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 29854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 29954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_list args; 30054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_start(args, argc); 30154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project init(argc, args); 30254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_end(args); 30354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 30454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 30554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::MethodCall(Type* t, const string& n, int argc = 0, ...) 30654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :obj(NULL), 30754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project clazz(t), 30854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name(n) 30954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 31054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_list args; 31154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_start(args, argc); 31254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project init(argc, args); 31354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project va_end(args); 31454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 31554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 31654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::~MethodCall() 31754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 31854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 31954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 32054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 32154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::init(int n, va_list args) 32254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 32354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (int i=0; i<n; i++) { 32454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Expression* expression = (Expression*)va_arg(args, void*); 32554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->arguments.push_back(expression); 32654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 32754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 32854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 32954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 33054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethodCall::Write(FILE* to) 33154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 33254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->obj != NULL) { 33354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->obj->Write(to); 33454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "."); 33554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 33654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project else if (this->clazz != NULL) { 33754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s.", this->clazz->QualifiedName().c_str()); 33854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 33954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s(", this->name.c_str()); 34054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project WriteArgumentList(to, this->arguments); 34154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")"); 34254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 34354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 34454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectComparison::Comparison(Expression* l, const string& o, Expression* r) 34554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :lvalue(l), 34654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project op(o), 34754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project rvalue(r) 34854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 34954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 35054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 35154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectComparison::~Comparison() 35254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 35354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 35454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 35554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 35654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectComparison::Write(FILE* to) 35754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 35854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "("); 35954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->lvalue->Write(to); 36054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", this->op.c_str()); 36154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->rvalue->Write(to); 36254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")"); 36354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 36454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 36554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewExpression::NewExpression(Type* t) 36654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(t) 36754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 36854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 36954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 37054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewExpression::~NewExpression() 37154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 37254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 37354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 37454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 37554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewExpression::Write(FILE* to) 37654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 37754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "new %s(", this->type->InstantiableName().c_str()); 37854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project WriteArgumentList(to, this->arguments); 37954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")"); 38054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 38154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 38254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewArrayExpression::NewArrayExpression(Type* t, Expression* s) 38354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(t), 38454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size(s) 38554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 38654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 38754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 38854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewArrayExpression::~NewArrayExpression() 38954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 39054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 39154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 39254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 39354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectNewArrayExpression::Write(FILE* to) 39454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 39554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "new %s[", this->type->QualifiedName().c_str()); 39654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size->Write(to); 39754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "]"); 39854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 39954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 40054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTernary::Ternary() 40154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :condition(NULL), 40254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ifpart(NULL), 40354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project elsepart(NULL) 40454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 40554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 40654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 40754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTernary::Ternary(Expression* a, Expression* b, Expression* c) 40854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :condition(a), 40954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project ifpart(b), 41054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project elsepart(c) 41154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 41254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 41354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 41454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTernary::~Ternary() 41554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 41654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 41754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 41854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 41954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTernary::Write(FILE* to) 42054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 42154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "(("); 42254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->condition->Write(to); 42354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")?("); 42454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->ifpart->Write(to); 42554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "):("); 42654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->elsepart->Write(to); 42754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "))"); 42854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 42954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 43054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCast::Cast() 43154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(NULL), 43254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project expression(NULL) 43354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 43454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 43554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 43654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCast::Cast(Type* t, Expression* e) 43754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :type(t), 43854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project expression(e) 43954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 44054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 44154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 44254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCast::~Cast() 44354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 44454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 44554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 44654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 44754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCast::Write(FILE* to) 44854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 44954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "((%s)", this->type->QualifiedName().c_str()); 45054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project expression->Write(to); 45154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")"); 45254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 45354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 45454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariableDeclaration::VariableDeclaration(Variable* l, Expression* r, Type* c) 45554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :lvalue(l), 45654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cast(c), 45754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project rvalue(r) 45854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 45954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 46054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 46154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariableDeclaration::VariableDeclaration(Variable* l) 46254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :lvalue(l), 46354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cast(NULL), 46454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project rvalue(NULL) 46554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 46654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 46754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 46854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariableDeclaration::~VariableDeclaration() 46954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 47054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 47154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 47254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 47354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectVariableDeclaration::Write(FILE* to) 47454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 47554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->lvalue->WriteDeclaration(to); 47654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->rvalue != NULL) { 47754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " = "); 47854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->cast != NULL) { 47954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "(%s)", this->cast->QualifiedName().c_str()); 48054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 48154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->rvalue->Write(to); 48254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 48354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ";\n"); 48454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 48554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 48654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectIfStatement::IfStatement() 48754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :expression(NULL), 48854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project statements(new StatementBlock), 48954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project elseif(NULL) 49054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 49154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 49254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 49354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectIfStatement::~IfStatement() 49454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 49554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 49654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 49754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 49854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectIfStatement::Write(FILE* to) 49954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 50054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->expression != NULL) { 50154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "if ("); 50254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->expression->Write(to); 50354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ") "); 50454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 50554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements->Write(to); 50654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->elseif != NULL) { 50754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "else "); 50854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->elseif->Write(to); 50954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 51054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 51154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 51254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectReturnStatement::ReturnStatement(Expression* e) 51354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :expression(e) 51454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 51554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 51654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 51754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectReturnStatement::~ReturnStatement() 51854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 51954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 52054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 52154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 52254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectReturnStatement::Write(FILE* to) 52354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 52454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "return "); 52554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->expression->Write(to); 52654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ";\n"); 52754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 52854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 52954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTryStatement::TryStatement() 53054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :statements(new StatementBlock) 53154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 53254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 53354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 53454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTryStatement::~TryStatement() 53554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 53654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 53754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 53854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 53954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectTryStatement::Write(FILE* to) 54054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 54154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "try "); 54254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements->Write(to); 54354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 54454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 54554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCatchStatement::CatchStatement(Variable* e) 54654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :statements(new StatementBlock), 54754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project exception(e) 54854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 54954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 55054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 55154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCatchStatement::~CatchStatement() 55254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 55354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 55454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 55554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 55654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCatchStatement::Write(FILE* to) 55754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 55854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "catch "); 55954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->exception != NULL) { 56054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "("); 56154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->exception->WriteDeclaration(to); 56254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ") "); 56354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 56454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements->Write(to); 56554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 56654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 56754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFinallyStatement::FinallyStatement() 56854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :statements(new StatementBlock) 56954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 57054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 57154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 57254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFinallyStatement::~FinallyStatement() 57354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 57454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 57554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 57654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 57754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectFinallyStatement::Write(FILE* to) 57854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 57954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "finally "); 58054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements->Write(to); 58154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 58254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 58354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCase::Case() 58454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :statements(new StatementBlock) 58554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 58654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 58754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 58854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCase::Case(const string& c) 58954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :statements(new StatementBlock) 59054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 59154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project cases.push_back(c); 59254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 59354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 59454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCase::~Case() 59554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 59654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 59754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 59854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 59954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectCase::Write(FILE* to) 60054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 60154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int N = this->cases.size(); 60254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (N > 0) { 60354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (int i=0; i<N; i++) { 60454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project string s = this->cases[i]; 60554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (s.length() != 0) { 60654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "case %s:\n", s.c_str()); 60754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 60854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "default:\n"); 60954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 61054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 61154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 61254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "default:\n"); 61354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 61454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project statements->Write(to); 61554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 61654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 61754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectSwitchStatement::SwitchStatement(Expression* e) 61854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :expression(e) 61954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 62054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 62154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 62254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectSwitchStatement::~SwitchStatement() 62354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 62454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 62554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 62654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 62754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectSwitchStatement::Write(FILE* to) 62854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 62954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "switch ("); 63054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->expression->Write(to); 63154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")\n{\n"); 63254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int N = this->cases.size(); 63354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (int i=0; i<N; i++) { 63454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->cases[i]->Write(to); 63554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 63654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "}\n"); 63754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 63854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 63954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethod::Method() 64054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :ClassElement(), 64154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project modifiers(0), 64254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project returnType(NULL), // (NULL means constructor) 64354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project returnTypeDimension(0), 64454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project statements(NULL) 64554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 64654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 64754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 64854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethod::~Method() 64954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 65054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 65154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 65254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 65354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethod::GatherTypes(set<Type*>* types) const 65454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 65554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t N, i; 65654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 65754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->returnType) { 65854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->returnType); 65954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 66054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 66154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->parameters.size(); 66254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 66354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->parameters[i]->GatherTypes(types); 66454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 66554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 66654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->exceptions.size(); 66754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 66854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->exceptions[i]); 66954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 67054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 67154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 67254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 67354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectMethod::Write(FILE* to) 67454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 67554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t N, i; 67654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 67754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->comment.length() != 0) { 67854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s\n", this->comment.c_str()); 67954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 68054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 6817ea9d79e302b1d71c62802aa514566c9b7f39f67Xavier Ducrohet WriteModifiers(to, this->modifiers, SCOPE_MASK | STATIC | FINAL | OVERRIDE); 68254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 68354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->returnType != NULL) { 68454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project string dim; 68554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<this->returnTypeDimension; i++) { 68654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dim += "[]"; 68754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 68854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s%s ", this->returnType->QualifiedName().c_str(), 68954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project dim.c_str()); 69054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 69154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 69254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s(", this->name.c_str()); 69354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 69454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->parameters.size(); 69554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 69654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->parameters[i]->WriteDeclaration(to); 69754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (i != N-1) { 69854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ", "); 69954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 70054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 70154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 70254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ")"); 70354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 70454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->exceptions.size(); 70554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 70654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (i == 0) { 70754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " throws "); 70854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 70954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ", "); 71054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", this->exceptions[i]->QualifiedName().c_str()); 71254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 71354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 71454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->statements == NULL) { 71554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, ";\n"); 71654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 71754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "\n"); 71854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->statements->Write(to); 71954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 72054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 72154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 72254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectClass::Class() 72354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project :modifiers(0), 72454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project what(CLASS), 72554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project type(NULL), 72654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project extends(NULL) 72754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 72854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 72954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectClass::~Class() 73154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 73254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 73354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 73554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectClass::GatherTypes(set<Type*>* types) const 73654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 73754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project int N, i; 73854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 73954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->type); 74054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->extends != NULL) { 74154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->extends); 74254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 74354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 74454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->interfaces.size(); 74554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 74654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project types->insert(this->interfaces[i]); 74754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 74854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 74954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->elements.size(); 75054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 75154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->elements[i]->GatherTypes(types); 75254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 75354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 75454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 75554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 75654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectClass::Write(FILE* to) 75754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 75854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t N, i; 75954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 76054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->comment.length() != 0) { 76154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s\n", this->comment.c_str()); 76254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 76354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 76454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project WriteModifiers(to, this->modifiers, ALL_MODIFIERS); 76554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 76654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->what == Class::CLASS) { 76754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "class "); 76854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 76954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "interface "); 77054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 77254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project string name = this->type->Name(); 77354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t pos = name.rfind('.'); 77454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (pos != string::npos) { 77554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project name = name.c_str() + pos + 1; 77654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 77754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 77854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s", name.c_str()); 77954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 78054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->extends != NULL) { 78154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " extends %s", this->extends->QualifiedName().c_str()); 78254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 78354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 78454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->interfaces.size(); 78554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (N != 0) { 78654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->what == Class::CLASS) { 78754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " implements"); 78854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 78954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " extends"); 79054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 79254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, " %s", this->interfaces[i]->QualifiedName().c_str()); 79354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 79554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 79654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "\n"); 79754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "{\n"); 79854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 79954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->elements.size(); 80054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 80154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project this->elements[i]->Write(to); 80254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 80354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 80454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "}\n"); 80554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 80654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 80754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 80854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectDocument::Document() 80954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 81054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 81154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 81254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectDocument::~Document() 81354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 81454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 81554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 81654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectstatic string 81754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectescape_backslashes(const string& str) 81854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 81954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project string result; 82054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project const size_t I=str.length(); 82154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (size_t i=0; i<I; i++) { 82254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project char c = str[i]; 82354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (c == '\\') { 82454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project result += "\\\\"; 82554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } else { 82654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project result += c; 82754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 82854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 82954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project return result; 83054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 83154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 83254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Projectvoid 83354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source ProjectDocument::Write(FILE* to) 83454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project{ 83554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project size_t N, i; 83654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 83754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->comment.length() != 0) { 83854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "%s\n", this->comment.c_str()); 83954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 84054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "/*\n" 84154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project " * This file is auto-generated. DO NOT MODIFY.\n" 84254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project " * Original file: %s\n" 84354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project " */\n", escape_backslashes(this->originalSrc).c_str()); 84454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project if (this->package.length() != 0) { 84554b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project fprintf(to, "package %s;\n", this->package.c_str()); 84654b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 84754b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 84854b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project N = this->classes.size(); 84954b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project for (i=0; i<N; i++) { 85054b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project Class* c = this->classes[i]; 85154b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project c->Write(to); 85254b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project } 85354b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project} 85454b6cfa9a9e5b861a9930af873580d6dc20f773The Android Open Source Project 855