Index: trunk/src/plugins/rt_topo/crbs.c =================================================================== --- trunk/src/plugins/rt_topo/crbs.c (revision 1338) +++ trunk/src/plugins/rt_topo/crbs.c (revision 1339) @@ -38,6 +38,8 @@ #include "crbs.h" +static crbs_2net_t tn_unknown; + static void crbs_coll_report_cb(grbs_t *grbs, grbs_2net_t *tn, grbs_2net_t *coll_tn, grbs_arc_t *coll_arc) { crbs_t *crbs = grbs->user_data; @@ -44,10 +46,24 @@ crbs_2net_t *coll_ctn = coll_tn->user_data; /* crbs_2net_t *ctn = tn->user_data;*/ - htpi_set(&crbs->coll_nets, coll_ctn, 1); + if (coll_ctn != &tn_unknown) + htpi_set(&crbs->coll_nets, coll_ctn, 1); } +static grbs_2net_t *crbs_coll_check_arc_cb(grbs_t *grbs, grbs_2net_t *tn, grbs_arc_t *arc) +{ + crbs_point_t *pt = arc->parent_pt->user_data; + EDGELIST_FOREACH(edge, (pt->cpt->adj_edges)) { + crbs_edge_t *e = edge->data; + if (e->nets > 0) { +#warning TODO: check if edge is crossed + } + } + EDGELIST_FOREACH_END(); +} + + crbs_point_t *crbs_point_new(crbs_t *crbs) { crbs_point_t *p = calloc(sizeof(crbs_point_t), 1); @@ -66,6 +82,7 @@ grbs_init(&crbs->grbs); crbs->ctx = ctx; crbs->grbs.coll_report_cb = crbs_coll_report_cb; + crbs->grbs.coll_check_arc = crbs_coll_check_arc_cb; crbs->grbs.user_data = crbs; htad_init(&crbs->addrs, htad_hash, grbs_addr_hash_keyeq); htpi_init(&crbs->coll_nets, ptrhash, ptrkeyeq);