Graphviz 12.0.1~dev.20240716.0800
Loading...
Searching...
No Matches
conc.c File Reference
#include <dotgen/dot.h>
#include <stdbool.h>
Include dependency graph for conc.c:

Go to the source code of this file.

Macros

#define UP   0
 
#define DOWN   1
 

Functions

static bool samedir (edge_t *e, edge_t *f)
 
static bool downcandidate (node_t *v)
 
static bool bothdowncandidates (node_t *u, node_t *v)
 
static bool upcandidate (node_t *v)
 
static bool bothupcandidates (node_t *u, node_t *v)
 
static void mergevirtual (graph_t *g, int r, int lpos, int rpos, int dir)
 
static void infuse (graph_t *g, node_t *n)
 
static int rebuild_vlists (graph_t *g)
 
void dot_concentrate (graph_t *g)
 

Macro Definition Documentation

◆ DOWN

#define DOWN   1

Definition at line 20 of file conc.c.

◆ UP

#define UP   0

Definition at line 19 of file conc.c.

Function Documentation

◆ bothdowncandidates()

static bool bothdowncandidates ( node_t u,
node_t v 
)
static

Definition at line 46 of file conc.c.

References agtail, downcandidate(), ED_tail_port, ND_in, portcmp(), and samedir().

Referenced by dot_concentrate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ bothupcandidates()

static bool bothupcandidates ( node_t u,
node_t v 
)
static

Definition at line 64 of file conc.c.

References aghead, ED_head_port, ND_out, portcmp(), samedir(), and upcandidate().

Referenced by dot_concentrate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ dot_concentrate()

void dot_concentrate ( graph_t g)

Definition at line 205 of file conc.c.

References agerr(), AGPREV, bothdowncandidates(), bothupcandidates(), DOWN, downcandidate(), GD_clust, GD_maxrank, GD_minrank, GD_n_cluster, GD_rank, left, mergevirtual(), rebuild_vlists(), right, UP, and upcandidate().

Referenced by dot_position().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ downcandidate()

static bool downcandidate ( node_t v)
static

Definition at line 40 of file conc.c.

References ND_in, ND_label, ND_node_type, ND_out, NULL, and VIRTUAL.

Referenced by bothdowncandidates(), and dot_concentrate().

Here is the caller graph for this function:

◆ infuse()

static void infuse ( graph_t g,
node_t n 
)
static

Definition at line 130 of file conc.c.

References GD_rankleader, ND_order, ND_rank, and NULL.

Referenced by rebuild_vlists().

Here is the caller graph for this function:

◆ mergevirtual()

static void mergevirtual ( graph_t g,
int  r,
int  lpos,
int  rpos,
int  dir 
)
static

Definition at line 76 of file conc.c.

References aghead, agtail, delete_fast_edge(), delete_fast_node(), DOWN, GD_rank, left, merge_oneway(), ND_in, ND_order, ND_out, NULL, right, and virtual_edge().

Referenced by dot_concentrate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rebuild_vlists()

static int rebuild_vlists ( graph_t g)
static

Definition at line 139 of file conc.c.

References agcontains(), agerrorf(), agfstnode(), agfstout(), aghead, agnameof(), agnxtnode(), agnxtout(), agtail, agwarningf(), dot_root(), dot_scan_ranks(), ED_to_orig, ED_to_virt, GD_clust, GD_maxrank, GD_minrank, GD_n_cluster, GD_rank, GD_rankleader, infuse(), ND_in, ND_node_type, ND_order, ND_out, ND_rank, NORMAL, NULL, and rebuild_vlists().

Referenced by dot_concentrate(), and rebuild_vlists().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ samedir()

static bool samedir ( edge_t e,
edge_t f 
)
static

Definition at line 22 of file conc.c.

References aghead, agtail, ED_conc_opp_flag, ED_edge_type, ED_to_orig, ND_rank, NORMAL, and NULL.

Referenced by bothdowncandidates(), and bothupcandidates().

Here is the caller graph for this function:

◆ upcandidate()

static bool upcandidate ( node_t v)
static

Definition at line 58 of file conc.c.

References ND_in, ND_label, ND_node_type, ND_out, NULL, and VIRTUAL.

Referenced by bothupcandidates(), and dot_concentrate().

Here is the caller graph for this function: