diff options
author | Jeongik Cha <jeongik@google.com> | 2021-09-30 09:41:37 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-09-30 09:41:37 +0000 |
commit | e27ccbada4f828d1677a850941982248ba0d4b67 (patch) | |
tree | 89242506c5de2f390772de7dad9c49d988311673 | |
parent | 7e9f9bcdb79aba7eeb9efc0b2e678f4ba8b071a4 (diff) | |
parent | f2e752316b0d9d2708bc56d20c1649e704bca030 (diff) | |
download | aidl-e27ccbada4f828d1677a850941982248ba0d4b67.tar.gz |
An enum is initialized as zero if it doesn't have default value am: f2e752316b
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/tools/aidl/+/15905949
Change-Id: I3f5c81730433c0e3fd2ed325e7762a25425db416
-rw-r--r-- | generate_cpp.cpp | 7 | ||||
-rw-r--r-- | generate_ndk.cpp | 7 |
2 files changed, 14 insertions, 0 deletions
diff --git a/generate_cpp.cpp b/generate_cpp.cpp index cc256573..bbee9b3a 100644 --- a/generate_cpp.cpp +++ b/generate_cpp.cpp @@ -1111,6 +1111,13 @@ std::unique_ptr<Document> BuildParcelHeader(const AidlTypenames& typenames, if (variable->GetDefaultValue()) { out << " = " << cppType.c_str() << "(" << variable->ValueString(ConstantValueDecorator) << ")"; + } else if (auto type = typenames.TryGetDefinedType(variable->GetType().GetName()); type) { + if (auto enum_type = type->AsEnumDeclaration(); enum_type) { + if (!variable->GetType().IsArray()) { + // if an enum doesn't have explicit default value, do zero-initialization + out << " = " << cppType << "(0)"; + } + } } out << ";\n"; diff --git a/generate_ndk.cpp b/generate_ndk.cpp index 274d283f..0efd7eb7 100644 --- a/generate_ndk.cpp +++ b/generate_ndk.cpp @@ -879,6 +879,13 @@ void GenerateParcelHeader(CodeWriter& out, const AidlTypenames& types, out << NdkNameOf(types, variable->GetType(), StorageMode::STACK) << " " << variable->GetName(); if (variable->GetDefaultValue()) { out << " = " << variable->ValueString(ConstantValueDecorator); + } else if (auto type = types.TryGetDefinedType(variable->GetType().GetName()); type) { + if (auto enum_type = type->AsEnumDeclaration(); enum_type) { + if (!variable->GetType().IsArray()) { + // if an enum doesn't have explicit default value, do zero-initialization + out << " = " << NdkNameOf(types, variable->GetType(), StorageMode::STACK) << "(0)"; + } + } } out << ";\n"; } |