- xbt_assert1(!xbt_dict_get_or_null(set_list, id),
- "Set '%s' declared several times in the platform file.",id);
- radical_ends = xbt_str_split(radical, "-");
- xbt_assert1((xbt_dynar_length(radical_ends)==2), "Radical must be in the form lvalue-rvalue! Provided value: %s", radical);
+ if (xbt_dict_get_or_null(set_list, id))
+ surf_parse_error(bprintf("Set '%s' declared several times in the platform file.",id));
+
+ current_set = xbt_dynar_new(sizeof(char*), NULL);
+
+ radical_elements = xbt_str_split(radical,",");
+ xbt_dynar_foreach(radical_elements,iter, groups) {
+
+ radical_ends = xbt_str_split(groups, "-");
+ switch (xbt_dynar_length(radical_ends)) {
+ case 1:
+ surf_parse_get_int(&start, xbt_dynar_get_as(radical_ends, 0, char*));
+ value = bprintf("%s%d%s", prefix, start, suffix);
+ xbt_dynar_push(current_set, &value);
+ break;
+
+ case 2:
+
+ surf_parse_get_int(&start, xbt_dynar_get_as(radical_ends, 0, char*));
+ surf_parse_get_int(&end, xbt_dynar_get_as(radical_ends, 1, char*));
+
+
+ for (i=start; i<=end; i++) {
+ value = bprintf("%s%d%s", prefix, i, suffix);
+ xbt_dynar_push(current_set, &value);
+ }
+ break;
+
+ default:
+ surf_parse_error(xbt_strdup("Malformed radical"));
+ }
+
+ xbt_dynar_free(&radical_ends);
+ }
+
+ xbt_dict_set(set_list, id, current_set, NULL);