summaryrefslogtreecommitdiff
path: root/tools/trace/tcreator/writer.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/trace/tcreator/writer.py')
-rw-r--r--tools/trace/tcreator/writer.py78
1 files changed, 53 insertions, 25 deletions
diff --git a/tools/trace/tcreator/writer.py b/tools/trace/tcreator/writer.py
index 8e6d70b3..db5fc21e 100644
--- a/tools/trace/tcreator/writer.py
+++ b/tools/trace/tcreator/writer.py
@@ -9,45 +9,73 @@ templatedir = os.path.split (__file__)[0]
class Writer:
"""Template writer"""
- def __init__ (self, name, enum_name):
- self.__name = name
- self.__enum_name = enum_name
+ def __init__ (self):
+ self.__header_name = "events.h"
+ self.__file_name = "events.host.c"
- def parse_list (self, event_list = None):
+ def parse_event_identifiers (self, event_list = None):
+ """Parse the event list and construct a string to embedded in a
+ header file."""
if event_list != None:
string = ""
+ prefix = " "
for i in range (0, len (event_list)):
- string += " TRACE_" + event_list[i].name() + ",\n"
- string += " TRACE_NB"
+ string += prefix + "TRACE_" + event_list[i].name() + ",\n"
+ string += prefix + "TRACE_NB"
return string.upper()
- def __read_template__ (self, string):
+ def __parse_event_string_cb (self, event):
+ """Create a default string interpretation for callbacks events."""
+ assert event.callback
+ string = "\"" + event.name ()
+ for i in range (event.param_nb ()):
+ string += " %d"
+ string += "\\n\","
+ return string
+
+ def parse_event_string (self, event_list = None):
+ """Parse the event list and construct a string containing on each line
+ the string interpretation for a human."""
+ if event_list != None:
+ string = ""
+ prefix = " "
+ for i in event_list:
+ if i.callback:
+ string += prefix + self.__parse_event_string_cb (i)
+ else:
+ string += prefix + i.string_get () + ",\n"
+ return string
+
+ def __read_template_header (self, string, string_nb):
f = open (templatedir + '/template.h', 'r')
template = f.read()
f.close()
-
- if self.__name != None:
- define = self.__name.replace('.', '_')
- else:
- define = "trace.h"
- template = template.replace('%%template%%', define)
-
- if self.__enum_name == None:
- template = template.replace('%%enum_name%%', "trace_id_t")
- else:
- template = template.replace('%%enum_name%%', self.__enum_name)
-
- template = template.replace('%%data%%', string)
+ template = template.replace('%%ids%%', string)
template = template.replace('%%year%%', time.strftime ('%Y'))
+ template = template.replace('%%NB%%', string_nb);
return template
+ def __read_template_file (self, string_table, string_nb):
+ f = open (templatedir + '/template.c', 'r')
+ template = f.read()
+ f.close()
+ template = template.replace('%%NB%%', string_nb);
+ template = template.replace('%%DATA%%', string_table)
+ return template
- def write_file (self, string):
- template = self.__read_template__(string)
- f = open (self.__name, 'w')
+ def __write (self, template, outfile):
+ f = open (outfile, 'w')
f.write (template)
f.close()
- def print_file (self, string):
- template = self.__read_template__(string)
+ def write_file (self, id_table, string_table, string_table_nb):
+ template = self.__read_template_header (id_table, string_table_nb)
+ self.__write (template, self.__header_name)
+ template = self.__read_template_file (string_table, string_table_nb)
+ self.__write (template, self.__file_name)
+
+ def print_file (self, id_table, string_table, string_table_nb):
+ template = self.__read_template_header (id_table, string_table_nb)
+ print template
+ template = self.__read_template_file (string_table, string_table_nb)
print template