fdoc

modulefdoc_graphs

Dependency graphs: which modules use which, what procedures call, how types extend each other and how files depend on each other. Graphs are laid out and drawn by fdot, in parallel, each by one thread.

Uses

Graphs

Uses

Used by

Variables

NameTypeAttributesDefaultDescription
EDGE_COLOURScharacter(len=*)privateparameterdimension(*)[character(len=7)::'#3657c9','#1d7a55','#a15c00','#b3261e','#6a4fb3','#0b7285','#a61e69','#5c6f2d']
NUM_RELATIONSintegerprivateparameter4
REL_CALLSintegerparameter2

procedures called

REL_FILESintegerparameter4

files depended on

REL_INHERITSintegerparameter3

types extended

REL_USESintegerparameter1

modules used

Types

adjacency_tprivate

Each direction of one relation, for each entity.

graph_job_tprivate

A graph waiting to be drawn.

graph_set_t

The graphs of a project.

graph_tprivate

A graph of a page.

int_list_tprivate

A list of entities.

label_list_tprivate

Labels of edges.

walk_tprivate

The working space of one thread, sized once, for finding what a graph holds.

Functions

graphs_wantedprivate

logical function graphs_wanted(p, s, id, depth, nodes)

True if entity id is drawn with graphs.

is_simple_bindingprivate

logical function is_simple_binding(p, id)

True if a graph shows binding id as the procedure it binds: it binds one, which can be shown.

Subroutines

add_edgeprivate

subroutine add_edge(s, relation, from, to, places, g)

Add an edge to a description.

add_nodeprivate

subroutine add_node(p, id, root, g, place)

Add node id to a description.

build_graphs

subroutine build_graphs(p, s, members, list_codes, set, stat, errmsg)

Build the graphs of the project: those of s%graph, and of entities that ask for them.

build_relationsprivate

subroutine build_relations(p, relations)

Build the relations between entities.

connectprivate

subroutine connect(relation, from, to, label)

Add an edge, once. With label, the edge is dashed and labelled: components of a type have one.

describe_graphprivate

subroutine describe_graph(p, s, relation, job, w, g, found)

Put the graph of job in g. found is false if it would have only one node or no edges. Nodes go in as they are reached, and edges after them.

draw_graphprivate

subroutine draw_graph(p, s, relation, job, keep, w, drawing, description, failed)

Lay out and draw one graph.

draw_graphsprivate

subroutine draw_graphs(p, s, relations, jobs, keep, drawings, descriptions, failed, threads)

Lay out and draw jobs. A graph that turns out to have nothing to show gets no drawing.

draw_someprivate

subroutine draw_some(p, s, relations, jobs, keep, drawings, descriptions, failed)

The share of draw_graphs of one thread, with working space of its own.

grow_edgespureprivate

pure subroutine grow_edges(w)

Make room for more edges.

visible_callsrecursiveprivate

recursive subroutine visible_calls(p, id, from, seen, stamp, relation)

Add edges from from to what id calls. What cannot be shown is replaced by what it calls.