-void surf_parse_warn(const char *fmt, ...) {
- va_list va;
- va_start(va,fmt);
- char *msg = bvprintf(fmt,va);
- va_end(va);
- XBT_WARN("%s:%d: %s", surf_parsed_filename, surf_parse_lineno, msg);
- free(msg);
+
+void surf_parse_assert_netpoint(std::string hostname, std::string pre, std::string post)
+{
+ if (sg_netpoint_by_name_or_null(hostname.c_str()) != nullptr) // found
+ return;
+
+ std::string msg = pre + hostname + post + " Existing netpoints: \n";
+
+ std::vector<simgrid::kernel::routing::NetPoint*> list;
+ simgrid::s4u::Engine::getInstance()->getNetpointList(&list);
+ std::sort(list.begin(), list.end(),
+ [](simgrid::kernel::routing::NetPoint* a, simgrid::kernel::routing::NetPoint* b) {
+ return a->name() < b->name();
+ });
+ bool first = true;
+ for (auto const& np : list) {
+ if (np->isNetZone())
+ continue;
+
+ if (not first)
+ msg += ",";
+ first = false;
+ msg += "'" + np->name() + "'";
+ if (msg.length() > 4096) {
+ msg.pop_back(); // remove trailing quote
+ msg += "...(list truncated)......";
+ break;
+ }
+ }
+ surf_parse_error(msg);