-/* $Id$ */
-
/* a generic graph library. */
-/* Copyright (c) 2006 Darina Dimitrova, Arnaud Legrand. */
-/* All rights reserved. */
+/* Copyright (c) 2006, 2007, 2008, 2009, 2010. The SimGrid Team.
+ * All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
return edge;
}
-xbt_edge_t xbt_graph_get_edge(xbt_graph_t g, xbt_node_t src, xbt_node_t dst)
+xbt_edge_t xbt_graph_get_edge(xbt_graph_t g, xbt_node_t src,
+ xbt_node_t dst)
{
xbt_edge_t edge;
unsigned int cursor;
}
xbt_dynar_foreach(g->nodes, cursor, node)
- free(node);
+ free(node);
xbt_dynar_free(&(g->nodes));
xbt_dynar_foreach(g->edges, cursor, edge)
- free(edge);
+ free(edge);
xbt_dynar_free(&(g->edges));
if (graph_free_function)
(*graph_free_function) (g->data);
cursor = 0;
xbt_dynar_foreach(g->nodes, cursor, node)
- if (node == n)
+ if (node == n)
xbt_dynar_cursor_rm(g->nodes, &cursor);
xbt_dynar_free(&(n->in));
/** @brief Retrieve the node at the source of the given edge */
xbt_node_t xbt_graph_edge_get_source(xbt_edge_t e)
{
-
return e->src;
}
return e->dst;
}
+/** @brief Retrieve the outgoing edges of the given node */
+xbt_dynar_t xbt_graph_node_get_outedges(xbt_node_t n)
+{
+ return n->out;
+}
/** @brief Set the weight of the given edge */
void xbt_graph_edge_set_length(xbt_edge_t e, double length)
node->xbtdata = (void *) 1;
edge_list = node->out;
xbt_dynar_foreach(edge_list, cursor, e)
- xbt_heap_push(heap, e, -(e->length));
+ xbt_heap_push(heap, e, -(e->length));
while ((edge = xbt_heap_pop(heap))) {
if ((edge->src->xbtdata) && (edge->dst->xbtdata))
sorted = xbt_malloc(n * sizeof(xbt_node_t));
xbt_dynar_foreach(g->nodes, cursor, node)
- node->xbtdata = xbt_new0(int, 1);
+ node->xbtdata = xbt_new0(int, 1);
xbt_dynar_foreach(g->nodes, cursor, node)
- xbt_graph_depth_visit(g, node, sorted, &idx);
+ xbt_graph_depth_visit(g, node, sorted, &idx);
xbt_dynar_foreach(g->nodes, cursor, node) {
free(node->xbtdata);
if (__parse_node_label_and_data)
node->data = __parse_node_label_and_data(node, A_graphxml_node_label,
A_graphxml_node_data);
- xbt_graph_parse_get_double(&(node->position_x), A_graphxml_node_position_x);
- xbt_graph_parse_get_double(&(node->position_y), A_graphxml_node_position_y);
+ xbt_graph_parse_get_double(&(node->position_x),
+ A_graphxml_node_position_x);
+ xbt_graph_parse_get_double(&(node->position_y),
+ A_graphxml_node_position_y);
xbt_dict_set(parsed_nodes, A_graphxml_node_name, (void *) node, NULL);
}