summaryrefslogtreecommitdiff
path: root/tools/aidl/generate_java.cpp
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2011-07-13 12:10:30 -0700
committerElliott Hughes <enh@google.com>2011-07-13 12:10:30 -0700
commitb9eba866b203b28e58f35598023f49b4b58a0635 (patch)
treef32811a7b51001e4cd6e85fa44b0f199bf1e8a55 /tools/aidl/generate_java.cpp
parent4a6d113ba0f33ce5dc14e59463e928ba309e1c2e (diff)
Fix aidl to cope with multiple collection types per method.
Bug: http://code.google.com/p/android/issues/detail?id=18497 Change-Id: I152416022524d2860cb16b46c4812c5be6bdcbad
Diffstat (limited to 'tools/aidl/generate_java.cpp')
-rw-r--r--tools/aidl/generate_java.cpp19
1 files changed, 10 insertions, 9 deletions
diff --git a/tools/aidl/generate_java.cpp b/tools/aidl/generate_java.cpp
index 0f18132fc82e..83e3bbc26783 100644
--- a/tools/aidl/generate_java.cpp
+++ b/tools/aidl/generate_java.cpp
@@ -286,25 +286,25 @@ generate_write_to_parcel(Type* t, StatementBlock* addTo, Variable* v,
static void
generate_create_from_parcel(Type* t, StatementBlock* addTo, Variable* v,
- Variable* parcel)
+ Variable* parcel, Variable** cl)
{
if (v->dimension == 0) {
- t->CreateFromParcel(addTo, v, parcel);
+ t->CreateFromParcel(addTo, v, parcel, cl);
}
if (v->dimension == 1) {
- t->CreateArrayFromParcel(addTo, v, parcel);
+ t->CreateArrayFromParcel(addTo, v, parcel, cl);
}
}
static void
generate_read_from_parcel(Type* t, StatementBlock* addTo, Variable* v,
- Variable* parcel)
+ Variable* parcel, Variable** cl)
{
if (v->dimension == 0) {
- t->ReadFromParcel(addTo, v, parcel);
+ t->ReadFromParcel(addTo, v, parcel, cl);
}
if (v->dimension == 1) {
- t->ReadArrayFromParcel(addTo, v, parcel);
+ t->ReadArrayFromParcel(addTo, v, parcel, cl);
}
}
@@ -362,6 +362,7 @@ generate_method(const method_type* method, Class* interface,
"enforceInterface", 1, new LiteralExpression("DESCRIPTOR")));
// args
+ Variable* cl = NULL;
VariableFactory stubArgs("_arg");
arg = method->args;
while (arg != NULL) {
@@ -373,7 +374,7 @@ generate_method(const method_type* method, Class* interface,
if (convert_direction(arg->direction.data) & IN_PARAMETER) {
generate_create_from_parcel(t, c->statements, v,
- stubClass->transact_data);
+ stubClass->transact_data, &cl);
} else {
if (arg->type.dimension == 0) {
c->statements->Add(new Assignment(
@@ -531,7 +532,7 @@ generate_method(const method_type* method, Class* interface,
if (_reply != NULL) {
if (_result != NULL) {
generate_create_from_parcel(proxy->returnType,
- tryStatement->statements, _result, _reply);
+ tryStatement->statements, _result, _reply, &cl);
}
// the out/inout parameters
@@ -541,7 +542,7 @@ generate_method(const method_type* method, Class* interface,
Variable* v = new Variable(t, arg->name.data, arg->type.dimension);
if (convert_direction(arg->direction.data) & OUT_PARAMETER) {
generate_read_from_parcel(t, tryStatement->statements,
- v, _reply);
+ v, _reply, &cl);
}
arg = arg->next;
}