diff options
author | Andreas Gampe <agampe@google.com> | 2017-12-12 05:06:39 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-12-12 05:06:39 +0000 |
commit | 49aa9b28f02bb83089ce785738dbd21e472c1cf7 (patch) | |
tree | 716d8a3845931e07809dcc782c7edb30d50cafb6 | |
parent | b1e82cb680903d9689f5a91ab2ccb05cf03e8692 (diff) | |
parent | a8a66fe0153dec808afb6b7a448a65e9cade21e9 (diff) | |
download | aidl-49aa9b28f02bb83089ce785738dbd21e472c1cf7.tar.gz |
AIDL: Add StubClass::finish
am: a8a66fe015
Change-Id: I138a10a47768d300ad1e2f56c50b523cbe6f2e90
-rw-r--r-- | generate_java_binder.cpp | 16 |
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; } |