diff options
author | Muhammad Qureshi <muhammadq@google.com> | 2020-03-19 17:26:08 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-03-19 17:26:08 +0000 |
commit | 03ac19b3b91cb29a34e600fb7a496791249ce63f (patch) | |
tree | 27bf8a1418e319e45ceb6bee70fd8cb246c1d59e /tools | |
parent | 9c11c2fbc10157f626d71c7e1a6627658c1eafec (diff) | |
parent | 29613e8ff8ca2bfa920e01669e9116f5c4342ff0 (diff) |
Merge "StatsEvent annotations java autogen" into rvc-dev am: 29613e8ff8
Change-Id: I118cfb16c5f2b42e51e800f78460f15d0863cecf
Diffstat (limited to 'tools')
-rw-r--r-- | tools/stats_log_api_gen/java_writer.cpp | 38 | ||||
-rw-r--r-- | tools/stats_log_api_gen/utils.cpp | 4 |
2 files changed, 39 insertions, 3 deletions
diff --git a/tools/stats_log_api_gen/java_writer.cpp b/tools/stats_log_api_gen/java_writer.cpp index 8da080156774..18508d2a6d4d 100644 --- a/tools/stats_log_api_gen/java_writer.cpp +++ b/tools/stats_log_api_gen/java_writer.cpp @@ -41,6 +41,40 @@ static int write_java_q_logger_class( return 0; } +static void write_annotations( + FILE* out, int argIndex, + const FieldNumberToAnnotations& fieldNumberToAnnotations) { + auto it = fieldNumberToAnnotations.find(argIndex); + if (it == fieldNumberToAnnotations.end()) { + return; + } + const set<shared_ptr<Annotation>>& annotations = it->second; + for (auto& annotation: annotations) { + // TODO(b/151744250): Group annotations for same atoms. + // TODO(b/151786433): Write atom constant name instead of atom id literal. + fprintf(out, " if (code == %d) {\n", annotation->atomId); + switch(annotation->type) { + case ANNOTATION_TYPE_INT: + // TODO(b/151776731): Check for reset state annotation and only include reset state + // when field value == default state annotation value. + // TODO(b/151786433): Write annotation constant name instead of + // annotation id literal. + fprintf(out, " builder.addIntAnnotation((byte) %d, %d);\n", + annotation->annotationId, annotation->value.intValue); + break; + case ANNOTATION_TYPE_BOOL: + // TODO(b/151786433): Write annotation constant name instead of + // annotation id literal. + fprintf(out, " builder.addBooleanAnnotation((byte) %d, %s);\n", + annotation->annotationId, + annotation->value.boolValue ? "true" : "false"); + break; + default: + break; + } + fprintf(out, " }\n"); + } +} static int write_java_methods( FILE* out, @@ -52,7 +86,8 @@ static int write_java_methods( signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { // Print method signature. fprintf(out, " public static void write(int code"); - vector<java_type_t> signature = signatureInfoMapIt->first; + const vector<java_type_t>& signature = signatureInfoMapIt->first; + const FieldNumberToAnnotations& fieldNumberToAnnotations = signatureInfoMapIt->second; int argIndex = 1; for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end(); arg++) { @@ -202,6 +237,7 @@ static int write_java_methods( fprintf(stderr, "Encountered unsupported type."); return 1; } + write_annotations(out, argIndex, fieldNumberToAnnotations); argIndex++; } diff --git a/tools/stats_log_api_gen/utils.cpp b/tools/stats_log_api_gen/utils.cpp index cc9117c468af..7314127d5dfd 100644 --- a/tools/stats_log_api_gen/utils.cpp +++ b/tools/stats_log_api_gen/utils.cpp @@ -323,10 +323,10 @@ int write_java_non_chained_methods( for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end(); arg++) { if (*arg == JAVA_TYPE_ATTRIBUTION_CHAIN) { - // Non chained signatures should not have attribution chains. + fprintf(stderr, "Non chained signatures should not have attribution chains.\n"); return 1; } else if (*arg == JAVA_TYPE_KEY_VALUE_PAIR) { - // Module logging does not yet support key value pair. + fprintf(stderr, "Module logging does not yet support key value pair.\n"); return 1; } else { fprintf(out, ", %s arg%d", java_type_name(*arg), argIndex); |