Type.cpp revision 6c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include "Type.h" 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace NAMES; 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* VOID_TYPE; 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* BOOLEAN_TYPE; 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* BYTE_TYPE; 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* CHAR_TYPE; 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* INT_TYPE; 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* LONG_TYPE; 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* FLOAT_TYPE; 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* DOUBLE_TYPE; 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* STRING_TYPE; 14fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* OBJECT_TYPE; 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* CHAR_SEQUENCE_TYPE; 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* TEXT_UTILS_TYPE; 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* REMOTE_EXCEPTION_TYPE; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* RUNTIME_EXCEPTION_TYPE; 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* IBINDER_TYPE; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* IINTERFACE_TYPE; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* BINDER_NATIVE_TYPE; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* BINDER_PROXY_TYPE; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* PARCEL_TYPE; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* PARCELABLE_INTERFACE_TYPE; 25fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* CONTEXT_TYPE; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* MAP_TYPE; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* LIST_TYPE; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* CLASSLOADER_TYPE; 29fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* RPC_DATA_TYPE; 30fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* RPC_ERROR_TYPE; 31e24dbeafe64278408b3342fcb77756bc7d091791Joe OnoratoType* EVENT_FAKE_TYPE; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* NULL_VALUE; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* THIS_VALUE; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* SUPER_VALUE; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* TRUE_VALUE; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* FALSE_VALUE; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectregister_base_types() 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato VOID_TYPE = new BasicType("void", 4305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "XXX", "XXX", "XXX", "XXX", "XXX", 4405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "XXX", "XXX", "XXX", "XXX", "XXX"); 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(VOID_TYPE); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BOOLEAN_TYPE = new BooleanType(); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BOOLEAN_TYPE); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato BYTE_TYPE = new BasicType("byte", 5105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeByte", "readByte", "writeByteArray", "createByteArray", "readByteArray", 5205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putByte", "getByte", "putByteArray", "createByteArray", "getByteArray"); 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BYTE_TYPE); 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CHAR_TYPE = new CharType(); 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(CHAR_TYPE); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato INT_TYPE = new BasicType("int", 5905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeInt", "readInt", "writeIntArray", "createIntArray", "readIntArray", 6005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putInteger", "getInteger", "putIntegerArray", "createIntegerArray", "getIntegerArray"); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(INT_TYPE); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato LONG_TYPE = new BasicType("long", 6405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeLong", "readLong", "writeLongArray", "createLongArray", "readLongArray", 6505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putLong", "getLong", "putLongArray", "createLongArray", "getLongArray"); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(LONG_TYPE); 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato FLOAT_TYPE = new BasicType("float", 6905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeFloat", "readFloat", "writeFloatArray", "createFloatArray", "readFloatArray", 7005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putFloat", "getFloat", "putFloatArray", "createFloatArray", "getFloatArray"); 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(FLOAT_TYPE); 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato DOUBLE_TYPE = new BasicType("double", 7405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeDouble", "readDouble", "writeDoubleArray", "createDoubleArray", "readDoubleArray", 7505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putDouble", "getDouble", "putDoubleArray", "createDoubleArray", "getDoubleArray"); 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(DOUBLE_TYPE); 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project STRING_TYPE = new StringType(); 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(STRING_TYPE); 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 817db766c3fec2795b08d237f29b972f474983684bJoe Onorato OBJECT_TYPE = new Type("java.lang", "Object", Type::BUILT_IN, false, false, false); 82fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(OBJECT_TYPE); 83fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CHAR_SEQUENCE_TYPE = new CharSequenceType(); 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(CHAR_SEQUENCE_TYPE); 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MAP_TYPE = new MapType(); 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(MAP_TYPE); 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LIST_TYPE = new ListType(); 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(LIST_TYPE); 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 937db766c3fec2795b08d237f29b972f474983684bJoe Onorato TEXT_UTILS_TYPE = new Type("android.text", "TextUtils", Type::BUILT_IN, false, false, false); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(TEXT_UTILS_TYPE); 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project REMOTE_EXCEPTION_TYPE = new RemoteExceptionType(); 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(REMOTE_EXCEPTION_TYPE); 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RUNTIME_EXCEPTION_TYPE = new RuntimeExceptionType(); 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(RUNTIME_EXCEPTION_TYPE); 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBINDER_TYPE = new IBinderType(); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(IBINDER_TYPE); 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IINTERFACE_TYPE = new IInterfaceType(); 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(IINTERFACE_TYPE); 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BINDER_NATIVE_TYPE = new BinderType(); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BINDER_NATIVE_TYPE); 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BINDER_PROXY_TYPE = new BinderProxyType(); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BINDER_PROXY_TYPE); 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PARCEL_TYPE = new ParcelType(); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(PARCEL_TYPE); 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PARCELABLE_INTERFACE_TYPE = new ParcelableInterfaceType(); 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(PARCELABLE_INTERFACE_TYPE); 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1207db766c3fec2795b08d237f29b972f474983684bJoe Onorato CONTEXT_TYPE = new Type("android.content", "Context", Type::BUILT_IN, false, false, false); 121fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(CONTEXT_TYPE); 122fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 1231eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato RPC_DATA_TYPE = new RpcDataType(); 124fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_DATA_TYPE); 125fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 126fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato RPC_ERROR_TYPE = new ParcelableType("com.android.athome.rpc", "RpcError", 127fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato true, __FILE__, __LINE__); 128fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_ERROR_TYPE); 129fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 130e24dbeafe64278408b3342fcb77756bc7d091791Joe Onorato EVENT_FAKE_TYPE = new Type("event", Type::BUILT_IN, false, false, false); 131e24dbeafe64278408b3342fcb77756bc7d091791Joe Onorato NAMES.Add(EVENT_FAKE_TYPE); 132fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CLASSLOADER_TYPE = new ClassLoaderType(); 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(CLASSLOADER_TYPE); 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NULL_VALUE = new LiteralExpression("null"); 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project THIS_VALUE = new LiteralExpression("this"); 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SUPER_VALUE = new LiteralExpression("super"); 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TRUE_VALUE = new LiteralExpression("true"); 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FALSE_VALUE = new LiteralExpression("false"); 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.AddGenericType("java.util", "List", 1); 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.AddGenericType("java.util", "Map", 2); 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic Type* 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectmake_generic_type(const string& package, const string& name, 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const vector<Type*>& args) 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (package == "java.util" && name == "List") { 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new GenericListType("java.util", "List", args); 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //return new GenericType(package, name, args); 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1597db766c3fec2795b08d237f29b972f474983684bJoe OnoratoType::Type(const string& name, int kind, bool canWriteToParcel, bool canWriteToRpcData, 1607db766c3fec2795b08d237f29b972f474983684bJoe Onorato bool canBeOut) 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :m_package(), 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_name(name), 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declFile(""), 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declLine(-1), 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_kind(kind), 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canWriteToParcel(canWriteToParcel), 1677db766c3fec2795b08d237f29b972f474983684bJoe Onorato m_canWriteToRpcData(canWriteToRpcData), 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canBeOut(canBeOut) 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName = name; 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::Type(const string& package, const string& name, 1747db766c3fec2795b08d237f29b972f474983684bJoe Onorato int kind, bool canWriteToParcel, bool canWriteToRpcData, 1757db766c3fec2795b08d237f29b972f474983684bJoe Onorato bool canBeOut, const string& declFile, int declLine) 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :m_package(package), 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_name(name), 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declFile(declFile), 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declLine(declLine), 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_kind(kind), 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canWriteToParcel(canWriteToParcel), 1827db766c3fec2795b08d237f29b972f474983684bJoe Onorato m_canWriteToRpcData(canWriteToRpcData), 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canBeOut(canBeOut) 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (package.length() > 0) { 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName = package; 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName += '.'; 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName += name; 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::~Type() 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::CanBeArray() const 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::ImportType() const 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_qualifiedName; 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::CreatorName() const 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ""; 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::InstantiableName() const 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return QualifiedName(); 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%sn", 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* WriteToParcel error " 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 231b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* CreateFromParcel error " 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 240b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesType::ReadFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* ReadFromParcel error " 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* WriteArrayToParcel error " 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 259b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* CreateArrayFromParcel error " 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 268b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* ReadArrayFromParcel error " 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 277fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 278fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable* data, int flags) 279fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 28005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 281fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato __FILE__, __LINE__, m_qualifiedName.c_str()); 282fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new LiteralExpression("/* WriteToRpcData error " 283fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato + m_qualifiedName + " */")); 284fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 285fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 286fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 287fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 288fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable** cl) 289fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 29005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 291fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato __FILE__, __LINE__, m_qualifiedName.c_str()); 292fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new LiteralExpression("/* ReadFromRpcData error " 293fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato + m_qualifiedName + " */")); 294fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 295fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 296fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::SetQualifiedName(const string& qualified) 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName = qualified; 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::BuildWriteToParcelFlags(int flags) 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (flags == 0) { 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new LiteralExpression("0"); 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((flags&PARCELABLE_WRITE_RETURN_VALUE) != 0) { 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new FieldVariable(PARCELABLE_INTERFACE_TYPE, 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "PARCELABLE_WRITE_RETURN_VALUE"); 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new LiteralExpression("0"); 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 31705ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBasicType::BasicType(const string& name, const string& marshallParcel, 31805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& unmarshallParcel, const string& writeArrayParcel, 31905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& createArrayParcel, const string& readArrayParcel, 32005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& marshallRpc, const string& unmarshallRpc, 32105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& writeArrayRpc, const string& createArrayRpc, const string& readArrayRpc) 3227db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type(name, BUILT_IN, true, true, false), 32305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_marshallParcel(marshallParcel), 32405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_unmarshallParcel(unmarshallParcel), 32505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_writeArrayParcel(writeArrayParcel), 32605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_createArrayParcel(createArrayParcel), 32705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_readArrayParcel(readArrayParcel), 32805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_marshallRpc(marshallRpc), 32905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_unmarshallRpc(unmarshallRpc), 33005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_writeArrayRpc(writeArrayRpc), 33105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_createArrayRpc(createArrayRpc), 33205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_readArrayRpc(readArrayRpc) 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 33905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(parcel, m_marshallParcel, 1, v)); 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 343b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBasicType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 34505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(parcel, m_unmarshallParcel))); 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::CanBeArray() const 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 35705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(parcel, m_writeArrayParcel, 1, v)); 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 362b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 36405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(parcel, m_createArrayParcel))); 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 368b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBasicType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 37005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(parcel, m_readArrayParcel, 1, v)); 37105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 37205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 37305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 37405ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBasicType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 37505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 37605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 37705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, m_marshallRpc, 2, k, v)); 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 38005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 38105ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBasicType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 38205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 38305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 38405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, m_unmarshallRpc, 1, k))); 38505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::BooleanType() 3907db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("boolean", BUILT_IN, true, true, false) 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeInt", 1, 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Ternary(v, new LiteralExpression("1"), 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("0")))); 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 403b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBooleanType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new Comparison(new LiteralExpression("0"), 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "!=", new MethodCall(parcel, "readInt")))); 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::CanBeArray() const 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeBooleanArray", 1, v)); 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 423b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createBooleanArray"))); 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 429b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBooleanType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readBooleanArray", 1, v)); 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 43405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 43505ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBooleanType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 43605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 43705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 43805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putBoolean", 2, k, v)); 43905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 44005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 44105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 44205ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBooleanType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 44305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 44405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 44505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getBoolean", 1, k))); 44605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::CharType() 4517db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("char", BUILT_IN, true, true, false) 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeInt", 1, 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Cast(INT_TYPE, v))); 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 463b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesCharType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "readInt"), this)); 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::CanBeArray() const 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeCharArray", 1, v)); 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 482b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createCharArray"))); 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 488b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesCharType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readCharArray", 1, v)); 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 49305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 49405ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoCharType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 49505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 49605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 49705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putChar", 2, k, v)); 49805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 49905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 50005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 50105ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoCharType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 50205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 50305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 50405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getChar", 1, k))); 50505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 50605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::StringType() 5107db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.lang", "String", BUILT_IN, true, true, false) 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::CreatorName() const 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "android.os.Parcel.STRING_CREATOR"; 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeString", 1, v)); 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 527b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesStringType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "readString"))); 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::CanBeArray() const 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStringArray", 1, v)); 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 546b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createStringArray"))); 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 552b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesStringType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readStringArray", 1, v)); 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 557fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 558fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoStringType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 559fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable* data, int flags) 560fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 561fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new MethodCall(data, "putString", 2, k, v)); 562fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 563fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 564fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 565fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoStringType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 566fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable* data, Variable**) 567fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 568fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getString", 1, k))); 569fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 570fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::CharSequenceType() 5747db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.lang", "CharSequence", BUILT_IN, true, true, false) 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::CreatorName() const 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "android.os.Parcel.STRING_CREATOR"; 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (v != null) { 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(1); 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v.writeToParcel(parcel); 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(0); 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new MethodCall(parcel, "writeInt", 1, 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("0"))); 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement; 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(v, "!=", NULL_VALUE); 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(parcel, "writeInt", 1, 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("1"))); 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(TEXT_UTILS_TYPE, "writeToParcel", 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3, v, parcel, BuildWriteToParcelFlags(flags))); 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::CreateFromParcel(StatementBlock* addTo, Variable* v, 609b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (0 != parcel.readInt()) { 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = TextUtils.createFromParcel(parcel) 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = null; 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new Assignment(v, NULL_VALUE)); 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement(); 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(new LiteralExpression("0"), "!=", 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readInt")); 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new Assignment(v, 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(TEXT_UTILS_TYPE, 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "CHAR_SEQUENCE_CREATOR.createFromParcel", 1, parcel))); 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRemoteExceptionType::RemoteExceptionType() 6347db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "RemoteException", BUILT_IN, false, false, false) 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRemoteExceptionType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 645b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesRemoteExceptionType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRuntimeExceptionType::RuntimeExceptionType() 6537db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.lang", "RuntimeException", BUILT_IN, false, false, false) 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRuntimeExceptionType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 664b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesRuntimeExceptionType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::IBinderType() 6737db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "IBinder", BUILT_IN, true, false, false) 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStrongBinder", 1, v)); 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 684b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesIBinderType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "readStrongBinder"))); 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeBinderArray", 1, v)); 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 697b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createBinderArray"))); 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 703b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesIBinderType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readBinderArray", 1, v)); 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIInterfaceType::IInterfaceType() 7127db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "IInterface", BUILT_IN, false, false, false) 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIInterfaceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 723b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesIInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderType::BinderType() 7327db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "Binder", BUILT_IN, false, false, false) 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderType::CreateFromParcel(StatementBlock* addTo, Variable* v, 744b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderProxyType::BinderProxyType() 7537db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "BinderProxy", BUILT_IN, false, false, false) 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderProxyType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderProxyType::CreateFromParcel(StatementBlock* addTo, Variable* v, 765b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelType::ParcelType() 7747db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "Parcel", BUILT_IN, false, false, false) 7759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 785b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesParcelType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableInterfaceType::ParcelableInterfaceType() 7937db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("android.os", "Parcelable", BUILT_IN, false, false, false) 7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableInterfaceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 804b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesParcelableInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectMapType::MapType() 8127db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.util", "Map", BUILT_IN, true, false, true) 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectMapType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeMap", 1, v)); 8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 822b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughesstatic void EnsureClassLoader(StatementBlock* addTo, Variable** cl) 823b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes{ 824b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes // We don't want to look up the class loader once for every 825b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes // collection argument, so ensure we do it at most once per method. 826b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes if (*cl == NULL) { 827b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes *cl = new Variable(CLASSLOADER_TYPE, "cl"); 828b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new VariableDeclaration(*cl, 829b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes new LiteralExpression("this.getClass().getClassLoader()"), 830b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes CLASSLOADER_TYPE)); 831b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes } 832b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes} 833b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes 8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 835b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesMapType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable** cl) 8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 837b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 838b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new Assignment(v, new MethodCall(parcel, "readHashMap", 1, *cl))); 8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 84205ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoMapType::ReadFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable** cl) 8439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 844b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 845b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new MethodCall(parcel, "readMap", 2, v, *cl)); 8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::ListType() 8527db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.util", "List", BUILT_IN, true, true, true) 8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::InstantiableName() const 8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "java.util.ArrayList"; 8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeList", 1, v)); 8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 869b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesListType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable** cl) 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 871b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 872b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new Assignment(v, new MethodCall(parcel, "readArrayList", 1, *cl))); 8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::ReadFromParcel(StatementBlock* addTo, Variable* v, 877b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable** cl) 8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 879b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 880b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new MethodCall(parcel, "readList", 2, v, *cl)); 8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 88305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 88405ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoListType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 88505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 88605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 88705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putList", 2, k, v)); 88805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 88905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 89005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 89105ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 89205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 89305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 89405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getList", 1, k))); 89505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::ParcelableType(const string& package, const string& name, 9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool builtIn, const string& declFile, int declLine) 9017db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type(package, name, builtIn ? BUILT_IN : PARCELABLE, true, false, true, 9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project declFile, declLine) 9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9066c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe OnoratoParcelableType::ParcelableType(const string& package, const string& name, 9076c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato bool builtIn, bool canWriteToRpcData, 9086c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato const string& declFile, int declLine) 9096c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato :Type(package, name, builtIn ? BUILT_IN : PARCELABLE, true, canWriteToRpcData, true, 9106c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato declFile, declLine) 9116c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato{ 9126c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato} 9136c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato 9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::CreatorName() const 9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return QualifiedName() + ".CREATOR"; 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (v != null) { 9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(1); 9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v.writeToParcel(parcel); 9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(0); 9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new MethodCall(parcel, "writeInt", 1, 9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("0"))); 9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement; 9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(v, "!=", NULL_VALUE); 9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(parcel, "writeInt", 1, 9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("1"))); 9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(v, "writeToParcel", 2, 9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project parcel, BuildWriteToParcelFlags(flags))); 9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 944b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesParcelableType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (0 != parcel.readInt()) { 9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = CLASS.CREATOR.createFromParcel(parcel) 9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = null; 9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new Assignment(v, NULL_VALUE)); 9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement(); 9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(new LiteralExpression("0"), "!=", 9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readInt")); 9579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new Assignment(v, 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(v->type, "CREATOR.createFromParcel", 1, parcel))); 9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::ReadFromParcel(StatementBlock* addTo, Variable* v, 966b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // TODO: really, we don't need to have this extra check, but we 9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // don't have two separate marshalling code paths 9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (0 != parcel.readInt()) { 9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v.readFromParcel(parcel) 9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement(); 9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(new LiteralExpression("0"), "!=", 9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readInt")); 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(v, "readFromParcel", 1, parcel)); 9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::CanBeArray() const 9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 9849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 9889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeTypedArray", 2, v, 9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BuildWriteToParcelFlags(flags))); 9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 9949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 995b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 9969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string creator = v->type->QualifiedName() + ".CREATOR"; 9989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, 9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "createTypedArray", 1, new LiteralExpression(creator)))); 10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1003b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesParcelableType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string creator = v->type->QualifiedName() + ".CREATOR"; 10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readTypedArray", 2, 10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v, new LiteralExpression(creator))); 10089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10107db766c3fec2795b08d237f29b972f474983684bJoe Onorato// ================================================================ 10117db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10127db766c3fec2795b08d237f29b972f474983684bJoe OnoratoFlattenableType::FlattenableType(const string& package, const string& name, 10137db766c3fec2795b08d237f29b972f474983684bJoe Onorato bool builtIn, const string& declFile, int declLine) 10147db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type(package, name, builtIn ? BUILT_IN : PARCELABLE, false, true, true, 10157db766c3fec2795b08d237f29b972f474983684bJoe Onorato declFile, declLine) 10167db766c3fec2795b08d237f29b972f474983684bJoe Onorato{ 10177db766c3fec2795b08d237f29b972f474983684bJoe Onorato} 10187db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10197db766c3fec2795b08d237f29b972f474983684bJoe Onoratostring 10207db766c3fec2795b08d237f29b972f474983684bJoe OnoratoFlattenableType::CreatorName() const 10217db766c3fec2795b08d237f29b972f474983684bJoe Onorato{ 10227db766c3fec2795b08d237f29b972f474983684bJoe Onorato return QualifiedName() + ".CREATOR"; 10237db766c3fec2795b08d237f29b972f474983684bJoe Onorato} 10247db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10257db766c3fec2795b08d237f29b972f474983684bJoe Onoratovoid 10267db766c3fec2795b08d237f29b972f474983684bJoe OnoratoFlattenableType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 10277db766c3fec2795b08d237f29b972f474983684bJoe Onorato Variable* data, int flags) 10287db766c3fec2795b08d237f29b972f474983684bJoe Onorato{ 10297db766c3fec2795b08d237f29b972f474983684bJoe Onorato // if (v != null) { 10307db766c3fec2795b08d237f29b972f474983684bJoe Onorato // RpcData _obj = new RpcData(); 10317db766c3fec2795b08d237f29b972f474983684bJoe Onorato // v.writeToRpcData(_obj); 10327db766c3fec2795b08d237f29b972f474983684bJoe Onorato // data.putRpcData(k, obj); 10337db766c3fec2795b08d237f29b972f474983684bJoe Onorato // } 10347db766c3fec2795b08d237f29b972f474983684bJoe Onorato IfStatement* ifpart = new IfStatement; 10357db766c3fec2795b08d237f29b972f474983684bJoe Onorato ifpart->expression = new Comparison(v, "!=", NULL_VALUE); 10367db766c3fec2795b08d237f29b972f474983684bJoe Onorato Variable* _obj = new Variable(RPC_DATA_TYPE, "_obj"); 10377db766c3fec2795b08d237f29b972f474983684bJoe Onorato ifpart->statements->Add(new VariableDeclaration(_obj, new NewExpression(RPC_DATA_TYPE))); 10387db766c3fec2795b08d237f29b972f474983684bJoe Onorato ifpart->statements->Add(new MethodCall(v, "writeToRpcData", 1, _obj)); 10397db766c3fec2795b08d237f29b972f474983684bJoe Onorato ifpart->statements->Add(new MethodCall(data, "putRpcData", 2, k, _obj)); 10407db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10417db766c3fec2795b08d237f29b972f474983684bJoe Onorato addTo->Add(ifpart); 10427db766c3fec2795b08d237f29b972f474983684bJoe Onorato} 10437db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10447db766c3fec2795b08d237f29b972f474983684bJoe Onoratovoid 10457db766c3fec2795b08d237f29b972f474983684bJoe OnoratoFlattenableType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 10467db766c3fec2795b08d237f29b972f474983684bJoe Onorato Variable* data, Variable** cl) 10477db766c3fec2795b08d237f29b972f474983684bJoe Onorato{ 10487db766c3fec2795b08d237f29b972f474983684bJoe Onorato // RpcData _obj_XX = data.getRpcData(k); 10497db766c3fec2795b08d237f29b972f474983684bJoe Onorato // if (_data_XX != null) 10507db766c3fec2795b08d237f29b972f474983684bJoe Onorato // v = CLASS.RPC_CREATOR.createFromParcel(parcel) 10517db766c3fec2795b08d237f29b972f474983684bJoe Onorato // } else { 10527db766c3fec2795b08d237f29b972f474983684bJoe Onorato // v = null; 10537db766c3fec2795b08d237f29b972f474983684bJoe Onorato // } 10547db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10557db766c3fec2795b08d237f29b972f474983684bJoe Onorato StatementBlock* block = new StatementBlock; 10567db766c3fec2795b08d237f29b972f474983684bJoe Onorato addTo->Add(block); 10577db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10587db766c3fec2795b08d237f29b972f474983684bJoe Onorato Variable* _obj = new Variable(RPC_DATA_TYPE, "_obj"); 10597db766c3fec2795b08d237f29b972f474983684bJoe Onorato block->Add(new VariableDeclaration(_obj, new MethodCall(data, "getRpcData", 1, k))); 10607db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10617db766c3fec2795b08d237f29b972f474983684bJoe Onorato IfStatement* ifpart = new IfStatement(); 10627db766c3fec2795b08d237f29b972f474983684bJoe Onorato ifpart->expression = new Comparison(_obj, "!=", NULL_VALUE); 10637db766c3fec2795b08d237f29b972f474983684bJoe Onorato ifpart->statements->Add(new Assignment(v, 10647db766c3fec2795b08d237f29b972f474983684bJoe Onorato new MethodCall(v->type, "RPC_CREATOR.createFromRpcData", 1, data))); 10657db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10667db766c3fec2795b08d237f29b972f474983684bJoe Onorato IfStatement* elsepart = new IfStatement(); 10677db766c3fec2795b08d237f29b972f474983684bJoe Onorato ifpart->elseif = elsepart; 10687db766c3fec2795b08d237f29b972f474983684bJoe Onorato elsepart->statements->Add(new Assignment(v, NULL_VALUE)); 10697db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10707db766c3fec2795b08d237f29b972f474983684bJoe Onorato block->Add(ifpart); 10717db766c3fec2795b08d237f29b972f474983684bJoe Onorato} 10727db766c3fec2795b08d237f29b972f474983684bJoe Onorato 10737db766c3fec2795b08d237f29b972f474983684bJoe Onoratobool 10747db766c3fec2795b08d237f29b972f474983684bJoe OnoratoFlattenableType::CanBeArray() const 10757db766c3fec2795b08d237f29b972f474983684bJoe Onorato{ 10767db766c3fec2795b08d237f29b972f474983684bJoe Onorato return true; 10777db766c3fec2795b08d237f29b972f474983684bJoe Onorato} 10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectInterfaceType::InterfaceType(const string& package, const string& name, 10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool builtIn, bool oneway, 10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const string& declFile, int declLine) 10847db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type(package, name, builtIn ? BUILT_IN : INTERFACE, true, false, false, 10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project declFile, declLine) 10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ,m_oneway(oneway) 10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 10919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectInterfaceType::OneWay() const 10929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_oneway; 10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectInterfaceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeStrongBinder(v != null ? v.asBinder() : null); 11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStrongBinder", 1, 11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Ternary( 11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Comparison(v, "!=", NULL_VALUE), 11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(v, "asBinder"), 11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NULL_VALUE))); 11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1108b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = Interface.asInterface(parcel.readStrongBinder()); 11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string type = v->type->QualifiedName(); 11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project type += ".Stub"; 11139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall( NAMES.Find(type), "asInterface", 1, 11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readStrongBinder")))); 11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::GenericType(const string& package, const string& name, 11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const vector<Type*>& args) 11237db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type(package, name, BUILT_IN, true, true, true) 11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_args = args; 11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_importName = package + '.' + name; 11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string gen = "<"; 11309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = args.size(); 11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = args[i]; 11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gen += t->QualifiedName(); 11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (i != N-1) { 11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gen += ','; 11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gen += '>'; 11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_genericArguments = gen; 11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SetQualifiedName(m_importName + gen); 11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 114305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratoconst vector<Type*>& 114405ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoGenericType::GenericArgumentTypes() const 114505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 114605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato return m_args; 114705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 114805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 11499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::GenericArguments() const 11519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_genericArguments; 11539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::ImportType() const 11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_importName; 11599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 11639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "implement GenericType::WriteToParcel\n"); 11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1168b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesGenericType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "implement GenericType::CreateFromParcel\n"); 11719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 11749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::ReadFromParcel(StatementBlock* addTo, Variable* v, 1175b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 11769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "implement GenericType::ReadFromParcel\n"); 11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 11829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::GenericListType(const string& package, const string& name, 11849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const vector<Type*>& args) 11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :GenericType(package, name, args), 11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_creator(args[0]->CreatorName()) 11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::CreatorName() const 11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "android.os.Parcel.arrayListCreator"; 11949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::InstantiableName() const 11989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "java.util.ArrayList" + GenericArguments(); 12009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 12039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 12049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_creator == STRING_TYPE->CreatorName()) { 12069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStringList", 1, v)); 12079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (m_creator == IBINDER_TYPE->CreatorName()) { 12089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeBinderList", 1, v)); 12099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 12109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeTypedListXX(arg); 12119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeTypedList", 1, v)); 12129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1216b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesGenericListType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 12179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_creator == STRING_TYPE->CreatorName()) { 12199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 12209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "createStringArrayList", 0))); 12219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (m_creator == IBINDER_TYPE->CreatorName()) { 12229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 12239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "createBinderArrayList", 0))); 12249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 12259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = _data.readTypedArrayList(XXX.creator); 12269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 12279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "createTypedArrayList", 1, 12289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression(m_creator)))); 12299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 12339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::ReadFromParcel(StatementBlock* addTo, Variable* v, 1234b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 12359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_creator == STRING_TYPE->CreatorName()) { 12379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readStringList", 1, v)); 12389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (m_creator == IBINDER_TYPE->CreatorName()) { 12399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readBinderList", 1, v)); 12409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 12419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = _data.readTypedList(v, XXX.creator); 12429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readTypedList", 2, 12439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v, 12449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression(m_creator))); 12459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 124805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 124905ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoGenericListType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 125005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 125105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 125205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putList", 2, k, v)); 125305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 125405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 125505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 125605ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoGenericListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 125705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, Variable** cl) 125805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 125905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato string classArg = GenericArgumentTypes()[0]->QualifiedName(); 126005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato classArg += ".class"; 126105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getList", 2, k, 126205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato new LiteralExpression(classArg)))); 126305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 126405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 12651eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12661eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato// ================================================================ 12671eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12681eb720446dec3248ba102c4635bf113d450d0d73Joe OnoratoRpcDataType::RpcDataType() 12696c0236c53a30ea9fef28ee7c95a4dce2fa5ce2e1Joe Onorato :ParcelableType("com.android.athome.rpc", "RpcData", true, true) 12701eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato{ 12711eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato} 12721eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12731eb720446dec3248ba102c4635bf113d450d0d73Joe Onoratovoid 12741eb720446dec3248ba102c4635bf113d450d0d73Joe OnoratoRpcDataType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 12751eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato Variable* data, int flags) 12761eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato{ 12771eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato addTo->Add(new MethodCall(data, "putRpcData", 2, k, v)); 12781eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato} 12791eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12801eb720446dec3248ba102c4635bf113d450d0d73Joe Onoratovoid 12811eb720446dec3248ba102c4635bf113d450d0d73Joe OnoratoRpcDataType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 12821eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato Variable** cl) 12831eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato{ 12841eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getRpcData", 1, k))); 12851eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato} 12861eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12871eb720446dec3248ba102c4635bf113d450d0d73Joe Onorato 12889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 12899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectClassLoaderType::ClassLoaderType() 12917db766c3fec2795b08d237f29b972f474983684bJoe Onorato :Type("java.lang", "ClassLoader", BUILT_IN, false, false, false) 12929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 12979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Namespace() 12999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::~Namespace() 13039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_types.size(); 13059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 13069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project delete m_types[i]; 13079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 13119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Add(Type* type) 13129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = Find(type->QualifiedName()); 13149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (t == NULL) { 13159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_types.push_back(type); 13169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 13209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::AddGenericType(const string& package, const string& name, int args) 13219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Generic g; 13239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.package = package; 13249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.name = name; 13259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.qualified = package + '.' + name; 13269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.args = args; 13279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_generics.push_back(g); 13289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* 13319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Find(const string& name) const 13329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_types.size(); 13349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 13359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_types[i]->QualifiedName() == name) { 13369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_types[i]; 13379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* 13439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Find(const char* package, const char* name) const 13449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string s; 13469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (package != NULL) { 13479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += package; 13489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += '.'; 13499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += name; 13519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Find(s); 13529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic string 13559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnormalize_generic(const string& s) 13569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string r; 13589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = s.size(); 13599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 13609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char c = s[i]; 13619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!isspace(c)) { 13629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project r += c; 13639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return r; 13669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* 13699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Search(const string& name) 13709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // an exact match wins 13729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* result = Find(name); 13739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (result != NULL) { 13749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return result; 13759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // try the class names 13789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // our language doesn't allow you to not specify outer classes 13799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // when referencing an inner class. that could be changed, and this 13809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // would be the place to do it, but I don't think the complexity in 13819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // scoping rules is worth it. 13829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_types.size(); 13839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 13849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_types[i]->Name() == name) { 13859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_types[i]; 13869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // we got to here and it's not a generic, give up 13909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (name.find('<') == name.npos) { 13919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // remove any whitespace 13959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string normalized = normalize_generic(name); 13969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // find the part before the '<', find a generic for it 13989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ssize_t baseIndex = normalized.find('<'); 13999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string base(normalized.c_str(), baseIndex); 14009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Generic* g = search_generic(base); 14019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g == NULL) { 14029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 14039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // For each of the args, do a recursive search on it. We don't allow 14069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // generics within generics like Java does, because we're really limiting 14079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // them to just built-in container classes, at least for now. Our syntax 14089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ensures this right now as well. 14099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Type*> args; 14109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t start = baseIndex + 1; 14119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t end = start; 14129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while (normalized[start] != '\0') { 14139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project end = normalized.find(',', start); 14149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (end == normalized.npos) { 14159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project end = normalized.find('>', start); 14169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string s(normalized.c_str()+start, end-start); 14189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = this->Search(s); 14199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (t == NULL) { 14209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // maybe we should print a warning here? 14219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 14229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project args.push_back(t); 14249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project start = end+1; 14259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // construct a GenericType, add it to our name set so they always get 14289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // the same object, and return it. 14299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result = make_generic_type(g->package, g->name, args); 14309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (result == NULL) { 14319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 14329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this->Add(result); 14359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this->Find(result->QualifiedName()); 14369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 14379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectconst Namespace::Generic* 14399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::search_generic(const string& name) const 14409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 14419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_generics.size(); 14429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // first exact match 14449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 14459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Generic& g = m_generics[i]; 14469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g.qualified == name) { 14479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return &g; 14489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // then name match 14529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 14539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Generic& g = m_generics[i]; 14549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g.name == name) { 14559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return &g; 14569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 14609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 14619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 14639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Dump() const 14649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 14659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int n = m_types.size(); 14669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<n; i++) { 14679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = m_types[i]; 14689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project printf("type: package=%s name=%s qualifiedName=%s\n", 14699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t->Package().c_str(), t->Name().c_str(), 14709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t->QualifiedName().c_str()); 14719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 14729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1473