mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-10-31 19:46:16 +01:00
41 lines
1.2 KiB
C
41 lines
1.2 KiB
C
|
#ifndef _CMPH_GRAPH_H__
|
||
|
#define _CMPH_GRAPH_H__
|
||
|
|
||
|
#include <limits.h>
|
||
|
#include "cmph_types.h"
|
||
|
|
||
|
#define GRAPH_NO_NEIGHBOR UINT_MAX
|
||
|
|
||
|
typedef struct __graph_t graph_t;
|
||
|
typedef struct __graph_iterator_t graph_iterator_t;
|
||
|
struct __graph_iterator_t
|
||
|
{
|
||
|
cmph_uint32 vertex;
|
||
|
cmph_uint32 edge;
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
graph_t *graph_new(cmph_uint32 nnodes, cmph_uint32 nedges);
|
||
|
void graph_destroy(graph_t *graph);
|
||
|
|
||
|
void graph_add_edge(graph_t *g, cmph_uint32 v1, cmph_uint32 v2);
|
||
|
void graph_del_edge(graph_t *g, cmph_uint32 v1, cmph_uint32 v2);
|
||
|
void graph_clear_edges(graph_t *g);
|
||
|
cmph_uint32 graph_edge_id(graph_t *g, cmph_uint32 v1, cmph_uint32 v2);
|
||
|
cmph_uint8 graph_contains_edge(graph_t *g, cmph_uint32 v1, cmph_uint32 v2);
|
||
|
|
||
|
graph_iterator_t graph_neighbors_it(graph_t *g, cmph_uint32 v);
|
||
|
cmph_uint32 graph_next_neighbor(graph_t *g, graph_iterator_t* it);
|
||
|
|
||
|
void graph_obtain_critical_nodes(graph_t *g); /* included -- Fabiano*/
|
||
|
cmph_uint8 graph_node_is_critical(graph_t * g, cmph_uint32 v); /* included -- Fabiano */
|
||
|
cmph_uint32 graph_ncritical_nodes(graph_t *g); /* included -- Fabiano*/
|
||
|
cmph_uint32 graph_vertex_id(graph_t *g, cmph_uint32 e, cmph_uint32 id); /* included -- Fabiano*/
|
||
|
|
||
|
int graph_is_cyclic(graph_t *g);
|
||
|
|
||
|
void graph_print(graph_t *);
|
||
|
|
||
|
#endif
|