summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers/python/retrace/parser.py
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2009-03-25 13:44:32 +0000
committerJosé Fonseca <jfonseca@vmware.com>2009-03-25 21:03:40 +0000
commitecfa99ece1743769bbdb4371cf57229481993e91 (patch)
tree7810bd34012233e15f1618be42253845bf7b6eee /src/gallium/state_trackers/python/retrace/parser.py
parent9d97c3d0be9e57226b6a438a90b71f36e0c99269 (diff)
python: Use a sequential number to identify each call.
TODO: Modify the trace driver to generate these on the XML file itself.
Diffstat (limited to 'src/gallium/state_trackers/python/retrace/parser.py')
-rwxr-xr-xsrc/gallium/state_trackers/python/retrace/parser.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/python/retrace/parser.py b/src/gallium/state_trackers/python/retrace/parser.py
index db9bcc8226..b0f3e8a432 100755
--- a/src/gallium/state_trackers/python/retrace/parser.py
+++ b/src/gallium/state_trackers/python/retrace/parser.py
@@ -190,6 +190,10 @@ class XmlParser:
class TraceParser(XmlParser):
+ def __init__(self, fp):
+ XmlParser.__init__(self, fp)
+ self.last_call_no = 0
+
def parse(self):
self.element_start('trace')
while self.token.type not in (ELEMENT_END, EOF):
@@ -200,6 +204,13 @@ class TraceParser(XmlParser):
def parse_call(self):
attrs = self.element_start('call')
+ try:
+ no = int(attrs['no'])
+ except KeyError:
+ self.last_call_no += 1
+ no = self.last_call_no
+ else:
+ self.last_call_no = no
klass = attrs['class']
method = attrs['method']
args = []
@@ -217,7 +228,7 @@ class TraceParser(XmlParser):
raise TokenMismatch("<arg ...> or <ret ...>", self.token)
self.element_end('call')
- return Call(klass, method, args, ret)
+ return Call(no, klass, method, args, ret)
def parse_arg(self):
attrs = self.element_start('arg')