74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env python
 | |
| #
 | |
| #                     The LLVM Compiler Infrastructure
 | |
| #
 | |
| # This file is distributed under the University of Illinois Open Source
 | |
| # License. See LICENSE.TXT for details.
 | |
| #
 | |
| ##===----------------------------------------------------------------------===##
 | |
| #
 | |
| # This script reads visualization data emitted by the static analyzer for
 | |
| # display in Ubigraph.
 | |
| #
 | |
| ##===----------------------------------------------------------------------===##
 | |
| 
 | |
| import xmlrpclib
 | |
| import sys
 | |
| 
 | |
| def Error(message):
 | |
|     print >> sys.stderr, 'ubiviz: ' + message
 | |
|     sys.exit(1)
 | |
| 
 | |
| def StreamData(filename):
 | |
|   file = open(filename)
 | |
|   for ln in file:
 | |
|     yield eval(ln)
 | |
|   file.close()
 | |
| 
 | |
| def Display(G, data):
 | |
|   action = data[0]
 | |
|   if action == 'vertex':
 | |
|     vertex = data[1]
 | |
|     G.new_vertex_w_id(vertex)
 | |
|     for attribute in data[2:]:
 | |
|       G.set_vertex_attribute(vertex, attribute[0], attribute[1])
 | |
|   elif action == 'edge':
 | |
|     src = data[1]
 | |
|     dst = data[2]
 | |
|     edge = G.new_edge(src,dst)
 | |
|     for attribute in data[3:]:
 | |
|       G.set_edge_attribute(edge, attribute[0], attribute[1])
 | |
|   elif action == "vertex_style":
 | |
|     style_id = data[1]
 | |
|     parent_id = data[2]
 | |
|     G.new_vertex_style_w_id(style_id, parent_id)
 | |
|     for attribute in data[3:]:
 | |
|       G.set_vertex_style_attribute(style_id, attribute[0], attribute[1])
 | |
|   elif action == "vertex_style_attribute":
 | |
|     style_id = data[1]
 | |
|     for attribute in data[2:]:
 | |
|       G.set_vertex_style_attribute(style_id, attribute[0], attribute[1])
 | |
|   elif action == "change_vertex_style":
 | |
|      vertex_id = data[1]
 | |
|      style_id = data[2]
 | |
|      G.change_vertex_style(vertex_id,style_id)
 | |
| 
 | |
| def main(args):
 | |
|   if len(args) == 0:
 | |
|     Error('no input files')
 | |
| 
 | |
|   server = xmlrpclib.Server('http://127.0.0.1:20738/RPC2')
 | |
|   G = server.ubigraph
 | |
| 
 | |
|   for arg in args:
 | |
|     G.clear()
 | |
|     for x in StreamData(arg):
 | |
|       Display(G,x)
 | |
| 
 | |
|   sys.exit(0)
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main(sys.argv[1:])
 | |
| 
 |