aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2017-12-12 05:06:39 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-12-12 05:06:39 +0000
commit49aa9b28f02bb83089ce785738dbd21e472c1cf7 (patch)
tree716d8a3845931e07809dcc782c7edb30d50cafb6
parentb1e82cb680903d9689f5a91ab2ccb05cf03e8692 (diff)
parenta8a66fe0153dec808afb6b7a448a65e9cade21e9 (diff)
downloadaidl-49aa9b28f02bb83089ce785738dbd21e472c1cf7.tar.gz
AIDL: Add StubClass::finish
am: a8a66fe015 Change-Id: I138a10a47768d300ad1e2f56c50b523cbe6f2e90
-rw-r--r--generate_java_binder.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/generate_java_binder.cpp b/generate_java_binder.cpp
index 95bf8d99..87fb12d4 100644
--- a/generate_java_binder.cpp
+++ b/generate_java_binder.cpp
@@ -46,6 +46,9 @@ class StubClass : public Class {
Variable* transact_flags;
SwitchStatement* transact_switch;
+ // Finish generation. This will add a default case to the switch.
+ void finish();
+
private:
void make_as_interface(const InterfaceType* interfaceType,
JavaTypeNamespace* types);
@@ -115,10 +118,16 @@ StubClass::StubClass(const Type* type, const InterfaceType* interfaceType,
this->transact_switch = new SwitchStatement(this->transact_code);
onTransact->statements->Add(this->transact_switch);
+}
+
+void StubClass::finish() {
+ Case* default_case = new Case;
+
MethodCall* superCall = new MethodCall(
- SUPER_VALUE, "onTransact", 4, this->transact_code, this->transact_data,
- this->transact_reply, this->transact_flags);
- onTransact->statements->Add(new ReturnStatement(superCall));
+ SUPER_VALUE, "onTransact", 4, this->transact_code, this->transact_data,
+ this->transact_reply, this->transact_flags);
+ default_case->statements->Add(new ReturnStatement(superCall));
+ transact_switch->cases.push_back(default_case);
}
void StubClass::make_as_interface(const InterfaceType* interfaceType,
@@ -604,6 +613,7 @@ Class* generate_binder_interface_class(const AidlInterface* iface,
for (const auto& item : iface->GetMethods()) {
generate_methods(*item, interface, stub, proxy, item->GetId(), types);
}
+ stub->finish();
return interface;
}