-#include "surf_routing_private.h"
+/* Copyright (c) 2009-2013. The SimGrid Team.
+ * All rights reserved. */
+
+/* This program is free software; you can redistribute it and/or modify it
+ * under the terms of the license (GNU LGPL) which comes with this package. */
+
#include "surf_routing_full.hpp"
#include "network.hpp"
void model_full_end(AS_t _routing)
{
- unsigned int i;
+ int i;
sg_platf_route_cbarg_t e_route;
/* set utils vars */
AsFullPtr routing = ((AsFullPtr) _routing);
- size_t table_size = xbt_dynar_length(routing->p_indexNetworkElm);
+ int table_size = (int)xbt_dynar_length(routing->p_indexNetworkElm);
/* Create table if necessary */
if (!routing->p_routingTable)
}
AsFull::AsFull(){
+ p_routingTable = 0;
}
AsFull::~AsFull(){
- size_t table_size = xbt_dynar_length(p_indexNetworkElm);
+ int table_size = (int)xbt_dynar_length(p_indexNetworkElm);
int i, j;
/* Delete routing table */
for (i = 0; i < table_size; i++)
for (j = 0; j < table_size; j++)
- delete TO_ROUTE_FULL(i,j);
+ xbt_free(TO_ROUTE_FULL(i,j));
xbt_free(p_routingTable);
}
xbt_dynar_t AsFull::getOneLinkRoutes()
{
- xbt_dynar_t ret = xbt_dynar_new(sizeof(onelink_t), xbt_free);
+ xbt_dynar_t ret = xbt_dynar_new(sizeof(OnelinkPtr), xbt_free);
int src, dst;
int table_size = xbt_dynar_length(p_indexNetworkElm);
if (route) {
if (xbt_dynar_length(route->link_list) == 1) {
void *link = *(void **) xbt_dynar_get_ptr(route->link_list, 0);
- onelink_t onelink = xbt_new0(s_onelink_t, 1);
- onelink->link_ptr = link;
+ OnelinkPtr onelink;
if (p_hierarchy == SURF_ROUTING_BASE) {
- onelink->src = xbt_dynar_get_as(p_indexNetworkElm, src, sg_routing_edge_t);
- onelink->src->m_id = src;
- onelink->dst = xbt_dynar_get_as(p_indexNetworkElm, dst, sg_routing_edge_t);
- onelink->dst->m_id = dst;
- } else if (p_hierarchy == SURF_ROUTING_RECURSIVE) {
- onelink->src = route->gw_src;
- onelink->dst = route->gw_dst;
- }
+ RoutingEdgePtr tmp_src = xbt_dynar_get_as(p_indexNetworkElm, src, sg_routing_edge_t);
+ tmp_src->m_id = src;
+ RoutingEdgePtr tmp_dst = xbt_dynar_get_as(p_indexNetworkElm, dst, sg_routing_edge_t);
+ tmp_dst->m_id = dst;
+ onelink = new Onelink(link, tmp_src, tmp_dst);
+ } else if (p_hierarchy == SURF_ROUTING_RECURSIVE)
+ onelink = new Onelink(link, route->gw_src, route->gw_dst);
+ else
+ onelink = new Onelink(link, NULL, NULL);
xbt_dynar_push(ret, &onelink);
XBT_DEBUG("Push route from '%d' to '%d'",
src,
size_t table_size = xbt_dynar_length(p_indexNetworkElm);
sg_platf_route_cbarg_t e_route = NULL;
- NetworkCm02LinkPtr link;
+ void *link;
unsigned int cpt = 0;
e_route = TO_ROUTE_FULL(src->m_id, dst->m_id);
xbt_dynar_foreach(e_route->link_list, cpt, link) {
xbt_dynar_push(res->link_list, &link);
if (lat)
- *lat += link->getLatency();
+ *lat += dynamic_cast<NetworkCm02LinkPtr>(static_cast<ResourcePtr>(link))->getLatency();
}
}
}