19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "Type.h" 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3ea6d2197baff71a45f2bf95d3efbdef501cca76cDavid 'Digit' Turner#include <sys/types.h> 4ea6d2197baff71a45f2bf95d3efbdef501cca76cDavid 'Digit' Turner 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace NAMES; 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* VOID_TYPE; 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* BOOLEAN_TYPE; 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* BYTE_TYPE; 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* CHAR_TYPE; 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* INT_TYPE; 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* LONG_TYPE; 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* FLOAT_TYPE; 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* DOUBLE_TYPE; 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* STRING_TYPE; 16fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* OBJECT_TYPE; 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* CHAR_SEQUENCE_TYPE; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* TEXT_UTILS_TYPE; 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* REMOTE_EXCEPTION_TYPE; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* RUNTIME_EXCEPTION_TYPE; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* IBINDER_TYPE; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* IINTERFACE_TYPE; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* BINDER_NATIVE_TYPE; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* BINDER_PROXY_TYPE; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* PARCEL_TYPE; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* PARCELABLE_INTERFACE_TYPE; 27fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* CONTEXT_TYPE; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* MAP_TYPE; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* LIST_TYPE; 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* CLASSLOADER_TYPE; 31fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* RPC_DATA_TYPE; 32fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* RPC_ERROR_TYPE; 33e24dbeafe64278408b3342fcb77756bc7d091791Joe OnoratoType* EVENT_FAKE_TYPE; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* NULL_VALUE; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* THIS_VALUE; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* SUPER_VALUE; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* TRUE_VALUE; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* FALSE_VALUE; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectregister_base_types() 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato VOID_TYPE = new BasicType("void", 4505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "XXX", "XXX", "XXX", "XXX", "XXX", 4605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "XXX", "XXX", "XXX", "XXX", "XXX"); 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(VOID_TYPE); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BOOLEAN_TYPE = new BooleanType(); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BOOLEAN_TYPE); 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato BYTE_TYPE = new BasicType("byte", 5305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeByte", "readByte", "writeByteArray", "createByteArray", "readByteArray", 5405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putByte", "getByte", "putByteArray", "createByteArray", "getByteArray"); 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BYTE_TYPE); 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CHAR_TYPE = new CharType(); 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(CHAR_TYPE); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato INT_TYPE = new BasicType("int", 6105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeInt", "readInt", "writeIntArray", "createIntArray", "readIntArray", 6205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putInteger", "getInteger", "putIntegerArray", "createIntegerArray", "getIntegerArray"); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(INT_TYPE); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato LONG_TYPE = new BasicType("long", 6605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeLong", "readLong", "writeLongArray", "createLongArray", "readLongArray", 6705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putLong", "getLong", "putLongArray", "createLongArray", "getLongArray"); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(LONG_TYPE); 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato FLOAT_TYPE = new BasicType("float", 7105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeFloat", "readFloat", "writeFloatArray", "createFloatArray", "readFloatArray", 7205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putFloat", "getFloat", "putFloatArray", "createFloatArray", "getFloatArray"); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(FLOAT_TYPE); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato DOUBLE_TYPE = new BasicType("double", 7605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeDouble", "readDouble", "writeDoubleArray", "createDoubleArray", "readDoubleArray", 7705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putDouble", "getDouble", "putDoubleArray", "createDoubleArray", "getDoubleArray"); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(DOUBLE_TYPE); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project STRING_TYPE = new StringType(); 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(STRING_TYPE); 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 837db766c3fec2795b08d237f29b972f474983684bJoe Onorato OBJECT_TYPE = new Type("java.lang", "Object", Type::BUILT_IN, false, false, false); 84fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(OBJECT_TYPE); 85fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CHAR_SEQUENCE_TYPE = new CharSequenceType(); 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(CHAR_SEQUENCE_TYPE); 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MAP_TYPE = new MapType(); 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(MAP_TYPE); 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LIST_TYPE = new ListType(); 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(LIST_TYPE); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 957db766c3fec2795b08d237f29b972f474983684bJoe Onorato TEXT_UTILS_TYPE = new Type("android.text", "TextUtils", Type::BUILT_IN, false, false, false); 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(TEXT_UTILS_TYPE); 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project REMOTE_EXCEPTION_TYPE = new RemoteExceptionType(); 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(REMOTE_EXCEPTION_TYPE); 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RUNTIME_EXCEPTION_TYPE = new RuntimeExceptionType(); 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(RUNTIME_EXCEPTION_TYPE); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBINDER_TYPE = new IBinderType(); 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(IBINDER_TYPE); 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IINTERFACE_TYPE = new IInterfaceType(); 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(IINTERFACE_TYPE); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BINDER_NATIVE_TYPE = new BinderType(); 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BINDER_NATIVE_TYPE); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BINDER_PROXY_TYPE = new BinderProxyType(); 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BINDER_PROXY_TYPE); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PARCEL_TYPE = new ParcelType(); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(PARCEL_TYPE); 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PARCELABLE_INTERFACE_TYPE = new ParcelableInterfaceType(); 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(PARCELABLE_INTERFACE_TYPE); 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1227db766c3fec2795b08d237f29b972f474983684bJoe Onorato CONTEXT_TYPE = new Type("android.content", "Context", Type::BUILT_IN, false, false, false); 123fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(CONTEXT_TYPE); 124fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 1251eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato RPC_DATA_TYPE = new RpcDataType(); 126fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_DATA_TYPE); 127fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 12817a452f00c188173f48d0d490d98750cbb4529caMike Lockwood RPC_ERROR_TYPE = new UserDataType("android.support.place.rpc", "RpcError", 129fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato true, __FILE__, __LINE__); 130fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_ERROR_TYPE); 131fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 132e24dbeafe64278408b3342fcb77756bc7d091791Joe Onorato EVENT_FAKE_TYPE = new Type("event", Type::BUILT_IN, false, false, false); 133e24dbeafe64278408b3342fcb77756bc7d091791Joe Onorato NAMES.Add(EVENT_FAKE_TYPE); 134fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CLASSLOADER_TYPE = new ClassLoaderType(); 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(CLASSLOADER_TYPE); 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NULL_VALUE = new LiteralExpression("null"); 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project THIS_VALUE = new LiteralExpression("this"); 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SUPER_VALUE = new LiteralExpression("super"); 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TRUE_VALUE = new LiteralExpression("true"); 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FALSE_VALUE = new LiteralExpression("false"); 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.AddGenericType("java.util", "List", 1); 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.AddGenericType("java.util", "Map", 2); 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic Type* 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectmake_generic_type(const string& package, const string& name, 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const vector<Type*>& args) 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (package == "java.util" && name == "List") { 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new GenericListType("java.util", "List", args); 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //return new GenericType(package, name, args); 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1617db766c3fec2795b08d237f29b972f474983684bJoe OnoratoType::Type(const string& name, int kind, bool canWriteToParcel, bool canWriteToRpcData, 1627db766c3fec2795b08d237f29b972f474983684bJoe Onorato bool canBeOut) 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :m_package(), 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_name(name), 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declFile(""), 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declLine(-1), 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_kind(kind), 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canWriteToParcel(canWriteToParcel), 1697db766c3fec2795b08d237f29b972f474983684bJoe Onorato m_canWriteToRpcData(canWriteToRpcData), 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canBeOut(canBeOut) 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName = name; 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::Type(const string& package, const string& name, 1767db766c3fec2795b08d237f29b972f474983684bJoe Onorato int kind, bool canWriteToParcel, bool canWriteToRpcData, 1777db766c3fec2795b08d237f29b972f474983684bJoe Onorato bool canBeOut, const string& declFile, int declLine) 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :m_package(package), 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_name(name), 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declFile(declFile), 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declLine(declLine), 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_kind(kind), 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canWriteToParcel(canWriteToParcel), 1847db766c3fec2795b08d237f29b972f474983684bJoe Onorato m_canWriteToRpcData(canWriteToRpcData), 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canBeOut(canBeOut) 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (package.length() > 0) { 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName = package; 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName += '.'; 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName += name; 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::~Type() 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::CanBeArray() const 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::ImportType() const 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_qualifiedName; 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::CreatorName() const 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ""; 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 21779824179b8ceb77d4ddb392a7c104e873d61ccc8Joe OnoratoType::RpcCreatorName() const 21879824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato{ 21979824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato return ""; 22079824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato} 22179824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato 22279824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onoratostring 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::InstantiableName() const 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return QualifiedName(); 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%sn", 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* WriteToParcel error " 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 239b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* CreateFromParcel error " 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 248b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesType::ReadFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* ReadFromParcel error " 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* WriteArrayToParcel error " 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 267b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* CreateArrayFromParcel error " 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 276b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* ReadArrayFromParcel error " 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 285fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 286fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable* data, int flags) 287fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 28805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 289fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato __FILE__, __LINE__, m_qualifiedName.c_str()); 290fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new LiteralExpression("/* WriteToRpcData error " 291fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato + m_qualifiedName + " */")); 292fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 293fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 294fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 295fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 296fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable** cl) 297fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 29805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 299fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato __FILE__, __LINE__, m_qualifiedName.c_str()); 300fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new LiteralExpression("/* ReadFromRpcData error " 301fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato + m_qualifiedName + " */")); 302fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 303fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 304fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::SetQualifiedName(const string& qualified) 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName = qualified; 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::BuildWriteToParcelFlags(int flags) 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (flags == 0) { 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new LiteralExpression("0"); 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((flags&PARCELABLE_WRITE_RETURN_VALUE) != 0) { 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new FieldVariable(PARCELABLE_INTERFACE_TYPE, 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "PARCELABLE_WRITE_RETURN_VALUE"); 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new LiteralExpression("0"); 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 32505ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBasicType::BasicType(const string& name, const string& marshallParcel, 32605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& unmarshallParcel, const string& writeArrayParcel, 32705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& createArrayParcel, const string& readArrayParcel, 32805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& marshallRpc, const string& unmarshallRpc, 32905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& writeArrayRpc, const string& createArrayRpc, const string& readArrayRpc) 3307db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type(name, BUILT_IN, true, true, false), 33105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_marshallParcel(marshallParcel), 33205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_unmarshallParcel(unmarshallParcel), 33305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_writeArrayParcel(writeArrayParcel), 33405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_createArrayParcel(createArrayParcel), 33505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_readArrayParcel(readArrayParcel), 33605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_marshallRpc(marshallRpc), 33705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_unmarshallRpc(unmarshallRpc), 33805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_writeArrayRpc(writeArrayRpc), 33905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_createArrayRpc(createArrayRpc), 34005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_readArrayRpc(readArrayRpc) 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 34705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(parcel, m_marshallParcel, 1, v)); 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 351b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBasicType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 35305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(parcel, m_unmarshallParcel))); 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::CanBeArray() const 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 36505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(parcel, m_writeArrayParcel, 1, v)); 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 370b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 37205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(parcel, m_createArrayParcel))); 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 376b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBasicType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 37805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(parcel, m_readArrayParcel, 1, v)); 37905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 38005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 38105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 38205ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBasicType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 38305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 38405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 38505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, m_marshallRpc, 2, k, v)); 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 38805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 38905ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBasicType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 39005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 39105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 39205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, m_unmarshallRpc, 1, k))); 39305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::BooleanType() 3987db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("boolean", BUILT_IN, true, true, false) 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeInt", 1, 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Ternary(v, new LiteralExpression("1"), 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("0")))); 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 411b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBooleanType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new Comparison(new LiteralExpression("0"), 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "!=", new MethodCall(parcel, "readInt")))); 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::CanBeArray() const 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeBooleanArray", 1, v)); 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 431b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createBooleanArray"))); 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 437b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBooleanType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readBooleanArray", 1, v)); 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 44205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 44305ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBooleanType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 44405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 44505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 44605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putBoolean", 2, k, v)); 44705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 44805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 44905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 45005ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBooleanType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 45105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 45205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 45305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getBoolean", 1, k))); 45405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::CharType() 4597db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("char", BUILT_IN, true, true, false) 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeInt", 1, 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Cast(INT_TYPE, v))); 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 471b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesCharType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "readInt"), this)); 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::CanBeArray() const 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeCharArray", 1, v)); 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 490b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createCharArray"))); 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 496b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesCharType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readCharArray", 1, v)); 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 50105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 50205ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoCharType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 50305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 50405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 50505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putChar", 2, k, v)); 50605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 50705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 50805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 50905ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoCharType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 51005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 51105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 51205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getChar", 1, k))); 51305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 51405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::StringType() 5187db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.lang", "String", BUILT_IN, true, true, false) 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::CreatorName() const 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "android.os.Parcel.STRING_CREATOR"; 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeString", 1, v)); 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 535b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesStringType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "readString"))); 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::CanBeArray() const 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStringArray", 1, v)); 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 554b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createStringArray"))); 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 560b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesStringType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readStringArray", 1, v)); 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 565fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 566fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoStringType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 567fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable* data, int flags) 568fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 569fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new MethodCall(data, "putString", 2, k, v)); 570fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 571fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 572fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 573fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoStringType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 574fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable* data, Variable**) 575fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 576fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getString", 1, k))); 577fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 578fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::CharSequenceType() 5827db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.lang", "CharSequence", BUILT_IN, true, true, false) 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::CreatorName() const 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "android.os.Parcel.STRING_CREATOR"; 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (v != null) { 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(1); 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v.writeToParcel(parcel); 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(0); 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new MethodCall(parcel, "writeInt", 1, 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("0"))); 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement; 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(v, "!=", NULL_VALUE); 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(parcel, "writeInt", 1, 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("1"))); 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(TEXT_UTILS_TYPE, "writeToParcel", 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3, v, parcel, BuildWriteToParcelFlags(flags))); 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::CreateFromParcel(StatementBlock* addTo, Variable* v, 617b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (0 != parcel.readInt()) { 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = TextUtils.createFromParcel(parcel) 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = null; 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new Assignment(v, NULL_VALUE)); 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement(); 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(new LiteralExpression("0"), "!=", 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readInt")); 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new Assignment(v, 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(TEXT_UTILS_TYPE, 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "CHAR_SEQUENCE_CREATOR.createFromParcel", 1, parcel))); 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRemoteExceptionType::RemoteExceptionType() 6427db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "RemoteException", BUILT_IN, false, false, false) 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRemoteExceptionType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 653b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesRemoteExceptionType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRuntimeExceptionType::RuntimeExceptionType() 6617db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.lang", "RuntimeException", BUILT_IN, false, false, false) 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRuntimeExceptionType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 672b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesRuntimeExceptionType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::IBinderType() 6817db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "IBinder", BUILT_IN, true, false, false) 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStrongBinder", 1, v)); 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 692b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesIBinderType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "readStrongBinder"))); 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeBinderArray", 1, v)); 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 705b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createBinderArray"))); 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 711b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesIBinderType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readBinderArray", 1, v)); 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIInterfaceType::IInterfaceType() 7207db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "IInterface", BUILT_IN, false, false, false) 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIInterfaceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 731b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesIInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderType::BinderType() 7407db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "Binder", BUILT_IN, false, false, false) 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderType::CreateFromParcel(StatementBlock* addTo, Variable* v, 752b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderProxyType::BinderProxyType() 7617db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "BinderProxy", BUILT_IN, false, false, false) 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderProxyType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderProxyType::CreateFromParcel(StatementBlock* addTo, Variable* v, 773b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelType::ParcelType() 7827db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "Parcel", BUILT_IN, false, false, false) 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 793b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesParcelType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableInterfaceType::ParcelableInterfaceType() 8017db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "Parcelable", BUILT_IN, false, false, false) 8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableInterfaceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 812b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesParcelableInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectMapType::MapType() 8207db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.util", "Map", BUILT_IN, true, false, true) 8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectMapType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeMap", 1, v)); 8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 830b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughesstatic void EnsureClassLoader(StatementBlock* addTo, Variable** cl) 831b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes{ 832b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes // We don't want to look up the class loader once for every 833b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes // collection argument, so ensure we do it at most once per method. 834b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes if (*cl == NULL) { 835b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes *cl = new Variable(CLASSLOADER_TYPE, "cl"); 836b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new VariableDeclaration(*cl, 837b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes new LiteralExpression("this.getClass().getClassLoader()"), 838b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes CLASSLOADER_TYPE)); 839b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes } 840b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes} 841b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes 8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 843b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesMapType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable** cl) 8449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 845b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 846b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new Assignment(v, new MethodCall(parcel, "readHashMap", 1, *cl))); 8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 85005ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoMapType::ReadFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable** cl) 8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 852b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 853b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new MethodCall(parcel, "readMap", 2, v, *cl)); 8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::ListType() 8607db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.util", "List", BUILT_IN, true, true, true) 8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::InstantiableName() const 8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "java.util.ArrayList"; 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeList", 1, v)); 8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 877b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesListType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable** cl) 8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 879b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 880b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new Assignment(v, new MethodCall(parcel, "readArrayList", 1, *cl))); 8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::ReadFromParcel(StatementBlock* addTo, Variable* v, 885b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable** cl) 8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 887b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 888b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new MethodCall(parcel, "readList", 2, v, *cl)); 8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 89105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 89205ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoListType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 89305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 89405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 89505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putList", 2, k, v)); 89605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 89705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 89805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 89905ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 90005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 90105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 90205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getList", 1, k))); 90305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 907a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::UserDataType(const string& package, const string& name, 908a1c6d909c22e196ef62ddb065fc7821deda8a602Joe Onorato bool builtIn, bool canWriteToParcel, bool canWriteToRpcData, 909a1c6d909c22e196ef62ddb065fc7821deda8a602Joe Onorato const string& declFile, int declLine) 910a1c6d909c22e196ef62ddb065fc7821deda8a602Joe Onorato :Type(package, name, builtIn ? BUILT_IN : USERDATA, canWriteToParcel, canWriteToRpcData, 911a1c6d909c22e196ef62ddb065fc7821deda8a602Joe Onorato true, declFile, declLine) 9126c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato{ 9136c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato} 9146c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato 9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 916a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::CreatorName() const 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return QualifiedName() + ".CREATOR"; 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 92179824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onoratostring 92279824179b8ceb77d4ddb392a7c104e873d61ccc8Joe OnoratoUserDataType::RpcCreatorName() const 92379824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato{ 92479824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato return QualifiedName() + ".RPC_CREATOR"; 92579824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato} 92679824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato 9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 928a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (v != null) { 9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(1); 9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v.writeToParcel(parcel); 9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(0); 9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new MethodCall(parcel, "writeInt", 1, 9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("0"))); 9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement; 9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(v, "!=", NULL_VALUE); 9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(parcel, "writeInt", 1, 9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("1"))); 9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(v, "writeToParcel", 2, 9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project parcel, BuildWriteToParcelFlags(flags))); 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 951a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (0 != parcel.readInt()) { 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = CLASS.CREATOR.createFromParcel(parcel) 9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = null; 9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new Assignment(v, NULL_VALUE)); 9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement(); 9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(new LiteralExpression("0"), "!=", 9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readInt")); 9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new Assignment(v, 9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(v->type, "CREATOR.createFromParcel", 1, parcel))); 9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 972a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::ReadFromParcel(StatementBlock* addTo, Variable* v, 973b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // TODO: really, we don't need to have this extra check, but we 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // don't have two separate marshalling code paths 9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (0 != parcel.readInt()) { 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v.readFromParcel(parcel) 9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement(); 9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(new LiteralExpression("0"), "!=", 9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readInt")); 9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(v, "readFromParcel", 1, parcel)); 9849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 9859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 988a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::CanBeArray() const 9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 994a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 9959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeTypedArray", 2, v, 9979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BuildWriteToParcelFlags(flags))); 9989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1001a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 1002b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string creator = v->type->QualifiedName() + ".CREATOR"; 10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, 10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "createTypedArray", 1, new LiteralExpression(creator)))); 10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1010a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string creator = v->type->QualifiedName() + ".CREATOR"; 10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readTypedArray", 2, 10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v, new LiteralExpression(creator))); 10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10177db766c3fec2795b08d237f29b972f474983684bJoe Onoratovoid 1018a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 10197db766c3fec2795b08d237f29b972f474983684bJoe Onorato Variable* data, int flags) 10207db766c3fec2795b08d237f29b972f474983684bJoe Onorato{ 1021c3a7bb6563288373b4b6531ab5c8abfc3d048a77Joe Onorato // data.putFlattenable(k, v); 1022c3a7bb6563288373b4b6531ab5c8abfc3d048a77Joe Onorato addTo->Add(new MethodCall(data, "putFlattenable", 2, k, v)); 10237db766c3fec2795b08d237f29b972f474983684bJoe Onorato} 10247db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10257db766c3fec2795b08d237f29b972f474983684bJoe Onoratovoid 1026a1c6d909c22e196ef62ddb065fc7821deda8a602Joe OnoratoUserDataType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 10277db766c3fec2795b08d237f29b972f474983684bJoe Onorato Variable* data, Variable** cl) 10287db766c3fec2795b08d237f29b972f474983684bJoe Onorato{ 1029c3a7bb6563288373b4b6531ab5c8abfc3d048a77Joe Onorato // data.getFlattenable(k, CLASS.RPC_CREATOR); 1030c3a7bb6563288373b4b6531ab5c8abfc3d048a77Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getFlattenable", 2, k, 1031c3a7bb6563288373b4b6531ab5c8abfc3d048a77Joe Onorato new FieldVariable(v->type, "RPC_CREATOR")))); 10327db766c3fec2795b08d237f29b972f474983684bJoe Onorato} 10337db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectInterfaceType::InterfaceType(const string& package, const string& name, 10379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool builtIn, bool oneway, 10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const string& declFile, int declLine) 10397db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type(package, name, builtIn ? BUILT_IN : INTERFACE, true, false, false, 10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project declFile, declLine) 10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ,m_oneway(oneway) 10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectInterfaceType::OneWay() const 10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_oneway; 10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectInterfaceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 10539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeStrongBinder(v != null ? v.asBinder() : null); 10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStrongBinder", 1, 10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Ternary( 10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Comparison(v, "!=", NULL_VALUE), 10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(v, "asBinder"), 10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NULL_VALUE))); 10609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1063b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = Interface.asInterface(parcel.readStrongBinder()); 10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string type = v->type->QualifiedName(); 10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project type += ".Stub"; 10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall( NAMES.Find(type), "asInterface", 1, 10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readStrongBinder")))); 10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 10759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::GenericType(const string& package, const string& name, 10779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const vector<Type*>& args) 10787db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type(package, name, BUILT_IN, true, true, true) 10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_args = args; 10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_importName = package + '.' + name; 10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string gen = "<"; 10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = args.size(); 10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = args[i]; 10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gen += t->QualifiedName(); 10899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (i != N-1) { 10909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gen += ','; 10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gen += '>'; 10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_genericArguments = gen; 10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SetQualifiedName(m_importName + gen); 10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 109805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratoconst vector<Type*>& 109905ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoGenericType::GenericArgumentTypes() const 110005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 110105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato return m_args; 110205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 110305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::GenericArguments() const 11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_genericArguments; 11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::ImportType() const 11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_importName; 11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 11189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "implement GenericType::WriteToParcel\n"); 11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1123b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesGenericType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "implement GenericType::CreateFromParcel\n"); 11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::ReadFromParcel(StatementBlock* addTo, Variable* v, 1130b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "implement GenericType::ReadFromParcel\n"); 11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::GenericListType(const string& package, const string& name, 11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const vector<Type*>& args) 11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :GenericType(package, name, args), 11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_creator(args[0]->CreatorName()) 11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::CreatorName() const 11479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "android.os.Parcel.arrayListCreator"; 11499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::InstantiableName() const 11539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "java.util.ArrayList" + GenericArguments(); 11559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 11589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 11599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_creator == STRING_TYPE->CreatorName()) { 11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStringList", 1, v)); 11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (m_creator == IBINDER_TYPE->CreatorName()) { 11639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeBinderList", 1, v)); 11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeTypedListXX(arg); 11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeTypedList", 1, v)); 11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1171b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesGenericListType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 11729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_creator == STRING_TYPE->CreatorName()) { 11749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 11759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "createStringArrayList", 0))); 11769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (m_creator == IBINDER_TYPE->CreatorName()) { 11779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "createBinderArrayList", 0))); 11799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 11809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = _data.readTypedArrayList(XXX.creator); 11819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 11829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "createTypedArrayList", 1, 11839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression(m_creator)))); 11849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::ReadFromParcel(StatementBlock* addTo, Variable* v, 1189b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_creator == STRING_TYPE->CreatorName()) { 11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readStringList", 1, v)); 11939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (m_creator == IBINDER_TYPE->CreatorName()) { 11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readBinderList", 1, v)); 11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = _data.readTypedList(v, XXX.creator); 11979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readTypedList", 2, 11989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v, 11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression(m_creator))); 12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 120305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 120405ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoGenericListType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 120505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 120605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 120779824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato Type* generic = GenericArgumentTypes()[0]; 120879824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato if (generic == RPC_DATA_TYPE) { 120979824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato addTo->Add(new MethodCall(data, "putRpcDataList", 2, k, v)); 121079824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato } else if (generic->RpcCreatorName() != "") { 121179824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato addTo->Add(new MethodCall(data, "putFlattenableList", 2, k, v)); 121279824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato } else { 121379824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato addTo->Add(new MethodCall(data, "putList", 2, k, v)); 121479824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato } 121505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 121605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 121705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 121805ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoGenericListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 121905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, Variable** cl) 122005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 122179824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato Type* generic = GenericArgumentTypes()[0]; 122279824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato if (generic == RPC_DATA_TYPE) { 122379824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getRpcDataList", 2, k))); 122479824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato } else if (generic->RpcCreatorName() != "") { 122579824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getFlattenableList", 2, k, 122679824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato new LiteralExpression(generic->RpcCreatorName())))); 122779824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato } else { 122879824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato string classArg = GenericArgumentTypes()[0]->QualifiedName(); 122979824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato classArg += ".class"; 123079824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getList", 2, k, 123179824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato new LiteralExpression(classArg)))); 123279824179b8ceb77d4ddb392a7c104e873d61ccc8Joe Onorato } 123305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 123405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 12351eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12361eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato// ================================================================ 12371eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12381eb720446dec3248ba102c4635bf113d450d0d73Joe OnoratoRpcDataType::RpcDataType() 123917a452f00c188173f48d0d490d98750cbb4529caMike Lockwood :UserDataType("android.support.place.rpc", "RpcData", true, true, true) 12401eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato{ 12411eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato} 12421eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12431eb720446dec3248ba102c4635bf113d450d0d73Joe Onoratovoid 12441eb720446dec3248ba102c4635bf113d450d0d73Joe OnoratoRpcDataType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 12451eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato Variable* data, int flags) 12461eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato{ 12471eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato addTo->Add(new MethodCall(data, "putRpcData", 2, k, v)); 12481eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato} 12491eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12501eb720446dec3248ba102c4635bf113d450d0d73Joe Onoratovoid 12511eb720446dec3248ba102c4635bf113d450d0d73Joe OnoratoRpcDataType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 12521eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato Variable** cl) 12531eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato{ 12541eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getRpcData", 1, k))); 12551eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato} 12561eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12571eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 12599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectClassLoaderType::ClassLoaderType() 12617db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.lang", "ClassLoader", BUILT_IN, false, false, false) 12629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 12679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Namespace() 12699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::~Namespace() 12739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_types.size(); 12759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 12769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project delete m_types[i]; 12779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 12819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Add(Type* type) 12829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = Find(type->QualifiedName()); 12849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (t == NULL) { 12859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_types.push_back(type); 12869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 12909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::AddGenericType(const string& package, const string& name, int args) 12919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Generic g; 12939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.package = package; 12949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.name = name; 12959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.qualified = package + '.' + name; 12969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.args = args; 12979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_generics.push_back(g); 12989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* 13019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Find(const string& name) const 13029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_types.size(); 13049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 13059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_types[i]->QualifiedName() == name) { 13069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_types[i]; 13079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* 13139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Find(const char* package, const char* name) const 13149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string s; 13169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (package != NULL) { 13179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += package; 13189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += '.'; 13199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += name; 13219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Find(s); 13229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic string 13259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnormalize_generic(const string& s) 13269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string r; 13289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = s.size(); 13299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 13309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char c = s[i]; 13319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!isspace(c)) { 13329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project r += c; 13339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return r; 13369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* 13399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Search(const string& name) 13409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // an exact match wins 13429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* result = Find(name); 13439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (result != NULL) { 13449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return result; 13459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // try the class names 13489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // our language doesn't allow you to not specify outer classes 13499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // when referencing an inner class. that could be changed, and this 13509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // would be the place to do it, but I don't think the complexity in 13519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // scoping rules is worth it. 13529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_types.size(); 13537c93839d7b41727c11925b034d4ec84491d3dee1Laurent Tu for (int i=0; i<N; i++) { 13549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_types[i]->Name() == name) { 13559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_types[i]; 13569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // we got to here and it's not a generic, give up 13609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (name.find('<') == name.npos) { 13619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // remove any whitespace 13659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string normalized = normalize_generic(name); 13669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // find the part before the '<', find a generic for it 13689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ssize_t baseIndex = normalized.find('<'); 13699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string base(normalized.c_str(), baseIndex); 13709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Generic* g = search_generic(base); 13719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g == NULL) { 13729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // For each of the args, do a recursive search on it. We don't allow 13769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // generics within generics like Java does, because we're really limiting 13779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // them to just built-in container classes, at least for now. Our syntax 13789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ensures this right now as well. 13799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Type*> args; 13809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t start = baseIndex + 1; 13819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t end = start; 13829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while (normalized[start] != '\0') { 13839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project end = normalized.find(',', start); 13849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (end == normalized.npos) { 13859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project end = normalized.find('>', start); 13869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string s(normalized.c_str()+start, end-start); 13889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = this->Search(s); 13899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (t == NULL) { 13909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // maybe we should print a warning here? 13919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project args.push_back(t); 13949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project start = end+1; 13959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // construct a GenericType, add it to our name set so they always get 13989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // the same object, and return it. 13999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result = make_generic_type(g->package, g->name, args); 14009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (result == NULL) { 14019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 14029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this->Add(result); 14059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this->Find(result->QualifiedName()); 14069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 14079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectconst Namespace::Generic* 14099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::search_generic(const string& name) const 14109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 14119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_generics.size(); 14129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // first exact match 14149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 14159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Generic& g = m_generics[i]; 14169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g.qualified == name) { 14179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return &g; 14189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // then name match 14229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 14239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Generic& g = m_generics[i]; 14249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g.name == name) { 14259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return &g; 14269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 14309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 14319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 14339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Dump() const 14349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 14359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int n = m_types.size(); 14369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<n; i++) { 14379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = m_types[i]; 14389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project printf("type: package=%s name=%s qualifiedName=%s\n", 14399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t->Package().c_str(), t->Name().c_str(), 14409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t->QualifiedName().c_str()); 14419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1443