* Helping functions
*/
void surf_parse_assert(bool cond, const char *fmt, ...) {
- if (!cond ) {
+ if (not cond) {
va_list va;
va_start(va,fmt);
int lineno = surf_parse_lineno;
surf_exit();
xbt_die("Exiting now");
}
+void surf_parse_assert_netpoint(char* hostname, const char* pre, const char* post)
+{
+ if (sg_netpoint_by_name_or_null(hostname) != nullptr) // found
+ return;
+
+ std::string msg = std::string(pre);
+ msg += hostname;
+ msg += post;
+ msg += " Existing netpoints: \n";
+
+ std::vector<simgrid::kernel::routing::NetPoint*> list;
+ simgrid::s4u::Engine::instance()->netpointList(&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 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("%s", msg.c_str());
+}
+
void surf_parse_warn(const char *fmt, ...) {
va_list va;
va_start(va,fmt);
storage.id = A_surfxml_storage_id;
storage.type_id = A_surfxml_storage_typeId;
storage.content = A_surfxml_storage_content;
- storage.content_type = A_surfxml_storage_content___type;
+
storage.attach = A_surfxml_storage_attach;
sg_platf_new_storage(&storage);
}
current_model_property_set = nullptr;
storage_type.content = A_surfxml_storage___type_content;
- storage_type.content_type = A_surfxml_storage___type_content___type;
storage_type.id = A_surfxml_storage___type_id;
storage_type.model = A_surfxml_storage___type_model;
storage_type.size = surf_parse_get_size(A_surfxml_storage___type_size,
netzone->setProperty(A_surfxml_prop_id, A_surfxml_prop_value);
}
else{
- if (!current_property_set)
+ if (not current_property_set)
current_property_set = xbt_dict_new_homogeneous(&xbt_free_f); // Maybe, it should raise an error
xbt_dict_set(current_property_set, A_surfxml_prop_id, xbt_strdup(A_surfxml_prop_value), nullptr);
XBT_DEBUG("add prop %s=%s into current property set %p", A_surfxml_prop_id, A_surfxml_prop_value,
}
void STag_surfxml_route(){
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_route_src), "Route src='%s' does name a node.",
- A_surfxml_route_src);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_route_dst), "Route dst='%s' does name a node.",
- A_surfxml_route_dst);
+ surf_parse_assert_netpoint(A_surfxml_route_src, "Route src='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_route_dst, "Route dst='", "' does name a node.");
}
void STag_surfxml_ASroute(){
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_ASroute_src), "ASroute src='%s' does name a node.",
- A_surfxml_ASroute_src);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_ASroute_dst), "ASroute dst='%s' does name a node.",
- A_surfxml_ASroute_dst);
+ surf_parse_assert_netpoint(A_surfxml_ASroute_src, "ASroute src='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_ASroute_dst, "ASroute dst='", "' does name a node.");
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_ASroute_gw___src), "ASroute gw_src='%s' does name a node.",
- A_surfxml_ASroute_gw___src);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_ASroute_gw___dst), "ASroute gw_dst='%s' does name a node.",
- A_surfxml_ASroute_gw___dst);
+ surf_parse_assert_netpoint(A_surfxml_ASroute_gw___src, "ASroute gw_src='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_ASroute_gw___dst, "ASroute gw_dst='", "' does name a node.");
}
void STag_surfxml_zoneRoute(){
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_zoneRoute_src), "zoneRoute src='%s' does name a node.",
- A_surfxml_zoneRoute_src);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_zoneRoute_dst), "zoneRoute dst='%s' does name a node.",
- A_surfxml_zoneRoute_dst);
-
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_zoneRoute_gw___src), "zoneRoute gw_src='%s' does name a node.",
- A_surfxml_zoneRoute_gw___src);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_zoneRoute_gw___dst), "zoneRoute gw_dst='%s' does name a node.",
- A_surfxml_zoneRoute_gw___dst);
+ surf_parse_assert_netpoint(A_surfxml_zoneRoute_src, "zoneRoute src='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_zoneRoute_dst, "zoneRoute dst='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_zoneRoute_gw___src, "zoneRoute gw_src='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_zoneRoute_gw___dst, "zoneRoute gw_dst='", "' does name a node.");
}
void STag_surfxml_bypassRoute(){
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassRoute_src), "bypassRoute src='%s' does name a node.",
- A_surfxml_bypassRoute_src);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassRoute_dst), "bypassRoute dst='%s' does name a node.",
- A_surfxml_bypassRoute_dst);
+ surf_parse_assert_netpoint(A_surfxml_bypassRoute_src, "bypassRoute src='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_bypassRoute_dst, "bypassRoute dst='", "' does name a node.");
}
void STag_surfxml_bypassASroute(){
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassASroute_src),
- "bypassASroute src='%s' does name a node.", A_surfxml_bypassASroute_src);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassASroute_dst),
- "bypassASroute dst='%s' does name a node.", A_surfxml_bypassASroute_dst);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassASroute_gw___src),
- "bypassASroute gw_src='%s' does name a node.", A_surfxml_bypassASroute_gw___src);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassASroute_gw___dst),
- "bypassASroute gw_dst='%s' does name a node.", A_surfxml_bypassASroute_gw___dst);
+ surf_parse_assert_netpoint(A_surfxml_bypassASroute_src, "bypassASroute src='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_bypassASroute_dst, "bypassASroute dst='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_bypassASroute_gw___src, "bypassASroute gw_src='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_bypassASroute_gw___dst, "bypassASroute gw_dst='", "' does name a node.");
}
void STag_surfxml_bypassZoneRoute(){
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassZoneRoute_src),
- "bypassASroute src='%s' does name a node.", A_surfxml_bypassZoneRoute_src);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassZoneRoute_dst),
- "bypassASroute dst='%s' does name a node.", A_surfxml_bypassZoneRoute_dst);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassZoneRoute_gw___src),
- "bypassASroute gw_src='%s' does name a node.", A_surfxml_bypassZoneRoute_gw___src);
- surf_parse_assert(sg_netpoint_by_name_or_null(A_surfxml_bypassZoneRoute_gw___dst),
- "bypassASroute gw_dst='%s' does name a node.", A_surfxml_bypassZoneRoute_gw___dst);
+ surf_parse_assert_netpoint(A_surfxml_bypassZoneRoute_src, "bypassZoneRoute src='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_bypassZoneRoute_dst, "bypassZoneRoute dst='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_bypassZoneRoute_gw___src, "bypassZoneRoute gw_src='", "' does name a node.");
+ surf_parse_assert_netpoint(A_surfxml_bypassZoneRoute_gw___dst, "bypassZoneRoute gw_dst='", "' does name a node.");
}
void ETag_surfxml_route(){
}
void STag_surfxml_model___prop(){
- if (!current_model_property_set)
+ if (not current_model_property_set)
current_model_property_set = new std::map<std::string, std::string>();
current_model_property_set->insert(
xbt_free(dir);
surf_file_to_parse = surf_fopen(file, "r");
- xbt_assert((surf_file_to_parse), "Unable to open \"%s\"\n", file);
+ xbt_assert(surf_file_to_parse != nullptr, "Unable to open '%s'\n", file);
surf_input_buffer = surf_parse__create_buffer(surf_file_to_parse, YY_BUF_SIZE);
surf_parse__switch_to_buffer(surf_input_buffer);
surf_parse_lineno = 1;