X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0f5e8daaa6e9f74521068aa75837200bcd182ea6..e694957c5830a9f1407392fa7f76796274aa4d18:/include/xbt/graph.h diff --git a/include/xbt/graph.h b/include/xbt/graph.h index a35336e3d8..38a3512c15 100644 --- a/include/xbt/graph.h +++ b/include/xbt/graph.h @@ -15,10 +15,48 @@ SG_BEGIN_DECL() * * @{ */ + typedef struct xbt_node *xbt_node_t; typedef struct xbt_edge *xbt_edge_t; typedef struct xbt_graph *xbt_graph_t; +/* Node structure */ +/* Be carfull of what you do with this structure */ +/* typedef struct xbt_node *xbt_node_t; */ +typedef struct xbt_node { + xbt_dynar_t out; + xbt_dynar_t in; /* not used when the graph is directed */ + double position_x; /* positive value: negative means undefined */ + double position_y; /* positive value: negative means undefined */ + void *data; /* user data */ + void *xbtdata; /* private xbt data: should be reinitialized at the + beginning of your algorithm if you need to use it */ +} s_xbt_node_t; + +/* edge structure */ +/* Be carfull of what you do with this structure */ +/* typedef struct xbt_edge *xbt_edge_t; */ +typedef struct xbt_edge { + xbt_node_t src; + xbt_node_t dst; + void *data; /* user data */ + void *xbtdata; /* private xbt data: should be reinitialized at the + beginning of your algorithm if you need to use it */ + double length; /* positive value: negative means undefined */ +} s_xbt_edge_t; + +/* Graph structure */ +/* Be carfull of what you do with this structure */ +/* typedef struct xbt_graph *xbt_graph_t; */ +typedef struct xbt_graph { + xbt_dynar_t nodes; + xbt_dynar_t edges; + unsigned short int directed; + void *data; /* user data */ + void *xbtdata; /* private xbt data: should be reinitialized at the + beginning of your algorithm if you need to use it */ +} s_xbt_graph_t; + /* API */ XBT_PUBLIC(xbt_graph_t) xbt_graph_new_graph(unsigned short int directed, void *data); @@ -77,6 +115,11 @@ XBT_PUBLIC(void) xbt_graph_export_graphxml(xbt_graph_t g, *(edge_name) (xbt_edge_t), const char *(node_data_print) (void *), const char *(edge_data_print) (void *)); +XBT_PUBLIC(xbt_graph_t) xbt_graph_load (const char *filename); +XBT_PUBLIC(void) xbt_graph_save (xbt_graph_t span, + const char *filename, + const char *(nname) (xbt_node_t), + const char *(ename) (xbt_edge_t)); /* Not implemented yet ! */ /* void *xbt_graph_to_array(xbt_graph_t g); */