diff options
author | Jeffrey Huang <jeffreyhuang@google.com> | 2020-03-12 18:09:09 -0700 |
---|---|---|
committer | Muhammad Qureshi <muhammadq@google.com> | 2020-03-17 22:01:58 -0700 |
commit | f960305a3184b95e800479c6bfbe3a157c4f33da (patch) | |
tree | c0eb2b0263aff3c876ebb5d9dfb5c2fd2751cb68 /tools/stats_log_api_gen/java_writer.cpp | |
parent | b13a3214a141d11ed8acda522a2382f090407000 (diff) |
StatsEvent annotations java autogen
Autogenerate annotations for atoms logged in java.
generated FrameworkStatsLog.java:
https://paste.googleplex.com/4789132691767296
Bug: 151102209
Test: m stats-log-api-gen
Test: m statslog-framework-java-gen
Change-Id: I50b01feaacfcb8ad5d0236432ceb0e97c8c907ab
Diffstat (limited to 'tools/stats_log_api_gen/java_writer.cpp')
-rw-r--r-- | tools/stats_log_api_gen/java_writer.cpp | 38 |
1 files changed, 37 insertions, 1 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++; } |