AST.h revision c7410f6f9f8f2aeb9368502a4a725b1a7abe1190
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef AIDL_AST_H 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define AIDL_AST_H 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <string> 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <vector> 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <set> 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <stdarg.h> 8c7410f6f9f8f2aeb9368502a4a725b1a7abe1190Jack Palevich#include <stdio.h> 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectusing namespace std; 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass Type; 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectenum { 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PACKAGE_PRIVATE = 0x00000000, 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PUBLIC = 0x00000001, 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PRIVATE = 0x00000002, 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PROTECTED = 0x00000003, 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SCOPE_MASK = 0x00000003, 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project STATIC = 0x00000010, 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FINAL = 0x00000020, 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ABSTRACT = 0x00000040, 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ALL_MODIFIERS = 0xffffffff 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Write the modifiers that are set in both mod and mask 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid WriteModifiers(FILE* to, int mod, int mask); 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct ClassElement 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ClassElement(); 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~ClassElement(); 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void GatherTypes(set<Type*>* types) const = 0; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to) = 0; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Expression 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Expression(); 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to) = 0; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct LiteralExpression : public Expression 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string value; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LiteralExpression(const string& value); 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~LiteralExpression(); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Variable : public Expression 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* type; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string name; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int dimension; 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable(); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable(Type* type, const string& name); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable(Type* type, const string& name, int dimension); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Variable(); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void GatherTypes(set<Type*>* types) const; 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void WriteDeclaration(FILE* to); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void Write(FILE* to); 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct FieldVariable : public Expression 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* object; 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* clazz; 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string name; 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FieldVariable(Expression* object, const string& name); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FieldVariable(Type* clazz, const string& name); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~FieldVariable(); 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void Write(FILE* to); 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Field : public ClassElement 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string comment; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int modifiers; 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable *variable; 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string value; 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Field(); 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Field(int modifiers, Variable* variable); 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Field(); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void GatherTypes(set<Type*>* types) const; 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Statement 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Statement(); 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to) = 0; 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct StatementBlock 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Statement*> statements; 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock(); 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~StatementBlock(); 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void Add(Statement* statement); 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void Add(Expression* expression); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct ExpressionStatement : public Statement 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* expression; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ExpressionStatement(Expression* expression); 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~ExpressionStatement(); 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Assignment : public Expression 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable* lvalue; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* rvalue; 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* cast; 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Assignment(Variable* lvalue, Expression* rvalue); 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Assignment(Variable* lvalue, Expression* rvalue, Type* cast); 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Assignment(); 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct MethodCall : public Expression 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* obj; 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* clazz; 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string name; 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Expression*> arguments; 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<string> exceptions; 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MethodCall(const string& name); 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MethodCall(Expression* obj, const string& name); 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MethodCall(Type* clazz, const string& name); 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MethodCall(Expression* obj, const string& name, int argc, ...); 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MethodCall(Type* clazz, const string& name, int argc, ...); 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~MethodCall(); 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate: 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void init(int n, va_list args); 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Comparison : public Expression 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* lvalue; 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string op; 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* rvalue; 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Comparison(Expression* lvalue, const string& op, Expression* rvalue); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Comparison(); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct NewExpression : public Expression 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* type; 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Expression*> arguments; 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NewExpression(Type* type); 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~NewExpression(); 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct NewArrayExpression : public Expression 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* type; 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* size; 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NewArrayExpression(Type* type, Expression* size); 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~NewArrayExpression(); 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Ternary : public Expression 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* condition; 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* ifpart; 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* elsepart; 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Ternary(); 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Ternary(Expression* condition, Expression* ifpart, Expression* elsepart); 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Ternary(); 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Cast : public Expression 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* type; 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* expression; 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Cast(); 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Cast(Type* type, Expression* expression); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Cast(); 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct VariableDeclaration : public Statement 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable* lvalue; 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* cast; 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* rvalue; 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project VariableDeclaration(Variable* lvalue); 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project VariableDeclaration(Variable* lvalue, Expression* rvalue, Type* cast = NULL); 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~VariableDeclaration(); 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct IfStatement : public Statement 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* expression; 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elseif; 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement(); 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~IfStatement(); 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct ReturnStatement : public Statement 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* expression; 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ReturnStatement(Expression* expression); 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~ReturnStatement(); 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct TryStatement : public Statement 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TryStatement(); 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~TryStatement(); 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct CatchStatement : public Statement 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable* exception; 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CatchStatement(Variable* exception); 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~CatchStatement(); 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct FinallyStatement : public Statement 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FinallyStatement(); 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~FinallyStatement(); 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Case 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<string> cases; 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Case(); 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Case(const string& c); 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Case(); 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct SwitchStatement : public Statement 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* expression; 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Case*> cases; 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SwitchStatement(Expression* expression); 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~SwitchStatement(); 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Method : public ClassElement 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string comment; 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int modifiers; 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* returnType; 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t returnTypeDimension; 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string name; 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Variable*> parameters; 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Type*> exceptions; 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Method(); 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Method(); 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void GatherTypes(set<Type*>* types) const; 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Class : public ClassElement 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project enum { 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CLASS, 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project INTERFACE 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string comment; 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int modifiers; 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int what; // CLASS or INTERFACE 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* type; 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* extends; 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Type*> interfaces; 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<ClassElement*> elements; 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Class(); 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Class(); 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void GatherTypes(set<Type*>* types) const; 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Document 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string comment; 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string package; 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string originalSrc; 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project set<Type*> imports; 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Class*> classes; 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Document(); 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Document(); 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // AIDL_AST_H 348