diff options
| -rw-r--r-- | tools/stats_log_api_gen/Collation.cpp | 14 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/Collation.h | 10 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/java_writer.cpp | 28 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/java_writer.h | 7 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/java_writer_q.cpp | 4 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/java_writer_q.h | 7 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/main.cpp | 21 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/native_writer.cpp | 16 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/native_writer.h | 7 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/test_collation.cpp | 7 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/utils.cpp | 49 | ||||
| -rw-r--r-- | tools/stats_log_api_gen/utils.h | 20 |
12 files changed, 113 insertions, 77 deletions
diff --git a/tools/stats_log_api_gen/Collation.cpp b/tools/stats_log_api_gen/Collation.cpp index 4c741c49cfdb..fe6ca558a0ee 100644 --- a/tools/stats_log_api_gen/Collation.cpp +++ b/tools/stats_log_api_gen/Collation.cpp @@ -72,7 +72,7 @@ static void print_error(const FieldDescriptor* field, const char* format, ...) { SourceLocation loc; if (field->GetSourceLocation(&loc)) { - // TODO: this will work if we can figure out how to pass + // TODO(b/162454173): this will work if we can figure out how to pass // --include_source_info to protoc fprintf(stderr, "%s:%d: ", file->name().c_str(), loc.start_line); } else { @@ -111,7 +111,6 @@ static java_type_t java_type(const FieldDescriptor* field) { case FieldDescriptor::TYPE_GROUP: return JAVA_TYPE_UNKNOWN; case FieldDescriptor::TYPE_MESSAGE: - // TODO: not the final package name if (field->message_type()->full_name() == "android.os.statsd.AttributionNode") { return JAVA_TYPE_ATTRIBUTION_CHAIN; } else if (field->message_type()->full_name() == "android.os.statsd.KeyValuePair") { @@ -147,7 +146,7 @@ static java_type_t java_type(const FieldDescriptor* field) { void collate_enums(const EnumDescriptor& enumDescriptor, AtomField* atomField) { for (int i = 0; i < enumDescriptor.value_count(); i++) { atomField->enumValues[enumDescriptor.value(i)->number()] = - enumDescriptor.value(i)->name().c_str(); + enumDescriptor.value(i)->name(); } } @@ -528,7 +527,7 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms* vector<java_type_t> signature; errorCount += collate_atom(atom, atomDecl.get(), &signature); - if (atomDecl->primaryFields.size() != 0 && atomDecl->exclusiveField == 0) { + if (!atomDecl->primaryFields.empty() && atomDecl->exclusiveField == 0) { print_error(atomField, "Cannot have a primary field without an exclusive field: %s\n", atomField->name().c_str()); errorCount++; @@ -541,8 +540,7 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms* atomField->name().c_str()); errorCount++; continue; - } - else if ((oneofAtom->name() != ONEOF_PUSHED_ATOM_NAME) && + } else if ((oneofAtom->name() != ONEOF_PUSHED_ATOM_NAME) && (oneofAtom->name() != ONEOF_PULLED_ATOM_NAME)) { print_error(atomField, "Atom is neither a pushed nor pulled atom: %s\n", atomField->name().c_str()); @@ -578,7 +576,7 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms* printf(" "); for (vector<java_type_t>::const_iterator jt = it->first.begin(); jt != it->first.end(); jt++) { - printf(" %d", (int)*jt); + printf(" %d", static_cast<int>(*jt)); } printf("\n"); } @@ -589,7 +587,7 @@ int collate_atoms(const Descriptor* descriptor, const string& moduleName, Atoms* printf(" "); for (vector<java_type_t>::const_iterator jt = it->first.begin(); jt != it->first.end(); jt++) { - printf(" %d", (int)*jt); + printf(" %d", static_cast<int>(*jt)); } printf("\n"); } diff --git a/tools/stats_log_api_gen/Collation.h b/tools/stats_log_api_gen/Collation.h index e637ed945a08..5d196c4b8290 100644 --- a/tools/stats_log_api_gen/Collation.h +++ b/tools/stats_log_api_gen/Collation.h @@ -47,8 +47,8 @@ const int FIRST_UID_IN_CHAIN_ID = 0; * * `OneofDescriptor::name()` returns the name of the oneof. */ -const string ONEOF_PUSHED_ATOM_NAME = "pushed"; -const string ONEOF_PULLED_ATOM_NAME = "pulled"; +const char ONEOF_PUSHED_ATOM_NAME[] = "pushed"; +const char ONEOF_PULLED_ATOM_NAME[] = "pulled"; enum AnnotationId : uint8_t { ANNOTATION_ID_IS_UID = 1, @@ -63,7 +63,7 @@ enum AnnotationId : uint8_t { const int ATOM_ID_FIELD_NUMBER = -1; -const string DEFAULT_MODULE_NAME = "DEFAULT"; +const char DEFAULT_MODULE_NAME[] = "DEFAULT"; /** * The types for atom parameters. @@ -95,9 +95,9 @@ union AnnotationValue { int intValue; bool boolValue; - AnnotationValue(const int value) : intValue(value) { + explicit AnnotationValue(const int value) : intValue(value) { } - AnnotationValue(const bool value) : boolValue(value) { + explicit AnnotationValue(const bool value) : boolValue(value) { } }; diff --git a/tools/stats_log_api_gen/java_writer.cpp b/tools/stats_log_api_gen/java_writer.cpp index ffbe9f800736..6fcf267cf39c 100644 --- a/tools/stats_log_api_gen/java_writer.cpp +++ b/tools/stats_log_api_gen/java_writer.cpp @@ -42,6 +42,7 @@ static int write_java_q_logger_class(FILE* out, const SignatureInfoMap& signatur static void write_java_annotation_constants(FILE* out) { fprintf(out, " // Annotation constants.\n"); + const map<AnnotationId, string>& ANNOTATION_ID_CONSTANTS = get_annotation_id_constants(); for (const auto& [id, name] : ANNOTATION_ID_CONSTANTS) { fprintf(out, " public static final byte %s = %hhu;\n", name.c_str(), id); } @@ -56,6 +57,7 @@ static void write_annotations(FILE* out, int argIndex, return; } const AtomDeclSet& atomDeclSet = fieldNumberToAtomDeclSetIt->second; + const map<AnnotationId, string>& ANNOTATION_ID_CONSTANTS = get_annotation_id_constants(); for (const shared_ptr<AtomDecl>& atomDecl : atomDeclSet) { const string atomConstant = make_constant_name(atomDecl->name); fprintf(out, " if (%s == code) {\n", atomConstant.c_str()); @@ -102,7 +104,7 @@ static void write_method_signature(FILE* out, const vector<java_type_t>& signatu for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end(); arg++) { if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) { - for (auto chainField : attributionDecl.fields) { + for (const auto& chainField : attributionDecl.fields) { fprintf(out, ", %s[] %s", java_type_name(chainField.javaType), chainField.name.c_str()); } @@ -243,13 +245,15 @@ static int write_method_body(FILE* out, const vector<java_type_t>& signature, return 0; } -static int write_java_methods(FILE* out, const SignatureInfoMap& signatureInfoMap, +static int write_java_pushed_methods(FILE* out, const SignatureInfoMap& signatureInfoMap, const AtomDecl& attributionDecl, const bool supportQ) { for (auto signatureInfoMapIt = signatureInfoMap.begin(); signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { // Print method signature. fprintf(out, " public static void write(int code"); - write_method_signature(out, signatureInfoMapIt->first, attributionDecl); + const vector<java_type_t>& signature = signatureInfoMapIt->first; + const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second; + write_method_signature(out, signature, attributionDecl); fprintf(out, ") {\n"); // Print method body. @@ -259,7 +263,7 @@ static int write_java_methods(FILE* out, const SignatureInfoMap& signatureInfoMa indent = " "; } - int ret = write_method_body(out, signatureInfoMapIt->first, signatureInfoMapIt->second, + int ret = write_method_body(out, signature, fieldNumberToAtomDeclSet, attributionDecl, indent); if (ret != 0) { return ret; @@ -274,8 +278,8 @@ static int write_java_methods(FILE* out, const SignatureInfoMap& signatureInfoMa fprintf(out, " } else {\n"); fprintf(out, " QLogger.write(code"); int argIndex = 1; - for (vector<java_type_t>::const_iterator arg = signatureInfoMapIt->first.begin(); - arg != signatureInfoMapIt->first.end(); arg++) { + for (vector<java_type_t>::const_iterator arg = signature.begin(); + arg != signature.end(); arg++) { if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) { const char* uidName = attributionDecl.fields.front().name.c_str(); const char* tagName = attributionDecl.fields.back().name.c_str(); @@ -299,18 +303,20 @@ static int write_java_methods(FILE* out, const SignatureInfoMap& signatureInfoMa return 0; } -static int write_java_build_stats_event_methods(FILE* out, const SignatureInfoMap& signatureInfoMap, +static int write_java_pulled_methods(FILE* out, const SignatureInfoMap& signatureInfoMap, const AtomDecl& attributionDecl) { for (auto signatureInfoMapIt = signatureInfoMap.begin(); signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { // Print method signature. fprintf(out, " public static StatsEvent buildStatsEvent(int code"); - write_method_signature(out, signatureInfoMapIt->first, attributionDecl); + const vector<java_type_t>& signature = signatureInfoMapIt->first; + const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second; + write_method_signature(out, signature, attributionDecl); fprintf(out, ") {\n"); // Print method body. string indent(""); - int ret = write_method_body(out, signatureInfoMapIt->first, signatureInfoMapIt->second, + int ret = write_method_body(out, signature, fieldNumberToAtomDeclSet, attributionDecl, indent); if (ret != 0) { return ret; @@ -357,9 +363,9 @@ int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl& attribut // Print write methods. fprintf(out, " // Write methods\n"); - errors += write_java_methods(out, atoms.signatureInfoMap, attributionDecl, supportQ); + errors += write_java_pushed_methods(out, atoms.signatureInfoMap, attributionDecl, supportQ); errors += write_java_non_chained_methods(out, atoms.nonChainedSignatureInfoMap); - errors += write_java_build_stats_event_methods(out, atoms.pulledAtomsSignatureInfoMap, + errors += write_java_pulled_methods(out, atoms.pulledAtomsSignatureInfoMap, attributionDecl); if (supportWorkSource) { errors += write_java_work_source_methods(out, atoms.signatureInfoMap); diff --git a/tools/stats_log_api_gen/java_writer.h b/tools/stats_log_api_gen/java_writer.h index 8b3b50588efc..afd992be6c5e 100644 --- a/tools/stats_log_api_gen/java_writer.h +++ b/tools/stats_log_api_gen/java_writer.h @@ -14,7 +14,8 @@ * limitations under the License. */ -#pragma once +#ifndef ANDROID_STATS_LOG_API_GEN_JAVA_WRITER_H +#define ANDROID_STATS_LOG_API_GEN_JAVA_WRITER_H #include <stdio.h> #include <string.h> @@ -28,11 +29,11 @@ namespace android { namespace stats_log_api_gen { -using namespace std; - int write_stats_log_java(FILE* out, const Atoms& atoms, const AtomDecl& attributionDecl, const string& javaClass, const string& javaPackage, const bool supportQ, const bool supportWorkSource); } // namespace stats_log_api_gen } // namespace android + +#endif // ANDROID_STATS_LOG_API_GEN_JAVA_WRITER_H diff --git a/tools/stats_log_api_gen/java_writer_q.cpp b/tools/stats_log_api_gen/java_writer_q.cpp index d21e2708b724..be7cb4aeb3f8 100644 --- a/tools/stats_log_api_gen/java_writer_q.cpp +++ b/tools/stats_log_api_gen/java_writer_q.cpp @@ -65,7 +65,7 @@ int write_java_methods_q_schema(FILE* out, const SignatureInfoMap& signatureInfo for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end(); arg++) { if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) { - for (auto chainField : attributionDecl.fields) { + for (const auto& chainField : attributionDecl.fields) { fprintf(out, ", %s[] %s", java_type_name(chainField.javaType), chainField.name.c_str()); } @@ -407,7 +407,7 @@ void write_java_helpers_for_q_schema_methods(FILE* out, const AtomDecl& attribut if (requiredHelpers & JAVA_MODULE_REQUIRES_ATTRIBUTION) { fprintf(out, "%sprivate static void writeAttributionChain(byte[] buff, int pos", indent.c_str()); - for (auto chainField : attributionDecl.fields) { + for (const auto& chainField : attributionDecl.fields) { fprintf(out, ", %s[] %s", java_type_name(chainField.javaType), chainField.name.c_str()); } fprintf(out, ") {\n"); diff --git a/tools/stats_log_api_gen/java_writer_q.h b/tools/stats_log_api_gen/java_writer_q.h index c511a8436416..622ef3e37bad 100644 --- a/tools/stats_log_api_gen/java_writer_q.h +++ b/tools/stats_log_api_gen/java_writer_q.h @@ -14,7 +14,8 @@ * limitations under the License. */ -#pragma once +#ifndef ANDROID_STATS_LOG_API_GEN_JAVA_WRITER_Q_H +#define ANDROID_STATS_LOG_API_GEN_JAVA_WRITER_Q_H #include <stdio.h> #include <string.h> @@ -28,8 +29,6 @@ namespace android { namespace stats_log_api_gen { -using namespace std; - void write_java_q_logging_constants(FILE* out, const string& indent); int write_java_methods_q_schema(FILE* out, const SignatureInfoMap& signatureInfoMap, @@ -44,3 +43,5 @@ int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms, } // namespace stats_log_api_gen } // namespace android + +#endif // ANDROID_STATS_LOG_API_GEN_JAVA_WRITER_Q_H diff --git a/tools/stats_log_api_gen/main.cpp b/tools/stats_log_api_gen/main.cpp index b888ce904b31..d21018463868 100644 --- a/tools/stats_log_api_gen/main.cpp +++ b/tools/stats_log_api_gen/main.cpp @@ -16,7 +16,6 @@ #include "utils.h" using namespace google::protobuf; -using namespace std; namespace android { namespace stats_log_api_gen { @@ -145,7 +144,7 @@ static int run(int argc, char const* const* argv) { index++; } - if (cppFilename.size() == 0 && headerFilename.size() == 0 && javaFilename.size() == 0) { + if (cppFilename.empty() && headerFilename.empty() && javaFilename.empty()) { print_usage(); return 1; } @@ -175,9 +174,9 @@ static int run(int argc, char const* const* argv) { &attributionSignature); // Write the .cpp file - if (cppFilename.size() != 0) { + if (!cppFilename.empty()) { FILE* out = fopen(cppFilename.c_str(), "w"); - if (out == NULL) { + if (out == nullptr) { fprintf(stderr, "Unable to open file for write: %s\n", cppFilename.c_str()); return 1; } @@ -198,9 +197,9 @@ static int run(int argc, char const* const* argv) { } // Write the .h file - if (headerFilename.size() != 0) { + if (!headerFilename.empty()) { FILE* out = fopen(headerFilename.c_str(), "w"); - if (out == NULL) { + if (out == nullptr) { fprintf(stderr, "Unable to open file for write: %s\n", headerFilename.c_str()); return 1; } @@ -214,24 +213,24 @@ static int run(int argc, char const* const* argv) { } // Write the .java file - if (javaFilename.size() != 0) { - if (javaClass.size() == 0) { + if (!javaFilename.empty()) { + if (javaClass.empty()) { fprintf(stderr, "Must supply --javaClass if supplying a Java filename"); return 1; } - if (javaPackage.size() == 0) { + if (javaPackage.empty()) { fprintf(stderr, "Must supply --javaPackage if supplying a Java filename"); return 1; } - if (moduleName.size() == 0) { + if (moduleName.empty()) { fprintf(stderr, "Must supply --module if supplying a Java filename"); return 1; } FILE* out = fopen(javaFilename.c_str(), "w"); - if (out == NULL) { + if (out == nullptr) { fprintf(stderr, "Unable to open file for write: %s\n", javaFilename.c_str()); return 1; } diff --git a/tools/stats_log_api_gen/native_writer.cpp b/tools/stats_log_api_gen/native_writer.cpp index 21e88b360dcd..b4fb8dd8321b 100644 --- a/tools/stats_log_api_gen/native_writer.cpp +++ b/tools/stats_log_api_gen/native_writer.cpp @@ -24,6 +24,7 @@ namespace stats_log_api_gen { static void write_native_annotation_constants(FILE* out) { fprintf(out, "// Annotation constants.\n"); + const map<AnnotationId, string>& ANNOTATION_ID_CONSTANTS = get_annotation_id_constants(); for (const auto& [id, name] : ANNOTATION_ID_CONSTANTS) { fprintf(out, "const uint8_t %s = %hhu;\n", name.c_str(), id); } @@ -39,6 +40,7 @@ static void write_annotations(FILE* out, int argIndex, return; } const AtomDeclSet& atomDeclSet = fieldNumberToAtomDeclSetIt->second; + const map<AnnotationId, string>& ANNOTATION_ID_CONSTANTS = get_annotation_id_constants(); for (const shared_ptr<AtomDecl>& atomDecl : atomDeclSet) { const string atomConstant = make_constant_name(atomDecl->name); fprintf(out, " if (%s == code) {\n", atomConstant.c_str()); @@ -60,8 +62,6 @@ static void write_annotations(FILE* out, int argIndex, } break; case ANNOTATION_TYPE_BOOL: - // TODO(b/151786433): Write annotation constant name instead of - // annotation id literal. fprintf(out, " %saddBoolAnnotation(%s%s, %s);\n", methodPrefix.c_str(), methodSuffix.c_str(), annotationConstant.c_str(), annotation->value.boolValue ? "true" : "false"); @@ -145,7 +145,8 @@ static int write_native_stats_write_methods(FILE* out, const SignatureInfoMap& s vector<java_type_t> signature = signatureInfoMapIt->first; const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second; // Key value pairs not supported in native. - if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) { + if (std::find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != + signature.end()) { continue; } write_native_method_signature(out, "int stats_write(", signature, attributionDecl, " {"); @@ -219,7 +220,8 @@ static void write_native_stats_write_non_chained_methods(FILE* out, signature_it != signatureInfoMap.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()) { + if (std::find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != + signature.end()) { continue; } @@ -258,7 +260,8 @@ static int write_native_build_stats_event_methods(FILE* out, vector<java_type_t> signature = signatureInfoMapIt->first; const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second; // Key value pairs not supported in native. - if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) { + if (std::find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != + signature.end()) { continue; } write_native_method_signature(out, "void addAStatsEvent(AStatsEventList* pulled_data, ", @@ -285,7 +288,8 @@ static void write_native_method_header(FILE* out, const string& methodName, 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()) { + if (std::find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != + signature.end()) { continue; } write_native_method_signature(out, methodName, signature, attributionDecl, ";"); diff --git a/tools/stats_log_api_gen/native_writer.h b/tools/stats_log_api_gen/native_writer.h index 264d4db29fc9..4e42d1fa2809 100644 --- a/tools/stats_log_api_gen/native_writer.h +++ b/tools/stats_log_api_gen/native_writer.h @@ -14,7 +14,8 @@ * limitations under the License. */ -#pragma once +#ifndef ANDROID_STATS_LOG_API_GEN_NATIVE_WRITER_H +#define ANDROID_STATS_LOG_API_GEN_NATIVE_WRITER_H #include <stdio.h> #include <string.h> @@ -24,8 +25,6 @@ namespace android { namespace stats_log_api_gen { -using namespace std; - int write_stats_log_cpp(FILE* out, const Atoms& atoms, const AtomDecl& attributionDecl, const string& cppNamespace, const string& importHeader, const bool supportQ); @@ -35,3 +34,5 @@ int write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl& attrib } // namespace stats_log_api_gen } // namespace android + +#endif // ANDROID_STATS_LOG_API_GEN_NATIVE_WRITER_H diff --git a/tools/stats_log_api_gen/test_collation.cpp b/tools/stats_log_api_gen/test_collation.cpp index 5fd728a29c07..6f78921d8f1c 100644 --- a/tools/stats_log_api_gen/test_collation.cpp +++ b/tools/stats_log_api_gen/test_collation.cpp @@ -24,7 +24,6 @@ namespace android { namespace stats_log_api_gen { using std::map; -using std::set; using std::vector; /** @@ -32,11 +31,11 @@ using std::vector; */ static bool map_contains_vector(const SignatureInfoMap& s, int count, ...) { va_list args; - vector<java_type_t> v; + vector<java_type_t> v(count); va_start(args, count); for (int i = 0; i < count; i++) { - v.push_back((java_type_t)va_arg(args, int)); + v[i] = static_cast<java_type_t>(va_arg(args, int)); } va_end(args); @@ -222,7 +221,7 @@ TEST(CollationTest, FailOnBadBinaryFieldAtom) { Atoms atoms; int errorCount = collate_atoms(BadEventWithBinaryFieldAtom::descriptor(), DEFAULT_MODULE_NAME, &atoms); - EXPECT_TRUE(errorCount > 0); + EXPECT_GT(errorCount, 0); } TEST(CollationTest, PassOnLogFromModuleAtom) { diff --git a/tools/stats_log_api_gen/utils.cpp b/tools/stats_log_api_gen/utils.cpp index 4b3734053421..1eaf42acf153 100644 --- a/tools/stats_log_api_gen/utils.cpp +++ b/tools/stats_log_api_gen/utils.cpp @@ -16,11 +16,30 @@ #include "utils.h" -#include "android-base/strings.h" - namespace android { namespace stats_log_api_gen { +/** + * Inlining this method because "android-base/strings.h" is not available on + * google3. + */ +static vector<string> Split(const string& s, const string& delimiters) { + GOOGLE_CHECK_NE(delimiters.size(), 0U); + + vector<string> result; + + size_t base = 0; + size_t found; + while (true) { + found = s.find_first_of(delimiters, base); + result.push_back(s.substr(base, found - base)); + if (found == s.npos) break; + base = found + 1; + } + + return result; +} + static void build_non_chained_decl_map(const Atoms& atoms, std::map<int, AtomDeclSet::const_iterator>* decl_map) { for (AtomDeclSet::const_iterator atomIt = atoms.non_chained_decls.begin(); @@ -29,6 +48,20 @@ static void build_non_chained_decl_map(const Atoms& atoms, } } +const map<AnnotationId, string>& get_annotation_id_constants() { + static const map<AnnotationId, string>* ANNOTATION_ID_CONSTANTS = + new map<AnnotationId, string>{ + {ANNOTATION_ID_IS_UID, "ANNOTATION_ID_IS_UID"}, + {ANNOTATION_ID_TRUNCATE_TIMESTAMP, "ANNOTATION_ID_TRUNCATE_TIMESTAMP"}, + {ANNOTATION_ID_PRIMARY_FIELD, "ANNOTATION_ID_PRIMARY_FIELD"}, + {ANNOTATION_ID_PRIMARY_FIELD_FIRST_UID, "ANNOTATION_ID_PRIMARY_FIELD_FIRST_UID"}, + {ANNOTATION_ID_EXCLUSIVE_STATE, "ANNOTATION_ID_EXCLUSIVE_STATE"}, + {ANNOTATION_ID_TRIGGER_STATE_RESET, "ANNOTATION_ID_TRIGGER_STATE_RESET"}, + {ANNOTATION_ID_STATE_NESTED, "ANNOTATION_ID_STATE_NESTED"}}; + + return *ANNOTATION_ID_CONSTANTS; +} + /** * Turn lower and camel case into upper case with underscores. */ @@ -102,15 +135,15 @@ const char* java_type_name(java_type_t type) { // Writes namespaces for the cpp and header files, returning the number of // namespaces written. void write_namespace(FILE* out, const string& cppNamespaces) { - vector<string> cppNamespaceVec = android::base::Split(cppNamespaces, ","); - for (string cppNamespace : cppNamespaceVec) { + vector<string> cppNamespaceVec = Split(cppNamespaces, ","); + for (const string& cppNamespace : cppNamespaceVec) { fprintf(out, "namespace %s {\n", cppNamespace.c_str()); } } // Writes namespace closing brackets for cpp and header files. void write_closing_namespace(FILE* out, const string& cppNamespaces) { - vector<string> cppNamespaceVec = android::base::Split(cppNamespaces, ","); + vector<string> cppNamespaceVec = Split(cppNamespaces, ","); for (auto it = cppNamespaceVec.rbegin(); it != cppNamespaceVec.rend(); ++it) { fprintf(out, "} // namespace %s\n", it->c_str()); } @@ -123,7 +156,7 @@ static void write_cpp_usage(FILE* out, const string& method_name, const string& for (vector<AtomField>::const_iterator field = atom->fields.begin(); field != atom->fields.end(); field++) { if (field->javaType == JAVA_TYPE_ATTRIBUTION_CHAIN) { - for (auto chainField : attributionDecl.fields) { + for (const auto& chainField : attributionDecl.fields) { if (chainField.javaType == JAVA_TYPE_STRING) { fprintf(out, ", const std::vector<%s>& %s", cpp_type_name(chainField.javaType), chainField.name.c_str()); @@ -190,7 +223,7 @@ void write_native_method_signature(FILE* out, const string& signaturePrefix, for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end(); arg++) { if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) { - for (auto chainField : attributionDecl.fields) { + for (const auto& chainField : attributionDecl.fields) { if (chainField.javaType == JAVA_TYPE_STRING) { fprintf(out, ", const std::vector<%s>& %s", cpp_type_name(chainField.javaType), chainField.name.c_str()); @@ -222,7 +255,7 @@ void write_native_method_call(FILE* out, const string& methodName, for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end(); arg++) { if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) { - for (auto chainField : attributionDecl.fields) { + for (const auto& chainField : attributionDecl.fields) { if (chainField.javaType == JAVA_TYPE_STRING) { fprintf(out, ", %s", chainField.name.c_str()); } else { diff --git a/tools/stats_log_api_gen/utils.h b/tools/stats_log_api_gen/utils.h index 42dc90eb79dc..13a7e2d8a54e 100644 --- a/tools/stats_log_api_gen/utils.h +++ b/tools/stats_log_api_gen/utils.h @@ -14,7 +14,8 @@ * limitations under the License. */ -#pragma once +#ifndef ANDROID_STATS_LOG_API_GEN_UTILS_H +#define ANDROID_STATS_LOG_API_GEN_UTILS_H #include <stdio.h> #include <string.h> @@ -28,23 +29,14 @@ namespace android { namespace stats_log_api_gen { -using namespace std; - -const string DEFAULT_CPP_NAMESPACE = "android,util"; -const string DEFAULT_CPP_HEADER_IMPORT = "statslog.h"; +const char DEFAULT_CPP_NAMESPACE[] = "android,util"; +const char DEFAULT_CPP_HEADER_IMPORT[] = "statslog.h"; const int JAVA_MODULE_REQUIRES_FLOAT = 0x01; const int JAVA_MODULE_REQUIRES_ATTRIBUTION = 0x02; const int JAVA_MODULE_REQUIRES_KEY_VALUE_PAIRS = 0x04; -const map<AnnotationId, string> ANNOTATION_ID_CONSTANTS = { - {ANNOTATION_ID_IS_UID, "ANNOTATION_ID_IS_UID"}, - {ANNOTATION_ID_TRUNCATE_TIMESTAMP, "ANNOTATION_ID_TRUNCATE_TIMESTAMP"}, - {ANNOTATION_ID_PRIMARY_FIELD, "ANNOTATION_ID_PRIMARY_FIELD"}, - {ANNOTATION_ID_PRIMARY_FIELD_FIRST_UID, "ANNOTATION_ID_PRIMARY_FIELD_FIRST_UID"}, - {ANNOTATION_ID_EXCLUSIVE_STATE, "ANNOTATION_ID_EXCLUSIVE_STATE"}, - {ANNOTATION_ID_TRIGGER_STATE_RESET, "ANNOTATION_ID_TRIGGER_STATE_RESET"}, - {ANNOTATION_ID_STATE_NESTED, "ANNOTATION_ID_STATE_NESTED"}}; +const map<AnnotationId, string>& get_annotation_id_constants(); string make_constant_name(const string& str); @@ -81,3 +73,5 @@ int write_java_work_source_methods(FILE* out, const SignatureInfoMap& signatureI } // namespace stats_log_api_gen } // namespace android + +#endif // ANDROID_STATS_LOG_API_GEN_UTILS_H |