You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.9 KiB
74 lines
1.9 KiB
#!/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:])
|
|
|