#include "xbt/dynar.h"
SG_BEGIN_DECL()
-typedef struct xbt_node *xbt_node_t;
+ /** @addtogroup XBT_graph
+ * @brief A graph data type with several interesting algorithms
+ *
+ * @{
+ */
+
+typedef struct xbt_node *xbt_node_t;
typedef struct xbt_edge *xbt_edge_t;
-typedef struct xbt_graph *xbt_graph_t;
+typedef struct xbt_graph *xbt_graph_t;
/* API */
xbt_graph_t xbt_graph_new_graph(unsigned short int directed, void *data);
xbt_node_t xbt_graph_new_node(xbt_graph_t g, void *data);
xbt_edge_t xbt_graph_new_edge(xbt_graph_t g, xbt_node_t src, xbt_node_t dst,
void *data);
+void *xbt_graph_node_get_data(xbt_node_t node);
+void xbt_graph_node_set_data(xbt_node_t node, void *data);
+void *xbt_graph_edge_get_data(xbt_edge_t edge);
+void xbt_graph_edge_set_data(xbt_edge_t edge, void *data);
+
+xbt_edge_t xbt_graph_get_edge(xbt_graph_t g, xbt_node_t src, xbt_node_t dst);
+
void xbt_graph_edge_set_length(xbt_edge_t e, double length);
double xbt_graph_edge_get_length(xbt_edge_t e);
double* xbt_graph_get_length_matrix(xbt_graph_t g);
/* Not implemented yet ! */
/* void *xbt_graph_to_array(xbt_graph_t g); */
xbt_node_t* xbt_graph_shortest_paths(xbt_graph_t g);
-void xbt_graph_topological_sort(xbt_graph_t g);
+
+
+
+/** @brief transforms the network structure of a directed acyclic graph given into a linear structure
+ @return: an array containing the nodes of the graph sorted in order reverse to the path of exploration
+ if a cycle is detected an exception is raised
+ */
+
+xbt_node_t* xbt_graph_topo_sort(xbt_graph_t g);
+
xbt_edge_t* xbt_graph_spanning_tree_prim(xbt_graph_t g);
SG_END_DECL()
#endif /* _XBT_GRAPH_H */
-
+/** @} */