AST.h revision 7db766c3fec2795b08d237f29b972f474983684b
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 57fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato// TODO: also escape the contents. not needed for now 58fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratostruct StringLiteralExpression : public Expression 59fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 60fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato string value; 61fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 62fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato StringLiteralExpression(const string& value); 63fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato virtual ~StringLiteralExpression(); 64fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato virtual void Write(FILE* to); 65fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato}; 66fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Variable : public Expression 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* type; 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string name; 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int dimension; 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable(); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable(Type* type, const string& name); 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable(Type* type, const string& name, int dimension); 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Variable(); 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void GatherTypes(set<Type*>* types) const; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void WriteDeclaration(FILE* to); 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void Write(FILE* to); 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct FieldVariable : public Expression 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* object; 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* clazz; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string name; 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FieldVariable(Expression* object, const string& name); 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FieldVariable(Type* clazz, const string& name); 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~FieldVariable(); 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void Write(FILE* to); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Field : public ClassElement 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string comment; 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int modifiers; 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable *variable; 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string value; 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Field(); 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Field(int modifiers, Variable* variable); 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Field(); 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void GatherTypes(set<Type*>* types) const; 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Statement 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Statement(); 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to) = 0; 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1177db766c3fec2795b08d237f29b972f474983684bJoe Onoratostruct StatementBlock : public Statement 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Statement*> statements; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock(); 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~StatementBlock(); 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void Add(Statement* statement); 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void Add(Expression* expression); 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct ExpressionStatement : public Statement 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* expression; 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ExpressionStatement(Expression* expression); 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~ExpressionStatement(); 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 Assignment : public Expression 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable* lvalue; 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* rvalue; 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* cast; 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Assignment(Variable* lvalue, Expression* rvalue); 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Assignment(Variable* lvalue, Expression* rvalue, Type* cast); 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Assignment(); 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct MethodCall : public Expression 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* obj; 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* clazz; 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string name; 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Expression*> arguments; 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<string> exceptions; 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MethodCall(const string& name); 159fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato MethodCall(const string& name, int argc, ...); 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MethodCall(Expression* obj, const string& name); 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MethodCall(Type* clazz, const string& name); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MethodCall(Expression* obj, const string& name, int argc, ...); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MethodCall(Type* clazz, const string& name, int argc, ...); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~MethodCall(); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate: 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project void init(int n, va_list args); 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Comparison : public Expression 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* lvalue; 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string op; 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* rvalue; 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Comparison(Expression* lvalue, const string& op, Expression* rvalue); 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Comparison(); 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct NewExpression : public Expression 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* type; 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Expression*> arguments; 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NewExpression(Type* type); 188fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NewExpression(Type* type, int argc, ...); 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~NewExpression(); 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 191fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 192fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratoprivate: 193fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato void init(int n, va_list args); 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct NewArrayExpression : public Expression 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* type; 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* size; 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NewArrayExpression(Type* type, Expression* size); 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~NewArrayExpression(); 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Ternary : public Expression 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* condition; 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* ifpart; 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* elsepart; 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Ternary(); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Ternary(Expression* condition, Expression* ifpart, Expression* elsepart); 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Ternary(); 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Cast : public Expression 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* type; 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* expression; 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Cast(); 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Cast(Type* type, Expression* expression); 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Cast(); 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct VariableDeclaration : public Statement 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable* lvalue; 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* cast; 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* rvalue; 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project VariableDeclaration(Variable* lvalue); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project VariableDeclaration(Variable* lvalue, Expression* rvalue, Type* cast = NULL); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~VariableDeclaration(); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct IfStatement : public Statement 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* expression; 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elseif; 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement(); 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~IfStatement(); 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct ReturnStatement : public Statement 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* expression; 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ReturnStatement(Expression* expression); 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~ReturnStatement(); 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct TryStatement : public Statement 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TryStatement(); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~TryStatement(); 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct CatchStatement : public Statement 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Variable* exception; 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CatchStatement(Variable* exception); 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~CatchStatement(); 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct FinallyStatement : public Statement 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FinallyStatement(); 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~FinallyStatement(); 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Case 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<string> cases; 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Case(); 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Case(const string& c); 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Case(); 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct SwitchStatement : public Statement 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Expression* expression; 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Case*> cases; 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SwitchStatement(Expression* expression); 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~SwitchStatement(); 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 30905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 31005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratostruct Break : public Statement 31105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 31205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Break(); 31305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato virtual ~Break(); 31405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato virtual void Write(FILE* to); 31505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato}; 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Method : public ClassElement 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string comment; 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int modifiers; 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* returnType; 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t returnTypeDimension; 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string name; 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Variable*> parameters; 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Type*> exceptions; 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project StatementBlock* statements; 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Method(); 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Method(); 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 Class : public ClassElement 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project enum { 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CLASS, 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project INTERFACE 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string comment; 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int modifiers; 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int what; // CLASS or INTERFACE 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* type; 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* extends; 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Type*> interfaces; 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<ClassElement*> elements; 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Class(); 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Class(); 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void GatherTypes(set<Type*>* types) const; 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstruct Document 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string comment; 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string package; 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string originalSrc; 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project set<Type*> imports; 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Class*> classes; 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Document(); 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual ~Document(); 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project virtual void Write(FILE* to); 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif // AIDL_AST_H 372