+/* Build the list of hostnames in a cluster or in a cabinet */
+static std::vector<char*> *makeHostnames(const char*prefix, const char*radicals, const char *suffix){
+ std::vector<char*> *hostnames = new std::vector<char*>();
+ char *groups;
+ unsigned int iter;
+
+ //Make all hosts
+ xbt_dynar_t radical_elements = xbt_str_split(radicals, ",");
+ xbt_dynar_foreach(radical_elements, iter, groups) {
+
+ xbt_dynar_t radical_ends = xbt_str_split(groups, "-");
+ int start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char *));
+ int end=0;
+
+ switch (xbt_dynar_length(radical_ends)) {
+ case 1:
+ end = start;
+ break;
+ case 2:
+ end = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 1, char *));
+ break;
+ default:
+ surf_parse_error("Malformed radical: %s", groups);
+ break;
+ }
+
+ for (int i = start; i <= end; i++)
+ hostnames->push_back( bprintf("%s%d%s",prefix,i,suffix) );
+
+ xbt_dynar_free(&radical_ends);
+ }
+ xbt_dynar_free(&radical_elements);
+
+ return hostnames;
+}
+
+