diff options
author | Vova Sharaienko <sharaienko@google.com> | 2023-01-14 09:46:03 +0000 |
---|---|---|
committer | Vova Sharaienko <sharaienko@google.com> | 2023-01-19 21:02:34 +0000 |
commit | 2fb31879e545949b217d7cb9bd9dd0ab59da1a71 (patch) | |
tree | 8ce53c3d0aef5ab56230de539873a189c355fa12 | |
parent | 4da5bea5bdbbeeffd4270e1b74ce53c2bc287e3d (diff) | |
download | proto_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.cpp | 28 | ||||
-rw-r--r-- | stats/stats_log_api_gen/test_vendor_atoms.proto | 6 |
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; +} |