/* 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(src->out, cursor, edge) {
- DEBUG3("%p = %p--%p", edge, edge->src, edge->dst);
+ XBT_DEBUG("%p = %p--%p", edge, edge->src, edge->dst);
if ((edge->src == src) && (edge->dst == dst))
return edge;
}
if (!g->directed) {
xbt_dynar_foreach(src->out, cursor, edge) {
- DEBUG3("%p = %p--%p", edge, edge->src, edge->dst);
+ XBT_DEBUG("%p = %p--%p", edge, edge->src, edge->dst);
if ((edge->dst == src) && (edge->src == dst))
return edge;
}
}
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);
free(g);
-
+ xbt_graph_parse_lex_destroy();
return;
}
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));
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);
static void __parse_graph_begin(void)
{
- DEBUG0("<graph>");
+ XBT_DEBUG("<graph>");
if (A_graphxml_graph_isDirected == A_graphxml_graph_isDirected_true)
parsed_graph = xbt_graph_new_graph(1, NULL);
else
static void __parse_graph_end(void)
{
xbt_dict_free(&parsed_nodes);
- DEBUG0("</graph>");
+ XBT_DEBUG("</graph>");
}
static void __parse_node(void)
{
xbt_node_t node = xbt_graph_new_node(parsed_graph, NULL);
- DEBUG1("<node name=\"%s\"/>", A_graphxml_node_name);
+ XBT_DEBUG("<node name=\"%s\"/>", A_graphxml_node_name);
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);
}
xbt_graph_parse_get_double(&(edge->length), A_graphxml_edge_length);
- DEBUG3("<edge source=\"%s\" target=\"%s\" length=\"%f\"/>",
+ XBT_DEBUG("<edge source=\"%s\" target=\"%s\" length=\"%f\"/>",
(char *) (edge->src)->data,
(char *) (edge->dst)->data, xbt_graph_edge_get_length(edge));
}
ETag_graphxml_edge_fun = __parse_edge;
xbt_graph_parse_open(filename);
- xbt_assert1((!(*xbt_graph_parse) ()), "Parse error in %s", filename);
+ int res;
+ res = (*xbt_graph_parse) ();
+ xbt_assert1(!res, "Parse error in %s", filename);
xbt_graph_parse_close();
graph = parsed_graph;