Type.cpp revision 05ffbe7c020c59ee4fa7e13e04641c954d591951
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_SERVICE_BASE_TYPE; 30fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* RPC_DATA_TYPE; 31fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* RPC_BROKER_TYPE; 32fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* RPC_ENDPOINT_INFO_TYPE; 33fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* RPC_RESULT_HANDLER_TYPE; 34fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* RPC_ERROR_TYPE; 35fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType* RPC_ERROR_LISTENER_TYPE; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* NULL_VALUE; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* THIS_VALUE; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* SUPER_VALUE; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* TRUE_VALUE; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* FALSE_VALUE; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectregister_base_types() 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato VOID_TYPE = new BasicType("void", 4705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "XXX", "XXX", "XXX", "XXX", "XXX", 4805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "XXX", "XXX", "XXX", "XXX", "XXX"); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(VOID_TYPE); 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BOOLEAN_TYPE = new BooleanType(); 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BOOLEAN_TYPE); 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato BYTE_TYPE = new BasicType("byte", 5505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeByte", "readByte", "writeByteArray", "createByteArray", "readByteArray", 5605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putByte", "getByte", "putByteArray", "createByteArray", "getByteArray"); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BYTE_TYPE); 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CHAR_TYPE = new CharType(); 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(CHAR_TYPE); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato INT_TYPE = new BasicType("int", 6305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeInt", "readInt", "writeIntArray", "createIntArray", "readIntArray", 6405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putInteger", "getInteger", "putIntegerArray", "createIntegerArray", "getIntegerArray"); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(INT_TYPE); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato LONG_TYPE = new BasicType("long", 6805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeLong", "readLong", "writeLongArray", "createLongArray", "readLongArray", 6905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putLong", "getLong", "putLongArray", "createLongArray", "getLongArray"); 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(LONG_TYPE); 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato FLOAT_TYPE = new BasicType("float", 7305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeFloat", "readFloat", "writeFloatArray", "createFloatArray", "readFloatArray", 7405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putFloat", "getFloat", "putFloatArray", "createFloatArray", "getFloatArray"); 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(FLOAT_TYPE); 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato DOUBLE_TYPE = new BasicType("double", 7805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "writeDouble", "readDouble", "writeDoubleArray", "createDoubleArray", "readDoubleArray", 7905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato "putDouble", "getDouble", "putDoubleArray", "createDoubleArray", "getDoubleArray"); 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(DOUBLE_TYPE); 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project STRING_TYPE = new StringType(); 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(STRING_TYPE); 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 85fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato OBJECT_TYPE = new Type("java.lang", "Object", 86fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Type::BUILT_IN, false, false); 87fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(OBJECT_TYPE); 88fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CHAR_SEQUENCE_TYPE = new CharSequenceType(); 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(CHAR_SEQUENCE_TYPE); 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project MAP_TYPE = new MapType(); 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(MAP_TYPE); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LIST_TYPE = new ListType(); 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(LIST_TYPE); 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato TEXT_UTILS_TYPE = new Type("android.text", "TextUtils", Type::BUILT_IN, false, false); 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(TEXT_UTILS_TYPE); 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project REMOTE_EXCEPTION_TYPE = new RemoteExceptionType(); 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(REMOTE_EXCEPTION_TYPE); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project RUNTIME_EXCEPTION_TYPE = new RuntimeExceptionType(); 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(RUNTIME_EXCEPTION_TYPE); 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IBINDER_TYPE = new IBinderType(); 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(IBINDER_TYPE); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IINTERFACE_TYPE = new IInterfaceType(); 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(IINTERFACE_TYPE); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BINDER_NATIVE_TYPE = new BinderType(); 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BINDER_NATIVE_TYPE); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BINDER_PROXY_TYPE = new BinderProxyType(); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(BINDER_PROXY_TYPE); 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PARCEL_TYPE = new ParcelType(); 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(PARCEL_TYPE); 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project PARCELABLE_INTERFACE_TYPE = new ParcelableInterfaceType(); 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(PARCELABLE_INTERFACE_TYPE); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 125fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato CONTEXT_TYPE = new Type("android.content", "Context", 126fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Type::BUILT_IN, false, false); 127fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(CONTEXT_TYPE); 128fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 129fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato RPC_SERVICE_BASE_TYPE = new Type("com.android.athome.service", "AndroidAtHomeService", 130fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Type::BUILT_IN, false, false); 131fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_SERVICE_BASE_TYPE); 132fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 133fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato RPC_DATA_TYPE = new Type("com.android.athome.rpc", "RpcData", 134fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Type::BUILT_IN, false, false); 135fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_DATA_TYPE); 136fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 137fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato RPC_BROKER_TYPE = new Type("com.android.athome.utils", "AndroidAtHomeBroker", 138fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Type::BUILT_IN, false, false); 139fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_BROKER_TYPE); 140fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 141fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato RPC_ENDPOINT_INFO_TYPE = new ParcelableType("com.android.athome.rpc", "EndpointInfo", 142fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato true, __FILE__, __LINE__); 143fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_ENDPOINT_INFO_TYPE); 144fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 145fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato RPC_RESULT_HANDLER_TYPE = new ParcelableType("com.android.athome.rpc", "RpcResultHandler", 146fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato true, __FILE__, __LINE__); 147fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_RESULT_HANDLER_TYPE); 148fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 149fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato RPC_ERROR_TYPE = new ParcelableType("com.android.athome.rpc", "RpcError", 150fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato true, __FILE__, __LINE__); 151fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_ERROR_TYPE); 152fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 153fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato RPC_ERROR_LISTENER_TYPE = new Type("com.android.athome.rpc", "RpcErrorHandler", 154fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Type::BUILT_IN, false, false); 155fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato NAMES.Add(RPC_ERROR_LISTENER_TYPE); 156fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project CLASSLOADER_TYPE = new ClassLoaderType(); 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.Add(CLASSLOADER_TYPE); 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NULL_VALUE = new LiteralExpression("null"); 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project THIS_VALUE = new LiteralExpression("this"); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SUPER_VALUE = new LiteralExpression("super"); 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TRUE_VALUE = new LiteralExpression("true"); 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project FALSE_VALUE = new LiteralExpression("false"); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.AddGenericType("java.util", "List", 1); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NAMES.AddGenericType("java.util", "Map", 2); 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic Type* 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectmake_generic_type(const string& package, const string& name, 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const vector<Type*>& args) 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (package == "java.util" && name == "List") { 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new GenericListType("java.util", "List", args); 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //return new GenericType(package, name, args); 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::Type(const string& name, int kind, bool canWriteToParcel, bool canBeOut) 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :m_package(), 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_name(name), 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declFile(""), 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declLine(-1), 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_kind(kind), 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canWriteToParcel(canWriteToParcel), 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canBeOut(canBeOut) 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName = name; 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::Type(const string& package, const string& name, 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int kind, bool canWriteToParcel, bool canBeOut, 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const string& declFile, int declLine) 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :m_package(package), 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_name(name), 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declFile(declFile), 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_declLine(declLine), 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_kind(kind), 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canWriteToParcel(canWriteToParcel), 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_canBeOut(canBeOut) 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (package.length() > 0) { 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName = package; 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName += '.'; 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName += name; 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::~Type() 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::CanBeArray() const 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::ImportType() const 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_qualifiedName; 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::CreatorName() const 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ""; 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::InstantiableName() const 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return QualifiedName(); 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%sn", 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* WriteToParcel error " 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 252b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* CreateFromParcel error " 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 261b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesType::ReadFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* ReadFromParcel error " 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* WriteArrayToParcel error " 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 280b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* CreateArrayFromParcel error " 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 289b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project __FILE__, __LINE__, m_qualifiedName.c_str()); 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new LiteralExpression("/* ReadArrayFromParcel error " 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + m_qualifiedName + " */")); 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 298fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 299fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable* data, int flags) 300fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 30105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 302fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato __FILE__, __LINE__, m_qualifiedName.c_str()); 303fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new LiteralExpression("/* WriteToRpcData error " 304fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato + m_qualifiedName + " */")); 305fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 306fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 307fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 308fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 309fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable** cl) 310fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 31105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato fprintf(stderr, "aidl:internal error %s:%d qualifiedName=%s\n", 312fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato __FILE__, __LINE__, m_qualifiedName.c_str()); 313fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new LiteralExpression("/* ReadFromRpcData error " 314fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato + m_qualifiedName + " */")); 315fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 316fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 317fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::SetQualifiedName(const string& qualified) 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_qualifiedName = qualified; 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectExpression* 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType::BuildWriteToParcelFlags(int flags) 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (flags == 0) { 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new LiteralExpression("0"); 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((flags&PARCELABLE_WRITE_RETURN_VALUE) != 0) { 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new FieldVariable(PARCELABLE_INTERFACE_TYPE, 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "PARCELABLE_WRITE_RETURN_VALUE"); 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new LiteralExpression("0"); 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 33805ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBasicType::BasicType(const string& name, const string& marshallParcel, 33905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& unmarshallParcel, const string& writeArrayParcel, 34005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& createArrayParcel, const string& readArrayParcel, 34105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& marshallRpc, const string& unmarshallRpc, 34205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato const string& writeArrayRpc, const string& createArrayRpc, const string& readArrayRpc) 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type(name, BUILT_IN, true, false), 34405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_marshallParcel(marshallParcel), 34505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_unmarshallParcel(unmarshallParcel), 34605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_writeArrayParcel(writeArrayParcel), 34705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_createArrayParcel(createArrayParcel), 34805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_readArrayParcel(readArrayParcel), 34905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_marshallRpc(marshallRpc), 35005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_unmarshallRpc(unmarshallRpc), 35105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_writeArrayRpc(writeArrayRpc), 35205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_createArrayRpc(createArrayRpc), 35305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato m_readArrayRpc(readArrayRpc) 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 36005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(parcel, m_marshallParcel, 1, v)); 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 364b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBasicType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 36605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(parcel, m_unmarshallParcel))); 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::CanBeArray() const 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 37805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(parcel, m_writeArrayParcel, 1, v)); 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBasicType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 383b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 38505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(parcel, m_createArrayParcel))); 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 389b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBasicType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 39105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(parcel, m_readArrayParcel, 1, v)); 39205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 39305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 39405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 39505ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBasicType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 39605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 39705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 39805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, m_marshallRpc, 2, k, v)); 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 40105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 40205ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBasicType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 40305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 40405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 40505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, m_unmarshallRpc, 1, k))); 40605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::BooleanType() 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("boolean", BUILT_IN, true, false) 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeInt", 1, 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Ternary(v, new LiteralExpression("1"), 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("0")))); 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 424b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBooleanType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new Comparison(new LiteralExpression("0"), 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "!=", new MethodCall(parcel, "readInt")))); 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::CanBeArray() const 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeBooleanArray", 1, v)); 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBooleanType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 444b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createBooleanArray"))); 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 450b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesBooleanType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readBooleanArray", 1, v)); 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 45505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 45605ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBooleanType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 45705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 45805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 45905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putBoolean", 2, k, v)); 46005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 46105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 46205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 46305ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoBooleanType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 46405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 46505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 46605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getBoolean", 1, k))); 46705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::CharType() 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("char", BUILT_IN, true, false) 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeInt", 1, 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Cast(INT_TYPE, v))); 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 484b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesCharType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "readInt"), this)); 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::CanBeArray() const 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 4969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeCharArray", 1, v)); 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 503b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createCharArray"))); 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 509b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesCharType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readCharArray", 1, v)); 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 51405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 51505ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoCharType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 51605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 51705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 51805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putChar", 2, k, v)); 51905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 52005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 52105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 52205ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoCharType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 52305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 52405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 52505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getChar", 1, k))); 52605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 52705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::StringType() 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("java.lang", "String", BUILT_IN, true, false) 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::CreatorName() const 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "android.os.Parcel.STRING_CREATOR"; 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeString", 1, v)); 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 548b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesStringType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "readString"))); 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::CanBeArray() const 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStringArray", 1, v)); 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectStringType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 567b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createStringArray"))); 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 573b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesStringType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readStringArray", 1, v)); 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 578fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 579fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoStringType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 580fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable* data, int flags) 581fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 582fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new MethodCall(data, "putString", 2, k, v)); 583fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 584fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 585fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onoratovoid 586fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe OnoratoStringType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 587fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato Variable* data, Variable**) 588fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato{ 589fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getString", 1, k))); 590fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato} 591fdfe2ff8c60c367a4eb7cecb4cbe1d62b41a8c20Joe Onorato 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::CharSequenceType() 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("java.lang", "CharSequence", BUILT_IN, true, false) 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::CreatorName() const 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "android.os.Parcel.STRING_CREATOR"; 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (v != null) { 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(1); 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v.writeToParcel(parcel); 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(0); 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new MethodCall(parcel, "writeInt", 1, 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("0"))); 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement; 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(v, "!=", NULL_VALUE); 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(parcel, "writeInt", 1, 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("1"))); 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(TEXT_UTILS_TYPE, "writeToParcel", 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3, v, parcel, BuildWriteToParcelFlags(flags))); 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectCharSequenceType::CreateFromParcel(StatementBlock* addTo, Variable* v, 630b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (0 != parcel.readInt()) { 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = TextUtils.createFromParcel(parcel) 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = null; 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new Assignment(v, NULL_VALUE)); 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement(); 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(new LiteralExpression("0"), "!=", 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readInt")); 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new Assignment(v, 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(TEXT_UTILS_TYPE, 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "CHAR_SEQUENCE_CREATOR.createFromParcel", 1, parcel))); 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRemoteExceptionType::RemoteExceptionType() 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("android.os", "RemoteException", BUILT_IN, false, false) 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRemoteExceptionType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 666b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesRemoteExceptionType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRuntimeExceptionType::RuntimeExceptionType() 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("java.lang", "RuntimeException", BUILT_IN, false, false) 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectRuntimeExceptionType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 685b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesRuntimeExceptionType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::IBinderType() 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("android.os", "IBinder", BUILT_IN, true, false) 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStrongBinder", 1, v)); 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 705b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesIBinderType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "readStrongBinder"))); 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeBinderArray", 1, v)); 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIBinderType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 718b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, "createBinderArray"))); 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 724b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesIBinderType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readBinderArray", 1, v)); 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIInterfaceType::IInterfaceType() 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("android.os", "IInterface", BUILT_IN, false, false) 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectIInterfaceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 744b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesIInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, 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 ProjectBinderType::BinderType() 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("android.os", "Binder", BUILT_IN, 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 ProjectBinderType::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 ProjectBinderType::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 ProjectBinderProxyType::BinderProxyType() 7749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("android.os", "BinderProxy", BUILT_IN, 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 ProjectBinderProxyType::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 7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectBinderProxyType::CreateFromParcel(StatementBlock* addTo, Variable* v, 786b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 7879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 7899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 7939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelType::ParcelType() 7959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("android.os", "Parcel", BUILT_IN, false, false) 7969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 7979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 7989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 8019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 8039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 806b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesParcelType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 8079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableInterfaceType::ParcelableInterfaceType() 8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("android.os", "Parcelable", BUILT_IN, false, false) 8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableInterfaceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 825b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesParcelableInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "aidl:internal error %s:%d\n", __FILE__, __LINE__); 8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 8319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectMapType::MapType() 8339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("java.util", "Map", BUILT_IN, true, true) 8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectMapType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 8399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeMap", 1, v)); 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 843b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughesstatic void EnsureClassLoader(StatementBlock* addTo, Variable** cl) 844b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes{ 845b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes // We don't want to look up the class loader once for every 846b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes // collection argument, so ensure we do it at most once per method. 847b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes if (*cl == NULL) { 848b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes *cl = new Variable(CLASSLOADER_TYPE, "cl"); 849b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new VariableDeclaration(*cl, 850b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes new LiteralExpression("this.getClass().getClassLoader()"), 851b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes CLASSLOADER_TYPE)); 852b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes } 853b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes} 854b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes 8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 856b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesMapType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable** cl) 8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 858b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 859b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new Assignment(v, new MethodCall(parcel, "readHashMap", 1, *cl))); 8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 86305ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoMapType::ReadFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable** cl) 8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 865b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 866b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new MethodCall(parcel, "readMap", 2, v, *cl)); 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::ListType() 8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("java.util", "List", BUILT_IN, true, true) 8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::InstantiableName() const 8799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "java.util.ArrayList"; 8819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 8859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 8869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeList", 1, v)); 8879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 890b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesListType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable** cl) 8919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 892b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 893b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new Assignment(v, new MethodCall(parcel, "readArrayList", 1, *cl))); 8949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectListType::ReadFromParcel(StatementBlock* addTo, Variable* v, 898b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable** cl) 8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 900b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes EnsureClassLoader(addTo, cl); 901b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes addTo->Add(new MethodCall(parcel, "readList", 2, v, *cl)); 9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 90405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 90505ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoListType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 90605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 90705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 90805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putList", 2, k, v)); 90905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 91005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 91105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 91205ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, 91305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable** cl) 91405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 91505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getList", 1, k))); 91605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::ParcelableType(const string& package, const string& name, 9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool builtIn, const string& declFile, int declLine) 9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type(package, name, builtIn ? BUILT_IN : PARCELABLE, true, true, 9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project declFile, declLine) 9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 9289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::CreatorName() const 9299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return QualifiedName() + ".CREATOR"; 9319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 9349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 9359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (v != null) { 9379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(1); 9389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v.writeToParcel(parcel); 9399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 9409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeInt(0); 9419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 9429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 9439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new MethodCall(parcel, "writeInt", 1, 9449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("0"))); 9459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement; 9469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(v, "!=", NULL_VALUE); 9479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 9489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(parcel, "writeInt", 1, 9499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression("1"))); 9509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(v, "writeToParcel", 2, 9519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project parcel, BuildWriteToParcelFlags(flags))); 9529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 9549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 957b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesParcelableType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 9589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (0 != parcel.readInt()) { 9609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = CLASS.CREATOR.createFromParcel(parcel) 9619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } else { 9629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = null; 9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* elsepart = new IfStatement(); 9659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project elsepart->statements->Add(new Assignment(v, NULL_VALUE)); 9669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement(); 9689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(new LiteralExpression("0"), "!=", 9699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readInt")); 9709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->elseif = elsepart; 9719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new Assignment(v, 9729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(v->type, "CREATOR.createFromParcel", 1, parcel))); 9739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 9759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 9789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::ReadFromParcel(StatementBlock* addTo, Variable* v, 979b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 9809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // TODO: really, we don't need to have this extra check, but we 9829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // don't have two separate marshalling code paths 9839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // if (0 != parcel.readInt()) { 9849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v.readFromParcel(parcel) 9859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // } 9869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project IfStatement* ifpart = new IfStatement(); 9879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->expression = new Comparison(new LiteralExpression("0"), "!=", 9889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readInt")); 9899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ifpart->statements->Add(new MethodCall(v, "readFromParcel", 1, parcel)); 9909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(ifpart); 9919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 9949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::CanBeArray() const 9959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 9969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 9979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 9989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 10009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::WriteArrayToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeTypedArray", 2, v, 10039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project BuildWriteToParcelFlags(flags))); 10049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 10079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectParcelableType::CreateArrayFromParcel(StatementBlock* addTo, Variable* v, 1008b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 10099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string creator = v->type->QualifiedName() + ".CREATOR"; 10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, new MethodCall(parcel, 10129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "createTypedArray", 1, new LiteralExpression(creator)))); 10139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1016b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesParcelableType::ReadArrayFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 10179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string creator = v->type->QualifiedName() + ".CREATOR"; 10199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readTypedArray", 2, 10209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v, new LiteralExpression(creator))); 10219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 10259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectInterfaceType::InterfaceType(const string& package, const string& name, 10279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project bool builtIn, bool oneway, 10289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const string& declFile, int declLine) 10299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type(package, name, builtIn ? BUILT_IN : INTERFACE, true, false, 10309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project declFile, declLine) 10319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ,m_oneway(oneway) 10329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbool 10369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectInterfaceType::OneWay() const 10379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_oneway; 10399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 10429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectInterfaceType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 10439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeStrongBinder(v != null ? v.asBinder() : null); 10459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStrongBinder", 1, 10469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Ternary( 10479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Comparison(v, "!=", NULL_VALUE), 10489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(v, "asBinder"), 10499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project NULL_VALUE))); 10509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1053b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesInterfaceType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 10549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = Interface.asInterface(parcel.readStrongBinder()); 10569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string type = v->type->QualifiedName(); 10579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project type += ".Stub"; 10589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 10599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall( NAMES.Find(type), "asInterface", 1, 10609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "readStrongBinder")))); 10619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 10659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::GenericType(const string& package, const string& name, 10679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const vector<Type*>& args) 10689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type(package, name, BUILT_IN, true, true) 10699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_args = args; 10719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_importName = package + '.' + name; 10739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 10749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string gen = "<"; 10759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = args.size(); 10769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 10779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = args[i]; 10789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gen += t->QualifiedName(); 10799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (i != N-1) { 10809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gen += ','; 10819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 10839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gen += '>'; 10849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_genericArguments = gen; 10859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project SetQualifiedName(m_importName + gen); 10869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 108805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratoconst vector<Type*>& 108905ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoGenericType::GenericArgumentTypes() const 109005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 109105ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato return m_args; 109205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 109305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 10949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 10959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::GenericArguments() const 10969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 10979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_genericArguments; 10989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 10999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::ImportType() const 11029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_importName; 11049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 11079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 11089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "implement GenericType::WriteToParcel\n"); 11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1113b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesGenericType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 11149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "implement GenericType::CreateFromParcel\n"); 11169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 11199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericType::ReadFromParcel(StatementBlock* addTo, Variable* v, 1120b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 11219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project fprintf(stderr, "implement GenericType::ReadFromParcel\n"); 11239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 11279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::GenericListType(const string& package, const string& name, 11299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const vector<Type*>& args) 11309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :GenericType(package, name, args), 11319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_creator(args[0]->CreatorName()) 11329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::CreatorName() const 11379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "android.os.Parcel.arrayListCreator"; 11399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstring 11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::InstantiableName() const 11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "java.util.ArrayList" + GenericArguments(); 11459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 11489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) 11499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_creator == STRING_TYPE->CreatorName()) { 11519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeStringList", 1, v)); 11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (m_creator == IBINDER_TYPE->CreatorName()) { 11539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeBinderList", 1, v)); 11549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 11559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // parcel.writeTypedListXX(arg); 11569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "writeTypedList", 1, v)); 11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 1161b9eba866b203b28e58f35598023f49b4b58a0635Elliott HughesGenericListType::CreateFromParcel(StatementBlock* addTo, Variable* v, Variable* parcel, Variable**) 11629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_creator == STRING_TYPE->CreatorName()) { 11649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 11659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "createStringArrayList", 0))); 11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (m_creator == IBINDER_TYPE->CreatorName()) { 11679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 11689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "createBinderArrayList", 0))); 11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 11709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = _data.readTypedArrayList(XXX.creator); 11719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new Assignment(v, 11729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new MethodCall(parcel, "createTypedArrayList", 1, 11739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression(m_creator)))); 11749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectGenericListType::ReadFromParcel(StatementBlock* addTo, Variable* v, 1179b9eba866b203b28e58f35598023f49b4b58a0635Elliott Hughes Variable* parcel, Variable**) 11809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 11819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_creator == STRING_TYPE->CreatorName()) { 11829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readStringList", 1, v)); 11839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (m_creator == IBINDER_TYPE->CreatorName()) { 11849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readBinderList", 1, v)); 11859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 11869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // v = _data.readTypedList(v, XXX.creator); 11879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project addTo->Add(new MethodCall(parcel, "readTypedList", 2, 11889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project v, 11899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new LiteralExpression(m_creator))); 11909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 11919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 11929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 119305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 119405ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoGenericListType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, 119505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, int flags) 119605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 119705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new MethodCall(data, "putList", 2, k, v)); 119805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 119905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 120005ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onoratovoid 120105ffbe7c020c59ee4fa7e13e04641c954d591951Joe OnoratoGenericListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, 120205ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato Variable* data, Variable** cl) 120305ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato{ 120405ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato string classArg = GenericArgumentTypes()[0]->QualifiedName(); 120505ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato classArg += ".class"; 120605ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato addTo->Add(new Assignment(v, new MethodCall(data, "getList", 2, k, 120705ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato new LiteralExpression(classArg)))); 120805ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato} 120905ffbe7c020c59ee4fa7e13e04641c954d591951Joe Onorato 12109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 12119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectClassLoaderType::ClassLoaderType() 12139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project :Type("java.lang", "ClassLoader", BUILT_IN, false, false) 12149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ================================================================ 12199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Namespace() 12219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::~Namespace() 12259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_types.size(); 12279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 12289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project delete m_types[i]; 12299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 12339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Add(Type* type) 12349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = Find(type->QualifiedName()); 12369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (t == NULL) { 12379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_types.push_back(type); 12389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 12429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::AddGenericType(const string& package, const string& name, int args) 12439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Generic g; 12459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.package = package; 12469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.name = name; 12479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.qualified = package + '.' + name; 12489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project g.args = args; 12499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project m_generics.push_back(g); 12509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* 12539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Find(const string& name) const 12549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_types.size(); 12569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 12579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (m_types[i]->QualifiedName() == name) { 12589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_types[i]; 12599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 12629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* 12659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Find(const char* package, const char* name) const 12669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string s; 12689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (package != NULL) { 12699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += package; 12709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += '.'; 12719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project s += name; 12739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return Find(s); 12749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectstatic string 12779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnormalize_generic(const string& s) 12789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string r; 12809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = s.size(); 12819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 12829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char c = s[i]; 12839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!isspace(c)) { 12849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project r += c; 12859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return r; 12889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 12899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectType* 12919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Search(const string& name) 12929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 12939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // an exact match wins 12949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* result = Find(name); 12959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (result != NULL) { 12969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return result; 12979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 12989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // try the class names 13009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // our language doesn't allow you to not specify outer classes 13019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // when referencing an inner class. that could be changed, and this 13029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // would be the place to do it, but I don't think the complexity in 13039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // scoping rules is worth it. 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 if (m_types[i]->Name() == name) { 13079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return m_types[i]; 13089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // we got to here and it's not a generic, give up 13129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (name.find('<') == name.npos) { 13139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // remove any whitespace 13179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string normalized = normalize_generic(name); 13189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // find the part before the '<', find a generic for it 13209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ssize_t baseIndex = normalized.find('<'); 13219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string base(normalized.c_str(), baseIndex); 13229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Generic* g = search_generic(base); 13239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g == NULL) { 13249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // For each of the args, do a recursive search on it. We don't allow 13289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // generics within generics like Java does, because we're really limiting 13299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // them to just built-in container classes, at least for now. Our syntax 13309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ensures this right now as well. 13319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project vector<Type*> args; 13329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t start = baseIndex + 1; 13339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project size_t end = start; 13349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project while (normalized[start] != '\0') { 13359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project end = normalized.find(',', start); 13369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (end == normalized.npos) { 13379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project end = normalized.find('>', start); 13389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project string s(normalized.c_str()+start, end-start); 13409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = this->Search(s); 13419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (t == NULL) { 13429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // maybe we should print a warning here? 13439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project args.push_back(t); 13469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project start = end+1; 13479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // construct a GenericType, add it to our name set so they always get 13509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // the same object, and return it. 13519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project result = make_generic_type(g->package, g->name, args); 13529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (result == NULL) { 13539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this->Add(result); 13579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return this->Find(result->QualifiedName()); 13589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectconst Namespace::Generic* 13619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::search_generic(const string& name) const 13629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int N = m_generics.size(); 13649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // first exact match 13669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 13679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Generic& g = m_generics[i]; 13689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g.qualified == name) { 13699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return &g; 13709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // then name match 13749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<N; i++) { 13759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const Generic& g = m_generics[i]; 13769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (g.name == name) { 13779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return &g; 13789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return NULL; 13829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 13839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvoid 13859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectNamespace::Dump() const 13869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{ 13879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int n = m_types.size(); 13889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project for (int i=0; i<n; i++) { 13899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Type* t = m_types[i]; 13909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project printf("type: package=%s name=%s qualifiedName=%s\n", 13919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t->Package().c_str(), t->Name().c_str(), 13929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project t->QualifiedName().c_str()); 13939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 13949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1395