Loading tools/aidl/Type.cpp +32 −5 Original line number Diff line number Diff line Loading @@ -211,6 +211,12 @@ Type::CreatorName() const return ""; } string Type::RpcCreatorName() const { return ""; } string Type::InstantiableName() const { Loading Loading @@ -910,6 +916,12 @@ UserDataType::CreatorName() const return QualifiedName() + ".CREATOR"; } string UserDataType::RpcCreatorName() const { return QualifiedName() + ".RPC_CREATOR"; } void UserDataType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) { Loading Loading @@ -1221,18 +1233,33 @@ void GenericListType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, int flags) { Type* generic = GenericArgumentTypes()[0]; if (generic == RPC_DATA_TYPE) { addTo->Add(new MethodCall(data, "putRpcDataList", 2, k, v)); } else if (generic->RpcCreatorName() != "") { addTo->Add(new MethodCall(data, "putFlattenableList", 2, k, v)); } else { addTo->Add(new MethodCall(data, "putList", 2, k, v)); } } void GenericListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, Variable** cl) { Type* generic = GenericArgumentTypes()[0]; if (generic == RPC_DATA_TYPE) { addTo->Add(new Assignment(v, new MethodCall(data, "getRpcDataList", 2, k))); } else if (generic->RpcCreatorName() != "") { addTo->Add(new Assignment(v, new MethodCall(data, "getFlattenableList", 2, k, new LiteralExpression(generic->RpcCreatorName())))); } else { string classArg = GenericArgumentTypes()[0]->QualifiedName(); classArg += ".class"; addTo->Add(new Assignment(v, new MethodCall(data, "getList", 2, k, new LiteralExpression(classArg)))); } } // ================================================================ Loading tools/aidl/Type.h +2 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ public: virtual string ImportType() const; virtual string CreatorName() const; virtual string RpcCreatorName() const; virtual string InstantiableName() const; virtual void WriteToParcel(StatementBlock* addTo, Variable* v, Loading Loading @@ -358,6 +359,7 @@ public: const string& declFile = "", int declLine = -1); virtual string CreatorName() const; virtual string RpcCreatorName() const; virtual void WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags); Loading Loading
tools/aidl/Type.cpp +32 −5 Original line number Diff line number Diff line Loading @@ -211,6 +211,12 @@ Type::CreatorName() const return ""; } string Type::RpcCreatorName() const { return ""; } string Type::InstantiableName() const { Loading Loading @@ -910,6 +916,12 @@ UserDataType::CreatorName() const return QualifiedName() + ".CREATOR"; } string UserDataType::RpcCreatorName() const { return QualifiedName() + ".RPC_CREATOR"; } void UserDataType::WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags) { Loading Loading @@ -1221,18 +1233,33 @@ void GenericListType::WriteToRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, int flags) { Type* generic = GenericArgumentTypes()[0]; if (generic == RPC_DATA_TYPE) { addTo->Add(new MethodCall(data, "putRpcDataList", 2, k, v)); } else if (generic->RpcCreatorName() != "") { addTo->Add(new MethodCall(data, "putFlattenableList", 2, k, v)); } else { addTo->Add(new MethodCall(data, "putList", 2, k, v)); } } void GenericListType::CreateFromRpcData(StatementBlock* addTo, Expression* k, Variable* v, Variable* data, Variable** cl) { Type* generic = GenericArgumentTypes()[0]; if (generic == RPC_DATA_TYPE) { addTo->Add(new Assignment(v, new MethodCall(data, "getRpcDataList", 2, k))); } else if (generic->RpcCreatorName() != "") { addTo->Add(new Assignment(v, new MethodCall(data, "getFlattenableList", 2, k, new LiteralExpression(generic->RpcCreatorName())))); } else { string classArg = GenericArgumentTypes()[0]->QualifiedName(); classArg += ".class"; addTo->Add(new Assignment(v, new MethodCall(data, "getList", 2, k, new LiteralExpression(classArg)))); } } // ================================================================ Loading
tools/aidl/Type.h +2 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ public: virtual string ImportType() const; virtual string CreatorName() const; virtual string RpcCreatorName() const; virtual string InstantiableName() const; virtual void WriteToParcel(StatementBlock* addTo, Variable* v, Loading Loading @@ -358,6 +359,7 @@ public: const string& declFile = "", int declLine = -1); virtual string CreatorName() const; virtual string RpcCreatorName() const; virtual void WriteToParcel(StatementBlock* addTo, Variable* v, Variable* parcel, int flags); Loading