projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge commit 'origin/master' into gallium-0.2
[mesa.git]
/
src
/
gallium
/
state_trackers
/
python
/
retrace
/
parser.py
diff --git
a/src/gallium/state_trackers/python/retrace/parser.py
b/src/gallium/state_trackers/python/retrace/parser.py
index d02fd7f741f3cc4919b87bbabca912afd4010451..6bc75ad68528a7ec6baea4a0ffea344ebc8221a0 100755
(executable)
--- a/
src/gallium/state_trackers/python/retrace/parser.py
+++ b/
src/gallium/state_trackers/python/retrace/parser.py
@@
-183,12
+183,11
@@
class TraceParser(XmlParser):
def parse(self):
self.element_start('trace')
def parse(self):
self.element_start('trace')
- calls = []
while self.token.type not in (ELEMENT_END, EOF):
while self.token.type not in (ELEMENT_END, EOF):
- calls.append(self.parse_call())
+ call = self.parse_call()
+ self.handle_call(call)
if self.token.type != EOF:
self.element_end('trace')
if self.token.type != EOF:
self.element_end('trace')
- return Trace(calls)
def parse_call(self):
attrs = self.element_start('call')
def parse_call(self):
attrs = self.element_start('call')
@@
-319,13
+318,28
@@
class TraceParser(XmlParser):
return Pointer(address)
return Pointer(address)
+ def handle_call(self, call):
+
+ pass
+
+
+class TraceDumper(TraceParser):
+
-def main():
+ def handle_call(self, call):
+ print call
+
+
+def main(ParserFactory):
for arg in sys.argv[1:]:
for arg in sys.argv[1:]:
- parser = TraceParser(open(arg, 'rt'))
- trace = parser.parse()
- print trace
+ if arg.endswith('.gz'):
+ import gzip
+ stream = gzip.GzipFile(arg, 'rt')
+ else:
+ stream = open(arg, 'rt')
+ parser = ParserFactory(stream)
+ parser.parse()
if __name__ == '__main__':
if __name__ == '__main__':
- main()
+ main(
TraceDumper
)