* Functions used by graphicator (transform a SimGrid platform
* file in a graphviz dot file with the network topology)
*/
-XBT_PUBLIC(const char *) TRACE_node_name (xbt_node_t node);
XBT_PUBLIC(xbt_graph_t) TRACE_platform_graph (void);
XBT_PUBLIC(void) TRACE_platform_graph_export_graphviz (xbt_graph_t g, const char *filename);
#define TRACE_declare_mark(mark_type)
#define TRACE_mark(mark_type,mark_value)
-#define TRACE_node_name(node)
#define TRACE_platform_graph(void)
#define TRACE_platform_graph_export_graphviz(g,filename)
static int platform_created = 0; /* indicate whether the platform file has been traced */
static xbt_dynar_t currentContainer = NULL; /* push and pop, used only in creation */
+static const char *instr_node_name (xbt_node_t node)
+{
+ void *data = xbt_graph_node_get_data(node);
+ char *str = (char*)data;
+ return str;
+}
+
+
static container_t lowestCommonAncestor (container_t a1, container_t a2)
{
//this is only an optimization (since most of a1 and a2 share the same parent)
xbt_edge_t ret;
char *name;
- const char *sn = TRACE_node_name (s);
- const char *dn = TRACE_node_name (d);
+ const char *sn = instr_node_name (s);
+ const char *dn = instr_node_name (d);
name = bprintf ("%s%s", sn, dn);
ret = xbt_dict_get_or_null (edges, name);
" node [width=.3, height=.3, style=filled, color=skyblue]\n\n");
xbt_dynar_foreach(g->nodes, cursor, node) {
- fprintf(file, " \"%s\";\n", TRACE_node_name(node));
+ fprintf(file, " \"%s\";\n", instr_node_name(node));
}
xbt_dynar_foreach(g->edges, cursor, edge) {
- const char *src_s = TRACE_node_name (edge->src);
- const char *dst_s = TRACE_node_name (edge->dst);
+ const char *src_s = instr_node_name (edge->src);
+ const char *dst_s = instr_node_name (edge->dst);
if (g->directed)
fprintf(file, " \"%s\" -> \"%s\";\n", src_s, dst_s);
else