diff options
author | Joe Onorato <joeo@google.com> | 2011-09-02 15:29:39 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-09-02 15:29:39 -0700 |
commit | ec12dc01af0a612ff9e8915ac27575ffa1309571 (patch) | |
tree | bc8a340478c999ca800989499900520c9468d879 /tools/aidl/generate_java_rpc.cpp | |
parent | 1b883bf2689d2628e7e1d68059165001de9ad14d (diff) | |
parent | a1426e61f4004ed8744f81366d15c209fa7cf9b7 (diff) | |
download | frameworks_base-ec12dc01af0a612ff9e8915ac27575ffa1309571.zip frameworks_base-ec12dc01af0a612ff9e8915ac27575ffa1309571.tar.gz frameworks_base-ec12dc01af0a612ff9e8915ac27575ffa1309571.tar.bz2 |
Merge "Add the full suite of RpcData types." into ics-aah
Diffstat (limited to 'tools/aidl/generate_java_rpc.cpp')
-rw-r--r-- | tools/aidl/generate_java_rpc.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tools/aidl/generate_java_rpc.cpp b/tools/aidl/generate_java_rpc.cpp index f7489b3..456a950 100644 --- a/tools/aidl/generate_java_rpc.cpp +++ b/tools/aidl/generate_java_rpc.cpp @@ -169,7 +169,7 @@ ServiceBaseClass::generate_process() this->processMethod->statements->Add(new VariableDeclaration(requestData, new NewExpression(RPC_DATA_TYPE, 1, requestParam))); - this->resultData = new Variable(RPC_DATA_TYPE, "response"); + this->resultData = new Variable(RPC_DATA_TYPE, "resultData"); this->processMethod->statements->Add(new VariableDeclaration(this->resultData, NULL_VALUE)); } @@ -299,6 +299,7 @@ ResultDispatcherClass::AddMethod(int index, const string& name, Method** method, Case* c = new Case(format_int(index)); c->statements->Add(new MethodCall(new LiteralExpression("this"), name, 1, this->resultParam)); + c->statements->Add(new Break()); this->methodSwitch->cases.push_back(c); } @@ -579,6 +580,7 @@ generate_service_base_methods(const method_type* method, ServiceBaseClass* servi } // the real call + bool first = true; Variable* _result = NULL; if (0 == strcmp(method->type.type.data, "void")) { block->Add(realCall); @@ -587,6 +589,13 @@ generate_service_base_methods(const method_type* method, ServiceBaseClass* servi decl->returnTypeDimension); block->Add(new VariableDeclaration(_result, realCall)); + // need the result RpcData + if (first) { + block->Add(new Assignment(serviceBaseClass->resultData, + new NewExpression(RPC_DATA_TYPE))); + first = false; + } + // marshall the return value generate_write_to_data(decl->returnType, block, new StringLiteralExpression("_result"), _result, serviceBaseClass->resultData); @@ -600,6 +609,14 @@ generate_service_base_methods(const method_type* method, ServiceBaseClass* servi Variable* v = stubArgs.Get(i++); if (convert_direction(arg->direction.data) & OUT_PARAMETER) { + // need the result RpcData + if (first) { + block->Add(new Assignment(serviceBaseClass->resultData, + new NewExpression(RPC_DATA_TYPE))); + first = false; + } + + generate_write_to_data(t, block, new StringLiteralExpression(arg->name.data), v, serviceBaseClass->resultData); } |