Overlap graph implementation. More...
#include "overlap_graph.h"
#include "disjoint_set.h"
#include "priority_queue.h"
#include "list.h"
#include "debug.h"
#include <errno.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
Go to the source code of this file.
Data Structures | |
struct | edge |
An overlap graph edge. More... | |
struct | vertex |
An overlap graph vertex. More... | |
struct | overlap_graph |
An overlap graph. More... | |
Functions | |
static off_t | calculate_overlap (off_t start1, off_t size1, off_t start2, off_t size2) |
Calculates the overlap of two ranges. | |
static int | overlap_graph_add_edge (overlap_graph_t *g, size_t src_id, size_t dst_id, off_t weight) |
Adds an edge to the overlap graph. | |
static int | topo_visit (overlap_graph_t *g, size_t n, list_t *list) |
Visit depth-first the vertices of an overlap graph prepending them to the list as they finish. | |
int | overlap_graph_new (overlap_graph_t **g, size_t capacity) |
Creates an new overlap graph. | |
int | overlap_graph_free (overlap_graph_t *g) |
Frees an overlap graph. | |
int | overlap_graph_add_segment (overlap_graph_t *g, segment_t *seg, off_t mapping) |
Adds a segment to an overlap graph. | |
int | overlap_graph_remove_cycles (overlap_graph_t *g) |
Removes cycles from the graph. | |
int | overlap_graph_export_dot (overlap_graph_t *g, int fd) |
Exports an overlap graph to the dot format. | |
int | overlap_graph_get_removed_edges (overlap_graph_t *g, list_t **edges) |
Gets the edges removed from the graph. | |
int | overlap_graph_get_vertices_topo (overlap_graph_t *g, list_t **vertices) |
Gets the vertices in topological order. |
Overlap graph implementation.
Definition in file overlap_graph.c.
static off_t calculate_overlap | ( | off_t | start1, | |
off_t | size1, | |||
off_t | start2, | |||
off_t | size2 | |||
) | [static] |
Calculates the overlap of two ranges.
start1 | start of first range | |
size1 | size of first range | |
start2 | start of second range | |
size2 | size of second range |
Definition at line 87 of file overlap_graph.c.
Referenced by overlap_graph_add_segment().
static int overlap_graph_add_edge | ( | overlap_graph_t * | g, | |
size_t | src_id, | |||
size_t | dst_id, | |||
off_t | weight | |||
) | [static] |
Adds an edge to the overlap graph.
g | the overlap graph | |
src_id | the id of the source of the edge | |
dst_id | the id of the destination of the edges | |
weight | the weight of the edge |
Definition at line 124 of file overlap_graph.c.
References edge::dst_id, vertex::head, vertex::in_degree, edge::next, vertex::out_degree, edge::removed, edge::src_id, overlap_graph::tail, overlap_graph::vertices, and edge::weight.
Referenced by overlap_graph_add_segment().
static int topo_visit | ( | overlap_graph_t * | g, | |
size_t | n, | |||
list_t * | list | |||
) | [static] |
Visit depth-first the vertices of an overlap graph prepending them to the list as they finish.
g | the overlap graph | |
n | the vertex id of the vertex to visit | |
list | the list to add the vertices |
Definition at line 169 of file overlap_graph.c.
References edge::dst_id, vertex::head, list_head(), list_insert_after(), vertex::mapping, edge::next, edge::removed, vertex::segment, vertex::self_loop_weight, overlap_graph::tail, overlap_graph::vertices, and vertex::visited.
Referenced by overlap_graph_get_vertices_topo().