name = attrs['name']
args = []
ret = None
+ duration = None
while self.token.type == ELEMENT_START:
if self.token.name_or_data == 'arg':
arg = self.parse_arg()
args.append(arg)
elif self.token.name_or_data == 'ret':
ret = self.parse_ret()
+ elif self.token.name_or_data == 'duration':
+ duration = self.parse_duration()
elif self.token.name_or_data == 'call':
# ignore nested function calls
self.parse_call()
raise TokenMismatch("<arg ...> or <ret ...>", self.token)
self.element_end('call')
- call = self.formatter.function(name)
+ call = ''
+
+ if duration is not None:
+ call += '%8u ' % (duration)
+
+ call += self.formatter.function(name)
call += '(' + ', '.join([self.formatter.variable(name) + ' = ' + value for name, value in args]) + ')'
if ret is not None:
call += ' = ' + ret
return value
+ def parse_duration(self):
+ attrs = self.element_start('duration')
+ value = int(self.character_data())
+ self.element_end('duration')
+ return value
+
def parse_value(self):
if self.token.type == CHARACTER_DATA:
return self.formatter.literal(self.character_data())