diff options
author | Muhammad Qureshi <muhammadq@google.com> | 2020-03-12 07:37:13 -0700 |
---|---|---|
committer | Muhammad Qureshi <muhammadq@google.com> | 2020-03-17 20:19:04 -0700 |
commit | b13a3214a141d11ed8acda522a2382f090407000 (patch) | |
tree | ebb988d23e5f7bd918446ee2c75cea072da66f60 /tools/stats_log_api_gen/native_writer.cpp | |
parent | 8f15e287e93c144b944daa559b90d7fa0a95f4e0 (diff) |
Store annotation during collation
- Only collate atoms in the specified module.
- Replace signature_to_modules with signatureInfoMap. This maps each
signature to another map keyed by field number and whose values are vector of
annotations.
Bug: 151102006
Test: stats-log-api-gen-test
Change-Id: I25bbe4883c8f7f86a06d04d27cd425367b6d65a0
Diffstat (limited to 'tools/stats_log_api_gen/native_writer.cpp')
-rw-r--r-- | tools/stats_log_api_gen/native_writer.cpp | 53 |
1 files changed, 19 insertions, 34 deletions
diff --git a/tools/stats_log_api_gen/native_writer.cpp b/tools/stats_log_api_gen/native_writer.cpp index da207d665e20..c06356abec1c 100644 --- a/tools/stats_log_api_gen/native_writer.cpp +++ b/tools/stats_log_api_gen/native_writer.cpp @@ -21,14 +21,11 @@ namespace android { namespace stats_log_api_gen { static int write_native_stats_write_methods(FILE* out, const Atoms& atoms, - const AtomDecl& attributionDecl, const string& moduleName, const bool supportQ) { + const AtomDecl& attributionDecl, const bool supportQ) { fprintf(out, "\n"); - for (auto signature_to_modules_it = atoms.signatures_to_modules.begin(); - signature_to_modules_it != atoms.signatures_to_modules.end(); signature_to_modules_it++) { - if (!signature_needed_for_module(signature_to_modules_it->second, moduleName)) { - continue; - } - vector<java_type_t> signature = signature_to_modules_it->first; + for (auto signatureInfoMapIt = atoms.signatureInfoMap.begin(); + signatureInfoMapIt != atoms.signatureInfoMap.end(); signatureInfoMapIt++) { + vector<java_type_t> signature = signatureInfoMapIt->first; // Key value pairs not supported in native. if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) { continue; @@ -133,13 +130,10 @@ static int write_native_stats_write_methods(FILE* out, const Atoms& atoms, } static void write_native_stats_write_non_chained_methods(FILE* out, const Atoms& atoms, - const AtomDecl& attributionDecl, const string& moduleName) { + const AtomDecl& attributionDecl) { fprintf(out, "\n"); - for (auto signature_it = atoms.non_chained_signatures_to_modules.begin(); - signature_it != atoms.non_chained_signatures_to_modules.end(); signature_it++) { - if (!signature_needed_for_module(signature_it->second, moduleName)) { - continue; - } + for (auto signature_it = atoms.nonChainedSignatureInfoMap.begin(); + signature_it != atoms.nonChainedSignatureInfoMap.end(); signature_it++) { vector<java_type_t> signature = signature_it->first; // Key value pairs not supported in native. if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) { @@ -176,16 +170,12 @@ static void write_native_stats_write_non_chained_methods(FILE* out, const Atoms& static void write_native_method_header( FILE* out, const string& methodName, - const map<vector<java_type_t>, set<string>>& signatures_to_modules, - const AtomDecl &attributionDecl, const string& moduleName) { + const map<vector<java_type_t>, FieldNumberToAnnotations>& signatureInfoMap, + const AtomDecl &attributionDecl) { - for (auto signature_to_modules_it = signatures_to_modules.begin(); - signature_to_modules_it != signatures_to_modules.end(); signature_to_modules_it++) { - // Skip if this signature is not needed for the module. - if (!signature_needed_for_module(signature_to_modules_it->second, moduleName)) { - continue; - } - vector<java_type_t> signature = signature_to_modules_it->first; + for (auto signatureInfoMapIt = signatureInfoMap.begin(); + signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { + vector<java_type_t> signature = signatureInfoMapIt->first; // Key value pairs not supported in native. if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) { @@ -196,7 +186,7 @@ static void write_native_method_header( } int write_stats_log_cpp(FILE *out, const Atoms &atoms, const AtomDecl &attributionDecl, - const string& moduleName, const string& cppNamespace, + const string& cppNamespace, const string& importHeader, const bool supportQ) { // Print prelude fprintf(out, "// This file is autogenerated\n"); @@ -212,8 +202,8 @@ int write_stats_log_cpp(FILE *out, const Atoms &atoms, const AtomDecl &attributi fprintf(out, "\n"); write_namespace(out, cppNamespace); - write_native_stats_write_methods(out, atoms, attributionDecl, moduleName, supportQ); - write_native_stats_write_non_chained_methods(out, atoms, attributionDecl, moduleName); + write_native_stats_write_methods(out, atoms, attributionDecl, supportQ); + write_native_stats_write_non_chained_methods(out, atoms, attributionDecl); // Print footer fprintf(out, "\n"); @@ -223,7 +213,7 @@ int write_stats_log_cpp(FILE *out, const Atoms &atoms, const AtomDecl &attributi } int write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl, - const string& moduleName, const string& cppNamespace) { + const string& cppNamespace) { // Print prelude fprintf(out, "// This file is autogenerated\n"); fprintf(out, "\n"); @@ -242,7 +232,7 @@ int write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl &attrib fprintf(out, " */\n"); fprintf(out, "\n"); - write_native_atom_constants(out, atoms, attributionDecl, moduleName); + write_native_atom_constants(out, atoms, attributionDecl); // Print constants for the enum values. fprintf(out, "//\n"); @@ -250,10 +240,6 @@ int write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl &attrib fprintf(out, "//\n\n"); for (set<AtomDecl>::const_iterator atom = atoms.decls.begin(); atom != atoms.decls.end(); atom++) { - // Skip if the atom is not needed for the module. - if (!atom_needed_for_module(*atom, moduleName)) { - continue; - } for (vector<AtomField>::const_iterator field = atom->fields.begin(); field != atom->fields.end(); field++) { @@ -286,14 +272,13 @@ int write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl &attrib fprintf(out, "//\n"); fprintf(out, "// Write methods\n"); fprintf(out, "//\n"); - write_native_method_header(out, "int stats_write", atoms.signatures_to_modules, attributionDecl, - moduleName); + write_native_method_header(out, "int stats_write", atoms.signatureInfoMap, attributionDecl); fprintf(out, "//\n"); fprintf(out, "// Write flattened methods\n"); fprintf(out, "//\n"); write_native_method_header(out, "int stats_write_non_chained", - atoms.non_chained_signatures_to_modules, attributionDecl, moduleName); + atoms.nonChainedSignatureInfoMap, attributionDecl); fprintf(out, "\n"); write_closing_namespace(out, cppNamespace); |