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