+ function vertices() {
+ printf "node [shape=record];\n"
+ printf "%s [label=\"", target_module;
+ sep = ""
+ for (called_fun in Calls) {
+ printf "%s<%s> %s", sep, called_fun, called_fun
+ sep = " | "
+ }
+ printf "\"];\n"
+ }
+
+ function edges() {
+ for (cf in Calls_from) {
+ split(cf, call, SUBSEP)
+ caller_mod = call[1]
+ called_mod = target_module
+ called_fun = call[2]
+ printf("\"%s\" -> %s:%s\n", caller_mod, called_mod, called_fun)
+ }
+ }
+
+ function report() {
+ indent = " "