1 #!/usr/bin/env python 2 # 3 # The LLVM Compiler Infrastructure 4 # 5 # This file is distributed under the University of Illinois Open Source 6 # License. See LICENSE.TXT for details. 7 # 8 ##===----------------------------------------------------------------------===## 9 # 10 # This script reads visualization data emitted by the static analyzer for 11 # display in Ubigraph. 12 # 13 ##===----------------------------------------------------------------------===## 14 15 import xmlrpclib 16 import sys 17 18 def Error(message): 19 print >> sys.stderr, 'ubiviz: ' + message 20 sys.exit(1) 21 22 def StreamData(filename): 23 file = open(filename) 24 for ln in file: 25 yield eval(ln) 26 file.close() 27 28 def Display(G, data): 29 action = data[0] 30 if action == 'vertex': 31 vertex = data[1] 32 G.new_vertex_w_id(vertex) 33 for attribute in data[2:]: 34 G.set_vertex_attribute(vertex, attribute[0], attribute[1]) 35 elif action == 'edge': 36 src = data[1] 37 dst = data[2] 38 edge = G.new_edge(src,dst) 39 for attribute in data[3:]: 40 G.set_edge_attribute(edge, attribute[0], attribute[1]) 41 elif action == "vertex_style": 42 style_id = data[1] 43 parent_id = data[2] 44 G.new_vertex_style_w_id(style_id, parent_id) 45 for attribute in data[3:]: 46 G.set_vertex_style_attribute(style_id, attribute[0], attribute[1]) 47 elif action == "vertex_style_attribute": 48 style_id = data[1] 49 for attribute in data[2:]: 50 G.set_vertex_style_attribute(style_id, attribute[0], attribute[1]) 51 elif action == "change_vertex_style": 52 vertex_id = data[1] 53 style_id = data[2] 54 G.change_vertex_style(vertex_id,style_id) 55 56 def main(args): 57 if len(args) == 0: 58 Error('no input files') 59 60 server = xmlrpclib.Server('http://127.0.0.1:20738/RPC2') 61 G = server.ubigraph 62 63 for arg in args: 64 G.clear() 65 for x in StreamData(arg): 66 Display(G,x) 67 68 sys.exit(0) 69 70 71 if __name__ == '__main__': 72 main(sys.argv[1:]) 73 74