1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#ifndef AIDL_TYPE_H 2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#define AIDL_TYPE_H 3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include "AST.h" 5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <string> 6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <vector> 7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiusing namespace std; 9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass Type 11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // kinds 14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski enum { 15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski BUILT_IN, 16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski USERDATA, 17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski INTERFACE, 18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski GENERATED 19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }; 20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // WriteToParcel flags 22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski enum { 23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski PARCELABLE_WRITE_RETURN_VALUE = 0x0001 24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }; 25282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Type(const string& name, int kind, bool canWriteToParcel, 27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool canWriteToRpcData, bool canBeOut); 28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Type(const string& package, const string& name, 29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int kind, bool canWriteToParcel, bool canWriteToRpcData, bool canBeOut, 30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& declFile = "", int declLine = -1); 31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual ~Type(); 32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski inline string Package() const { return m_package; } 34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski inline string Name() const { return m_name; } 35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski inline string QualifiedName() const { return m_qualifiedName; } 36282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski inline int Kind() const { return m_kind; } 37282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski inline string DeclFile() const { return m_declFile; } 38282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski inline int DeclLine() const { return m_declLine; } 39282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski inline bool CanWriteToParcel() const { return m_canWriteToParcel; } 40282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski inline bool CanWriteToRpcData() const { return m_canWriteToRpcData; } 41282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski inline bool CanBeOutParameter() const { return m_canBeOut; } 42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string ImportType() const; 44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string CreatorName() const; 45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string RpcCreatorName() const; 46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string InstantiableName() const; 47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 48282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 49282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 50282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadFromParcel(StatementBlock* addTo, Variable* v, 53282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual bool CanBeArray() const; 56282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 57282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteArrayToParcel(StatementBlock* addTo, Variable* v, 58282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 59282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v, 62282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 63282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 64282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 65282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, int flags); 66282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 67282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, Variable** cl); 68282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 69282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprotected: 70282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void SetQualifiedName(const string& qualified); 71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Expression* BuildWriteToParcelFlags(int flags); 72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprivate: 74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Type(); 75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Type(const Type&); 76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_package; 78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_name; 79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_qualifiedName; 80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_declFile; 81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int m_declLine; 82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int m_kind; 83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool m_canWriteToParcel; 84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool m_canWriteToRpcData; 85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool m_canBeOut; 86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass BasicType : public Type 89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski BasicType(const string& name, 92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& marshallParcel, 93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& unmarshallParcel, 94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& writeArrayParcel, 95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& createArrayParcel, 96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& readArrayParcel, 97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& marshallRpc, 98282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& unmarshallRpc, 99282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& writeArrayRpc, 100282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& createArrayRpc, 101282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& readArrayRpc); 102282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 103282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 104282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 105282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 106282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 107282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 108282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual bool CanBeArray() const; 109282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 110282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteArrayToParcel(StatementBlock* addTo, Variable* v, 111282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 112282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 113282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 114282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v, 115282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 116282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 117282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 118282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, int flags); 119282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 120282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, Variable** cl); 121282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 122282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprivate: 123282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_marshallParcel; 124282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_unmarshallParcel; 125282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_writeArrayParcel; 126282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_createArrayParcel; 127282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_readArrayParcel; 128282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_marshallRpc; 129282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_unmarshallRpc; 130282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_writeArrayRpc; 131282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_createArrayRpc; 132282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_readArrayRpc; 133282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 134282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 135282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass BooleanType : public Type 136282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 137282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 138282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski BooleanType(); 139282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 140282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 141282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 142282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 143282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 144282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 145282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual bool CanBeArray() const; 146282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 147282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteArrayToParcel(StatementBlock* addTo, Variable* v, 148282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 149282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 150282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 151282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v, 152282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 153282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 154282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 155282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, int flags); 156282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 157282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, Variable** cl); 158282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 159282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 160282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass CharType : public Type 161282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 162282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 163282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski CharType(); 164282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 165282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 166282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 167282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 168282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 169282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 170282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual bool CanBeArray() const; 171282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 172282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteArrayToParcel(StatementBlock* addTo, Variable* v, 173282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 174282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 175282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 176282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v, 177282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 178282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 179282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 180282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, int flags); 181282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 182282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, Variable** cl); 183282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 184282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 185282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 186282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass StringType : public Type 187282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 188282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 189282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski StringType(); 190282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 191282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string CreatorName() const; 192282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 193282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 194282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 195282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 196282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 197282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 198282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual bool CanBeArray() const; 199282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 200282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteArrayToParcel(StatementBlock* addTo, Variable* v, 201282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 202282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 203282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 204282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v, 205282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 206282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 207282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 208282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, int flags); 209282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 210282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, Variable** cl); 211282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 212282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 213282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass CharSequenceType : public Type 214282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 215282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 216282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski CharSequenceType(); 217282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 218282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string CreatorName() const; 219282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 220282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 221282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 222282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 223282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 224282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 225282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 226282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass RemoteExceptionType : public Type 227282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 228282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 229282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski RemoteExceptionType(); 230282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 231282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 232282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 233282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 234282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 235282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 236282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 237282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass RuntimeExceptionType : public Type 238282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 239282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 240282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski RuntimeExceptionType(); 241282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 242282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 243282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 244282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 245282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 246282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 247282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 248282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass IBinderType : public Type 249282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 250282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 251282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski IBinderType(); 252282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 253282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 254282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 255282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 256282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 257282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 258282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteArrayToParcel(StatementBlock* addTo, Variable* v, 259282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 260282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 261282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 262282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v, 263282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 264282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 265282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 266282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass IInterfaceType : public Type 267282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 268282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 269282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski IInterfaceType(); 270282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 271282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 272282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 273282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 274282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 275282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 276282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 277282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass BinderType : public Type 278282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 279282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 280282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski BinderType(); 281282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 282282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 283282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 284282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 285282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 286282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 287282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 288282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass BinderProxyType : public Type 289282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 290282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 291282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski BinderProxyType(); 292282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 293282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 294282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 295282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 296282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 297282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 298282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 299282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass ParcelType : public Type 300282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 301282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 302282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ParcelType(); 303282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 304282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 305282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 306282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 307282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 308282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 309282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 310282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass ParcelableInterfaceType : public Type 311282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 312282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 313282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ParcelableInterfaceType(); 314282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 315282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 316282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 317282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 318282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 319282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 320282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 321282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass MapType : public Type 322282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 323282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 324282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski MapType(); 325282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 326282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 327282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 328282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 329282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 330282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadFromParcel(StatementBlock* addTo, Variable* v, 331282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 332282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 333282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 334282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass ListType : public Type 335282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 336282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 337282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ListType(); 338282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 339282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string InstantiableName() const; 340282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 341282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 342282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 343282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 344282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 345282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadFromParcel(StatementBlock* addTo, Variable* v, 346282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 347282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 348282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 349282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, int flags); 350282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 351282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, Variable** cl); 352282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 353282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 354282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass UserDataType : public Type 355282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 356282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 357282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski UserDataType(const string& package, const string& name, 358282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool builtIn, bool canWriteToParcel, bool canWriteToRpcData, 359282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& declFile = "", int declLine = -1); 360282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 361282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string CreatorName() const; 362282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string RpcCreatorName() const; 363282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 364282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 365282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 366282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 367282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 368282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadFromParcel(StatementBlock* addTo, Variable* v, 369282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 370282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 371282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual bool CanBeArray() const; 372282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 373282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteArrayToParcel(StatementBlock* addTo, Variable* v, 374282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 375282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 376282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 377282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadArrayFromParcel(StatementBlock* addTo, Variable* v, 378282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 379282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 380282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 381282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, int flags); 382282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 383282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, Variable** cl); 384282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 385282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 386282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass InterfaceType : public Type 387282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 388282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 389282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski InterfaceType(const string& package, const string& name, 390282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool builtIn, bool oneway, 391282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const string& declFile, int declLine); 392282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 393282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool OneWay() const; 394282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 395282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 396282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 397282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 398282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 399282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 400282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprivate: 401282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski bool m_oneway; 402282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 403282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 404282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 405282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass GenericType : public Type 406282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 407282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 408282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski GenericType(const string& package, const string& name, 409282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const vector<Type*>& args); 410282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 411282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const vector<Type*>& GenericArgumentTypes() const; 412282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string GenericArguments() const; 413282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 414282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string ImportType() const; 415282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 416282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 417282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 418282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 419282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 420282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadFromParcel(StatementBlock* addTo, Variable* v, 421282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 422282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 423282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprivate: 424282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_genericArguments; 425282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_importName; 426282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski vector<Type*> m_args; 427282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 428282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 429282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass RpcDataType : public UserDataType 430282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 431282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 432282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski RpcDataType(); 433282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 434282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 435282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, int flags); 436282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 437282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, Variable** cl); 438282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 439282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 440282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass ClassLoaderType : public Type 441282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 442282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 443282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ClassLoaderType(); 444282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 445282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 446282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass GenericListType : public GenericType 447282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 448282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 449282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski GenericListType(const string& package, const string& name, 450282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const vector<Type*>& args); 451282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 452282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string CreatorName() const; 453282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual string InstantiableName() const; 454282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 455282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToParcel(StatementBlock* addTo, Variable* v, 456282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, int flags); 457282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromParcel(StatementBlock* addTo, Variable* v, 458282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 459282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void ReadFromParcel(StatementBlock* addTo, Variable* v, 460282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* parcel, Variable** cl); 461282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 462282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 463282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, int flags); 464282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski virtual void CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 465282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Variable* data, Variable** cl); 466282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 467282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprivate: 468282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string m_creator; 469282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 470282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 471282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass Namespace 472282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 473282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic: 474282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Namespace(); 475282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski ~Namespace(); 476282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void Add(Type* type); 477282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 478282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // args is the number of template types (what is this called?) 479282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void AddGenericType(const string& package, const string& name, int args); 480282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 481282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // lookup a specific class name 482282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Type* Find(const string& name) const; 483282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Type* Find(const char* package, const char* name) const; 484282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 485282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // try to search by either a full name or a partial name 486282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Type* Search(const string& name); 487282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 488282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski void Dump() const; 489282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 490282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprivate: 491282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski struct Generic { 492282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string package; 493282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string name; 494282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski string qualified; 495282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int args; 496282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }; 497282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 498282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const Generic* search_generic(const string& name) const; 499282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 500282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski vector<Type*> m_types; 501282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski vector<Generic> m_generics; 502282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 503282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 504282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Namespace NAMES; 505282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 506282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* VOID_TYPE; 507282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* BOOLEAN_TYPE; 508282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* BYTE_TYPE; 509282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* CHAR_TYPE; 510282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* INT_TYPE; 511282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* LONG_TYPE; 512282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* FLOAT_TYPE; 513282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* DOUBLE_TYPE; 514282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* OBJECT_TYPE; 515282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* STRING_TYPE; 516282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* CHAR_SEQUENCE_TYPE; 517282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* TEXT_UTILS_TYPE; 518282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* REMOTE_EXCEPTION_TYPE; 519282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* RUNTIME_EXCEPTION_TYPE; 520282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* IBINDER_TYPE; 521282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* IINTERFACE_TYPE; 522282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* BINDER_NATIVE_TYPE; 523282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* BINDER_PROXY_TYPE; 524282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* PARCEL_TYPE; 525282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* PARCELABLE_INTERFACE_TYPE; 526282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 527282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* CONTEXT_TYPE; 528282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 529282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* RPC_DATA_TYPE; 530282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* RPC_ERROR_TYPE; 531282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* RPC_CONTEXT_TYPE; 532282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Type* EVENT_FAKE_TYPE; 533282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 534282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Expression* NULL_VALUE; 535282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Expression* THIS_VALUE; 536282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Expression* SUPER_VALUE; 537282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Expression* TRUE_VALUE; 538282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiextern Expression* FALSE_VALUE; 539282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 540282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskivoid register_base_types(); 541282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 542282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif // AIDL_TYPE_H 543