From 3f9ec36bf414b08ac2ee0f62927997b8e0c127cb Mon Sep 17 00:00:00 2001 From: NĂ©lio Laranjeiro Date: Mon, 12 Apr 2010 00:10:43 +0200 Subject: {tools/trace, digital/avr/modules/trace}: print trace on host execution, closes #92 --- tools/trace/tcreator/writer.py | 78 ++++++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 25 deletions(-) (limited to 'tools/trace/tcreator/writer.py') 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 -- cgit v1.2.3