- result[0] = '\0';
- char *p = result;
- p += snprintf(result,resultsize-1, "%s. Possible values: %s", description,
- model_description[0].name ? model_description[0].name : "n/a");
- for (int i = 1; model_description[i].name; i++)
- p += snprintf(p,resultsize-(p-result)-1, ", %s", model_description[i].name);
- p += snprintf(p,resultsize-(p-result)-1, ".\n (use 'help' as a value to see the long description of each %s)", name);
-
- xbt_assert(p<result+resultsize-1,"Buffer too small to display the model description of %s",name);
+ std::string description = descr + ". Possible values: ";
+ std::string sep = "";
+ for (auto const& item : model_description) {
+ description += sep + item.name;
+ sep = ", ";
+ }
+ description += ".\n (use 'help' as a value to see the long description of each " + type + ")";
+ simgrid::config::declare_flag<std::string>(name, description, value, callback);