summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVova Sharaienko <sharaienko@google.com>2023-01-14 09:46:03 +0000
committerVova Sharaienko <sharaienko@google.com>2023-01-19 21:02:34 +0000
commit2fb31879e545949b217d7cb9bd9dd0ab59da1a71 (patch)
tree8ce53c3d0aef5ab56230de539873a189c355fa12
parent4da5bea5bdbbeeffd4270e1b74ce53c2bc287e3d (diff)
downloadproto_logging-main-16k-with-phones.tar.gz
Removed empty classes generation for atom messagesmain-16k-with-phones
- skip calss generation if no enums defined Bug: 248284745 Test: stats-log-api-gen-test Change-Id: I14fce186ff22d636d166dc67b30e37911edb9112
-rw-r--r--stats/stats_log_api_gen/native_writer.cpp28
-rw-r--r--stats/stats_log_api_gen/test_vendor_atoms.proto6
2 files changed, 24 insertions, 10 deletions
diff --git a/stats/stats_log_api_gen/native_writer.cpp b/stats/stats_log_api_gen/native_writer.cpp
index 26571e3c..9c5b44e2 100644
--- a/stats/stats_log_api_gen/native_writer.cpp
+++ b/stats/stats_log_api_gen/native_writer.cpp
@@ -578,19 +578,25 @@ int write_stats_log_header_vendor(FILE* out, const Atoms& atoms, const AtomDecl&
for (AtomDeclSet::const_iterator atomIt = atoms.decls.begin(); atomIt != atoms.decls.end();
atomIt++) {
- fprintf(out, "class %s final {\n", (*atomIt)->message.c_str());
- fprintf(out, "public:\n\n");
set<string> processedEnums;
+
for (vector<AtomField>::const_iterator field = (*atomIt)->fields.begin();
field != (*atomIt)->fields.end(); field++) {
- // there might be N fields with the same enum type
- // avoid duplication definitions
- if (processedEnums.find(field->enumTypeName) != processedEnums.end()) {
- continue;
- }
- processedEnums.insert(field->enumTypeName);
if (field->javaType == JAVA_TYPE_ENUM || field->javaType == JAVA_TYPE_ENUM_ARRAY) {
+ // there might be N fields with the same enum type
+ // avoid duplication definitions
+ if (processedEnums.find(field->enumTypeName) != processedEnums.end()) {
+ continue;
+ }
+
+ if(processedEnums.empty()) {
+ fprintf(out, "class %s final {\n", (*atomIt)->message.c_str());
+ fprintf(out, "public:\n\n");
+ }
+
+ processedEnums.insert(field->enumTypeName);
+
fprintf(out, "enum %s {\n", field->enumTypeName.c_str());
size_t i = 0;
for (map<int, string>::const_iterator value = field->enumValues.begin();
@@ -601,11 +607,13 @@ int write_stats_log_header_vendor(FILE* out, const Atoms& atoms, const AtomDecl&
fprintf(out, "%s\n", comma);
i++;
}
+
fprintf(out, "};\n");
}
}
-
- fprintf(out, "};\n\n");
+ if (!processedEnums.empty()) {
+ fprintf(out, "};\n\n");
+ }
}
write_stats_log_header_epilogue(out, cppNamespace);
diff --git a/stats/stats_log_api_gen/test_vendor_atoms.proto b/stats/stats_log_api_gen/test_vendor_atoms.proto
index 733175c7..80d37a62 100644
--- a/stats/stats_log_api_gen/test_vendor_atoms.proto
+++ b/stats/stats_log_api_gen/test_vendor_atoms.proto
@@ -22,6 +22,7 @@ message Atom {
oneof pushed {
VendorAtom1 vendorAtom1 = 105501;
VendorAtom2 vendorAtom2 = 105502;
+ VendorAtom3 vendorAtom3 = 105503;
}
}
@@ -72,3 +73,8 @@ message VendorAtom2 {
optional EnumType2 enumField3 = 4;
optional EnumType2 enumField4 = 5;
}
+
+message VendorAtom3 {
+ optional string reverse_domain_name = 1;
+ optional int32 int_field = 2;
+}