Generate write<TAG> methods in logtags-generated Java code
Change-Id: Iebca77f2f710ee4c15bf7089647f8d79fe79f33a
diff --git a/tools/java-event-log-tags.py b/tools/java-event-log-tags.py
index 20b8ca4..3713bd8 100755
--- a/tools/java-event-log-tags.py
+++ b/tools/java-event-log-tags.py
@@ -26,6 +26,7 @@
import cStringIO
import getopt
import os
+import re
import sys
import event_log_tags
@@ -93,6 +94,37 @@
buffer.write(" public static final int %s = %d;\n" %
(t.tagname.upper(), t.tagnum))
+
+keywords = frozenset(["abstract", "continue", "for", "new", "switch", "assert",
+ "default", "goto", "package", "synchronized", "boolean",
+ "do", "if", "private", "this", "break", "double",
+ "implements", "protected", "throw", "byte", "else",
+ "import", "public", "throws", "case", "enum",
+ "instanceof", "return", "transient", "catch", "extends",
+ "int", "short", "try", "char", "final", "interface",
+ "static", "void", "class", "finally", "long", "strictfp",
+ "volatile", "const", "float", "native", "super", "while"])
+
+def javaName(name):
+ out = name[0].lower() + re.sub(r"[^A-Za-z0-9]", "", name.title())[1:]
+ if out in keywords:
+ out += "_"
+ return out
+
+javaTypes = ["ERROR", "int", "long", "String", "Object[]"]
+for t in tagfile.tags:
+ methodName = javaName("write_" + t.tagname)
+ if t.description:
+ args = [arg.strip("() ").split("|") for arg in t.description.split(",")]
+ else:
+ args = []
+ argTypesNames = ", ".join([javaTypes[int(arg[1])] + " " + javaName(arg[0]) for arg in args])
+ argNames = "".join([", " + javaName(arg[0]) for arg in args])
+ buffer.write("\n public static void %s(%s) {" % (methodName, argTypesNames))
+ buffer.write("\n android.util.EventLog.writeEvent(%s%s);" % (t.tagname.upper(), argNames))
+ buffer.write("\n }\n")
+
+
buffer.write("}\n");
event_log_tags.WriteOutput(output_file, buffer)