aboutsummaryrefslogtreecommitdiff
path: root/generate_java.cpp
diff options
context:
space:
mode:
authorJooyung Han <jooyung@google.com>2020-10-15 16:41:38 +0900
committerJooyung Han <jooyung@google.com>2020-10-18 09:25:52 +0900
commit97945de2f0749ee1e1c4086582be2f89aab37ec8 (patch)
tree4c3e9a68f1e20890574e22ba2e7e54f6d1a3e7f5 /generate_java.cpp
parent14004ed5555139f95c7fa2f5b592d1db9993baf8 (diff)
downloadaidl-97945de2f0749ee1e1c4086582be2f89aab37ec8.tar.gz
fix format for union output (C++/Java)
- spacing between members - use C++-style casting instead of C-style - rename C++ internal names to use underscore prefix e.g. template <typename _Tp> .. - and fix a silly mistake (hard-coded constructor Union) Bug: 150948558 Test: aidl_unittests / aidl_integration_test Change-Id: Id2bc916760dbd0f0f5257996be135df5c8474931
Diffstat (limited to 'generate_java.cpp')
-rw-r--r--generate_java.cpp50
1 files changed, 25 insertions, 25 deletions
diff --git a/generate_java.cpp b/generate_java.cpp
index daf4147b..aeeea816 100644
--- a/generate_java.cpp
+++ b/generate_java.cpp
@@ -470,11 +470,11 @@ void generate_union(CodeWriter& out, const AidlUnionDecl* decl, const AidlTypena
out.Indent();
size_t tag_index = 0;
- out << "// tags union fields\n";
+ out << "// tags for union fields\n";
for (const auto& variable : decl->GetFields()) {
- auto raw_type = variable->GetType().ToString();
+ auto signature = variable->Signature() + ";";
out << "public final static " + tag_type + " " + variable->GetName() + " = " +
- std::to_string(tag_index++) + "; // " + raw_type + "\n";
+ std::to_string(tag_index++) + "; // " + signature + "\n";
}
out << "\n";
@@ -493,35 +493,35 @@ void generate_union(CodeWriter& out, const AidlUnionDecl* decl, const AidlTypena
out << first_type + " value = " << (first_value.empty() ? "null" : first_value) << ";\n";
out << "_set(" + first_field->GetName() + ", value);\n";
out.Dedent();
- out << "}\n";
+ out << "}\n\n";
+
// ctor(Parcel)
out << "private " + clazz + "(android.os.Parcel _aidl_parcel) {\n";
out << " readFromParcel(_aidl_parcel);\n";
- out << "}\n";
+ out << "}\n\n";
+
// ctor(tag, value)
out << "private " + clazz + "(" + tag_type + " tag, Object value) {\n";
out << " _set(tag, value);\n";
- out << "}\n";
- out << "\n";
+ out << "}\n\n";
// getTag()
out << "public " + tag_type + " " + "getTag() {\n";
out << " return " + tag_name + ";\n";
- out << "}\n";
- out << "\n";
+ out << "}\n\n";
// value ctor, getter, setter for each field
for (const auto& variable : decl->GetFields()) {
auto var_name = variable->GetName();
auto var_type = JavaSignatureOf(variable->GetType(), typenames);
- auto raw_type = variable->GetType().ToString();
- out << "// " + raw_type + " " + var_name + "\n";
+ out << "// " + variable->Signature() + ";\n";
// value ctor
out << variable->GetType().GetComments() + "\n";
out << "public static " + clazz + " " + var_name + "(" + var_type + " " + value_name + ") {\n";
out << " return new " + clazz + "(" + var_name + ", " + value_name + ");\n";
- out << "}\n";
+ out << "}\n\n";
+
// getter
if (variable->GetType().IsGeneric()) {
out << "@SuppressWarnings(\"unchecked\")\n";
@@ -529,33 +529,32 @@ void generate_union(CodeWriter& out, const AidlUnionDecl* decl, const AidlTypena
out << "public " + var_type + " " + getter_name(*variable) + "() {\n";
out << " _assertTag(" + var_name + ");\n";
out << " return (" + var_type + ") " + value_name + ";\n";
- out << "}\n";
+ out << "}\n\n";
+
// setter
out << "public void " + setter_name(*variable) + "(" + var_type + " " + value_name + ") {\n";
out << " _set(" + var_name + ", " + value_name + ");\n";
- out << "}\n";
- out << "\n";
+ out << "}\n\n";
}
if (decl->IsVintfStability()) {
out << "@Override\n";
out << "public final int getStability() {\n";
out << " return android.os.Parcelable.PARCELABLE_STABILITY_VINTF;\n";
- out << "}\n";
- out << "\n";
+ out << "}\n\n";
}
out << "public static final android.os.Parcelable.Creator<" << clazz << "> CREATOR = "
<< "new android.os.Parcelable.Creator<" << clazz << ">() {\n";
out << " @Override\n";
out << " public " << clazz << " createFromParcel(android.os.Parcel _aidl_source) {\n";
- out << " return new Union(_aidl_source);\n"; // to avoid unnecessary allocation of "default"
+ out << " return new " << clazz << "(_aidl_source);\n";
out << " }\n";
out << " @Override\n";
out << " public " << clazz << "[] newArray(int _aidl_size) {\n";
out << " return new " << clazz << "[_aidl_size];\n";
out << " }\n";
- out << "};\n";
+ out << "};\n\n";
auto write_to_parcel = [&](const AidlTypeSpecifier& type, std::string name, std::string parcel) {
string code;
@@ -584,7 +583,7 @@ void generate_union(CodeWriter& out, const AidlUnionDecl* decl, const AidlTypena
out << " break;\n";
}
out << " }\n";
- out << "}\n";
+ out << "}\n\n";
// keep this across different fields in order to create the classloader
// at most once.
@@ -621,13 +620,12 @@ void generate_union(CodeWriter& out, const AidlUnionDecl* decl, const AidlTypena
}
out << " }\n";
out << " throw new RuntimeException(\"union: out of range: \" + _aidl_tag);\n";
- out << "}\n";
+ out << "}\n\n";
out << "@Override\n";
out << "public int describeContents() {\n";
out << " return 0;\n";
- out << "}\n";
- out << "\n";
+ out << "}\n\n";
// helper: _assertTag
out << "private void _assertTag(" + tag_type + " tag) {\n";
@@ -635,7 +633,8 @@ void generate_union(CodeWriter& out, const AidlUnionDecl* decl, const AidlTypena
out << " throw new IllegalStateException(\"bad access: \" + _tagString(tag) + \", \" + "
"_tagString(getTag()) + \" is available.\");\n";
out << " }\n";
- out << "}\n";
+ out << "}\n\n";
+
// helper: _tagString
out << "private String _tagString(" + tag_type + " " + tag_name + ") {\n";
out << " switch (" + tag_name + ") {\n";
@@ -645,7 +644,8 @@ void generate_union(CodeWriter& out, const AidlUnionDecl* decl, const AidlTypena
}
out << " }\n";
out << " throw new IllegalStateException(\"unknown field: \" + " + tag_name + ");\n";
- out << "}\n";
+ out << "}\n\n";
+
// helper: _set
out << "private void _set(" + tag_type + " tag, Object value) {\n";
out << " this." + tag_name + " = tag;\n";