summaryrefslogtreecommitdiffstats
path: root/lib/graph.c
diff options
context:
space:
mode:
authorwhitespace / reindent <invalid@invalid.invalid>2017-07-17 14:03:14 +0200
committerwhitespace / reindent <invalid@invalid.invalid>2017-07-17 14:04:07 +0200
commitd62a17aedeb0eebdba98238874bb13d62c48dbf9 (patch)
tree3b319b1d61c8b85b4d1f06adf8b844bb8a9b5107 /lib/graph.c
parent*: add indent control files (diff)
downloadfrr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.tar.xz
frr-d62a17aedeb0eebdba98238874bb13d62c48dbf9.zip
indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'` Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'lib/graph.c')
-rw-r--r--lib/graph.c181
1 files changed, 86 insertions, 95 deletions
diff --git a/lib/graph.c b/lib/graph.c
index 6173b2084..945a58e68 100644
--- a/lib/graph.c
+++ b/lib/graph.c
@@ -24,124 +24,115 @@
#include "graph.h"
#include "memory.h"
-DEFINE_MTYPE_STATIC(LIB, GRAPH, "Graph")
+DEFINE_MTYPE_STATIC(LIB, GRAPH, "Graph")
DEFINE_MTYPE_STATIC(LIB, GRAPH_NODE, "Graph Node")
-struct graph *
-graph_new ()
+struct graph *graph_new()
{
- struct graph *graph = XCALLOC (MTYPE_GRAPH, sizeof(struct graph));
- graph->nodes = vector_init (VECTOR_MIN_SIZE);
+ struct graph *graph = XCALLOC(MTYPE_GRAPH, sizeof(struct graph));
+ graph->nodes = vector_init(VECTOR_MIN_SIZE);
- return graph;
+ return graph;
}
-struct graph_node *
-graph_new_node (struct graph *graph, void *data, void (*del) (void*))
+struct graph_node *graph_new_node(struct graph *graph, void *data,
+ void (*del)(void *))
{
- struct graph_node *node =
- XCALLOC(MTYPE_GRAPH_NODE, sizeof(struct graph_node));
+ struct graph_node *node =
+ XCALLOC(MTYPE_GRAPH_NODE, sizeof(struct graph_node));
- node->from = vector_init (VECTOR_MIN_SIZE);
- node->to = vector_init (VECTOR_MIN_SIZE);
- node->data = data;
- node->del = del;
+ node->from = vector_init(VECTOR_MIN_SIZE);
+ node->to = vector_init(VECTOR_MIN_SIZE);
+ node->data = data;
+ node->del = del;
- vector_set (graph->nodes, node);
+ vector_set(graph->nodes, node);
- return node;
+ return node;
}
-static void
-vector_remove (vector v, unsigned int ix)
+static void vector_remove(vector v, unsigned int ix)
{
- if (ix >= v->active)
- return;
-
- /* v->active is guaranteed >= 1 because ix can't be lower than 0
- * and v->active is > ix. */
- v->active--;
- /* if ix == v->active--, we set the item to itself, then to NULL...
- * still correct, no check neccessary. */
- v->index[ix] = v->index[v->active];
- v->index[v->active] = NULL;
+ if (ix >= v->active)
+ return;
+
+ /* v->active is guaranteed >= 1 because ix can't be lower than 0
+ * and v->active is > ix. */
+ v->active--;
+ /* if ix == v->active--, we set the item to itself, then to NULL...
+ * still correct, no check neccessary. */
+ v->index[ix] = v->index[v->active];
+ v->index[v->active] = NULL;
}
-void
-graph_delete_node (struct graph *graph, struct graph_node *node)
+void graph_delete_node(struct graph *graph, struct graph_node *node)
{
- if (!node) return;
-
- // an adjacent node
- struct graph_node *adj;
-
- // remove all edges from other nodes to us
- for (unsigned int i = vector_active (node->from); i--; /**/)
- {
- adj = vector_slot (node->from, i);
- graph_remove_edge (adj, node);
- }
-
- // remove all edges from us to other nodes
- for (unsigned int i = vector_active (node->to); i--; /**/)
- {
- adj = vector_slot (node->to, i);
- graph_remove_edge (node, adj);
- }
-
- // if there is a deletion callback, call it
- if (node->del && node->data)
- (*node->del) (node->data);
-
- // free adjacency lists
- vector_free (node->to);
- vector_free (node->from);
-
- // remove node from graph->nodes
- for (unsigned int i = vector_active (graph->nodes); i--; /**/)
- if (vector_slot (graph->nodes, i) == node)
- {
- vector_remove (graph->nodes, i);
- break;
- }
-
- // free the node itself
- XFREE (MTYPE_GRAPH_NODE, node);
+ if (!node)
+ return;
+
+ // an adjacent node
+ struct graph_node *adj;
+
+ // remove all edges from other nodes to us
+ for (unsigned int i = vector_active(node->from); i--; /**/) {
+ adj = vector_slot(node->from, i);
+ graph_remove_edge(adj, node);
+ }
+
+ // remove all edges from us to other nodes
+ for (unsigned int i = vector_active(node->to); i--; /**/) {
+ adj = vector_slot(node->to, i);
+ graph_remove_edge(node, adj);
+ }
+
+ // if there is a deletion callback, call it
+ if (node->del && node->data)
+ (*node->del)(node->data);
+
+ // free adjacency lists
+ vector_free(node->to);
+ vector_free(node->from);
+
+ // remove node from graph->nodes
+ for (unsigned int i = vector_active(graph->nodes); i--; /**/)
+ if (vector_slot(graph->nodes, i) == node) {
+ vector_remove(graph->nodes, i);
+ break;
+ }
+
+ // free the node itself
+ XFREE(MTYPE_GRAPH_NODE, node);
}
-struct graph_node *
-graph_add_edge (struct graph_node *from, struct graph_node *to)
+struct graph_node *graph_add_edge(struct graph_node *from,
+ struct graph_node *to)
{
- vector_set (from->to, to);
- vector_set (to->from, from);
- return to;
+ vector_set(from->to, to);
+ vector_set(to->from, from);
+ return to;
}
-void
-graph_remove_edge (struct graph_node *from, struct graph_node *to)
+void graph_remove_edge(struct graph_node *from, struct graph_node *to)
{
- // remove from from to->from
- for (unsigned int i = vector_active (to->from); i--; /**/)
- if (vector_slot (to->from, i) == from)
- {
- vector_remove (to->from, i);
- break;
- }
- // remove to from from->to
- for (unsigned int i = vector_active (from->to); i--; /**/)
- if (vector_slot (from->to, i) == to)
- {
- vector_remove (from->to, i);
- break;
- }
+ // remove from from to->from
+ for (unsigned int i = vector_active(to->from); i--; /**/)
+ if (vector_slot(to->from, i) == from) {
+ vector_remove(to->from, i);
+ break;
+ }
+ // remove to from from->to
+ for (unsigned int i = vector_active(from->to); i--; /**/)
+ if (vector_slot(from->to, i) == to) {
+ vector_remove(from->to, i);
+ break;
+ }
}
-void
-graph_delete_graph (struct graph *graph)
+void graph_delete_graph(struct graph *graph)
{
- // delete each node in the graph
- for (unsigned int i = vector_active (graph->nodes); i--; /**/)
- graph_delete_node (graph, vector_slot (graph->nodes, i));
+ // delete each node in the graph
+ for (unsigned int i = vector_active(graph->nodes); i--; /**/)
+ graph_delete_node(graph, vector_slot(graph->nodes, i));
- vector_free (graph->nodes);
- XFREE (MTYPE_GRAPH, graph);
+ vector_free(graph->nodes);
+ XFREE(MTYPE_GRAPH, graph);
}