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