/** \brief Frees all memory allocated by the routing module */
void routing_exit(void) {
- if (!routing_platf)
- return;
- xbt_dynar_free(&routing_platf->p_lastRoute);
- finalize_rec(routing_platf->p_root);
- delete routing_platf;
+ if (routing_platf)
+ delete routing_platf;
+}
+
+RoutingPlatf::~RoutingPlatf()
+{
+ xbt_dynar_free(&p_lastRoute);
+ finalize_rec(p_root);
}
AS_t surf_AS_get_routing_root() {
/* Delete routing table */
for (i = 0; i < table_size; i++)
for (j = 0; j < table_size; j++) {
- xbt_dynar_free(&TO_ROUTE_FULL(i,j)->link_list);
- xbt_free(TO_ROUTE_FULL(i,j));
+ if (TO_ROUTE_FULL(i,j)){
+ if (TO_ROUTE_FULL(i,j)->link_list)
+ xbt_dynar_free(&TO_ROUTE_FULL(i,j)->link_list);
+ xbt_free(TO_ROUTE_FULL(i,j));
+ }
}
xbt_free(p_routingTable);
}
public:
AsNone();
~AsNone();
- virtual void getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf_route_cbarg_t into, double *latency);
- virtual xbt_dynar_t getOneLinkRoutes();
- virtual void getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges);
- virtual sg_platf_route_cbarg_t getBypassRoute(RoutingEdgePtr src, RoutingEdgePtr dst, double *lat);
+
+ void getRouteAndLatency(RoutingEdgePtr src, RoutingEdgePtr dst, sg_platf_route_cbarg_t into, double *latency);
+ xbt_dynar_t getOneLinkRoutes();
+ void getGraph(xbt_graph_t graph, xbt_dict_t nodes, xbt_dict_t edges);
+ sg_platf_route_cbarg_t getBypassRoute(RoutingEdgePtr src, RoutingEdgePtr dst, double *lat);
/* The parser calls the following functions to inform the routing models
* that a new element is added to the AS currently built.
*
* Of course, only the routing model of this AS is informed, not every ones */
- virtual int parsePU(RoutingEdgePtr elm); /* A host or a router, whatever */
- virtual int parseAS( RoutingEdgePtr elm);
- virtual void parseRoute(sg_platf_route_cbarg_t route);
- virtual void parseASroute(sg_platf_route_cbarg_t route);
- virtual void parseBypassroute(sg_platf_route_cbarg_t e_route);
+ int parsePU(RoutingEdgePtr elm); /* A host or a router, whatever */
+ int parseAS( RoutingEdgePtr elm);
+ void parseRoute(sg_platf_route_cbarg_t route);
+ void parseASroute(sg_platf_route_cbarg_t route);
+ void parseBypassroute(sg_platf_route_cbarg_t e_route);
};