-# undef P
-# undef D
-}
-
-/*computes all-pairs shortest paths*/
-xbt_node_t* xbt_graph_shortest_paths(xbt_graph_t g)
-{
- xbt_node_t* p;
- xbt_node_t* r;
- int i,j,k;
- unsigned long n;
-
- double* adj=NULL;
- double* d=NULL;
-
-# define P(u,v) p[(u)*n+(v)]
-# define R(u,v) r[(u)*n+(v)]
-
- n = xbt_dynar_length(g->nodes);
- adj= xbt_graph_get_length_matrix(g);
- xbt_floyd_algorithm(g,adj,d,p);
-
- for(i=0;i<n;i++)
- {
- for(j=0;j<n;j++)
- {
- k=j;
- while((P(i,k))&&( xbt_get_node_index(g,P(i,k))!=i))
- {
- k = xbt_get_node_index(g,P(i,k));
- }
- if(P(i,j))
- {
- R(i,j)=(xbt_node_t)xbt_dynar_get_ptr(g->nodes,k);
- }
- }
- }
-# undef R
-# undef P
-
- xbt_free(d);
- xbt_free(p);
- return r;
-}
-
-static xbt_graph_t parsed_graph=NULL;
-static xbt_dict_t parsed_nodes=NULL;
-static xbt_dict_t parsed_edges=NULL;
-
-
-static void __parse_graph_begin(void)
-{
- DEBUG0("<graph>");
-}
-static void __parse_graph_end(void)
-{
- DEBUG0("</graph>");
-}
-
-static void __parse_node(void)
-{
- xbt_node_t node= xbt_graph_new_node(parsed_graph,(void*)A_graphxml_node_name);
-
- xbt_dict_set( parsed_nodes,A_graphxml_node_name, (void *)node, free);
-
- DEBUG1("<node label=\"%s\"/>",(char*)(node->data));
-}
-static void __parse_edge(void)
-{
- xbt_edge_t edge= xbt_graph_new_edge(parsed_graph,
- xbt_dict_get(parsed_nodes,
- A_graphxml_edge_source),
- xbt_dict_get(parsed_nodes,
- A_graphxml_edge_target),
- (void*) A_graphxml_edge_name);
-
- xbt_dict_set( parsed_edges,A_graphxml_edge_name, (void *)edge, free);
- xbt_graph_edge_set_length(edge,atof(A_graphxml_edge_length));
-
- DEBUG4("<edge name=\"%s\" source=\"%s\" target=\"%s\" length=\"%f\"/>",
- (char*)edge->data,
- (char*)(edge->src)->data,
- (char*)(edge->dst)->data,
- xbt_graph_edge_get_length(edge));
-}
-
-xbt_graph_t xbt_graph_read(const char *filename)
-{
- xbt_graph_t graph = xbt_graph_new_graph(1,NULL);