static void parse_ns3_add_cluster(sg_platf_cluster_cbarg_t cluster) { const char *cluster_prefix = cluster->prefix; const char *cluster_suffix = cluster->suffix; const char *cluster_radical = cluster->radical; const char *cluster_bb_bw = bprintf("%f",cluster->bb_bw); const char *cluster_bb_lat = bprintf("%f",cluster->bb_lat); const char *cluster_bw = bprintf("%f",cluster->bw); const char *cluster_lat = bprintf("%f",cluster->lat); const char *groups = NULL; int start, end, i; unsigned int iter; xbt_dynar_t radical_elements; xbt_dynar_t radical_ends; xbt_dynar_t tab_elements_num = xbt_dynar_new(sizeof(int), NULL); char *router_id,*host_id; radical_elements = xbt_str_split(cluster_radical, ","); xbt_dynar_foreach(radical_elements, iter, groups) { radical_ends = xbt_str_split(groups, "-"); switch (xbt_dynar_length(radical_ends)) { case 1: start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char *)); xbt_dynar_push_as(tab_elements_num, int, start); router_id = bprintf("ns3_%s%d%s", cluster_prefix, start, cluster_suffix); xbt_lib_set(host_lib, router_id, NS3_HOST_LEVEL, ns3_add_host_cluster(router_id) ); XBT_DEBUG("NS3_ADD_ROUTER '%s'",router_id); free(router_id); break; case 2: start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char *)); end = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 1, char *)); for (i = start; i <= end; i++){ xbt_dynar_push_as(tab_elements_num, int, i); router_id = bprintf("ns3_%s%d%s", cluster_prefix, i, cluster_suffix); xbt_lib_set(host_lib, router_id, NS3_HOST_LEVEL, ns3_add_host_cluster(router_id) ); XBT_DEBUG("NS3_ADD_ROUTER '%s'",router_id); free(router_id); } break; default: XBT_DEBUG("Malformed radical"); } }
static void parse_ns3_add_cluster(sg_platf_cluster_cbarg_t cluster) { const char *groups = nullptr; int start, end, i; unsigned int iter; xbt_dynar_t tab_elements_num = xbt_dynar_new(sizeof(int), nullptr); char *router_id,*host_id; xbt_dynar_t radical_elements = xbt_str_split(cluster->radical, ","); xbt_dynar_foreach(radical_elements, iter, groups) { xbt_dynar_t radical_ends = xbt_str_split(groups, "-"); switch (xbt_dynar_length(radical_ends)) { case 1: start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char *)); xbt_dynar_push_as(tab_elements_num, int, start); router_id = bprintf("ns3_%s%d%s", cluster->prefix, start, cluster->suffix); simgrid::s4u::Host::by_name_or_create(router_id)->extension_set(NS3_EXTENSION_ID, ns3_add_host_cluster(router_id)); XBT_DEBUG("NS3_ADD_ROUTER '%s'",router_id); free(router_id); break; case 2: start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char *)); end = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 1, char *)); for (i = start; i <= end; i++){ xbt_dynar_push_as(tab_elements_num, int, i); router_id = bprintf("ns3_%s%d%s", cluster->prefix, i, cluster->suffix); simgrid::s4u::Host::by_name_or_create(router_id)->extension_set(NS3_EXTENSION_ID, ns3_add_host_cluster(router_id)); XBT_DEBUG("NS3_ADD_ROUTER '%s'",router_id); free(router_id); } break; default: XBT_DEBUG("Malformed radical"); } }