Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
start initializing routing fields in the constructors, not with a shotgun
[simgrid.git] / src / surf / surf_routing_cluster_fat_tree.cpp
index 041abb7..d8410ef 100644 (file)
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route_fat_tree, surf, "Routing for fat trees");
 
-AS_t model_fat_tree_cluster_create(void)
-{
-  return new simgrid::surf::AsClusterFatTree();
-}
-
 namespace simgrid {
 namespace surf {
 
-AsClusterFatTree::AsClusterFatTree() : levels(0) {
+AsClusterFatTree::AsClusterFatTree(const char*name)
+  : AsCluster(name)
+{
   XBT_DEBUG("Creating a new fat tree.");
 }
 
@@ -431,7 +428,7 @@ void AsClusterFatTree::parse_specific_arguments(sg_platf_cluster_cbarg_t
   }
 
   // The first parts of topo_parameters should be the levels number
-  this->levels = std::atoi(parameters[0].c_str()); // stoi() only in C++11...
+  this->levels = xbt_str_parse_int(parameters[0].c_str(), "First parameter is not the amount of levels: %s");
   
   // Then, a l-sized vector standing for the childs number by level
   boost::split(tmp, parameters[1], boost::is_any_of(","));
@@ -440,7 +437,7 @@ void AsClusterFatTree::parse_specific_arguments(sg_platf_cluster_cbarg_t
                      ", see the documentation for more informations"); 
   }
   for(size_t i = 0 ; i < tmp.size() ; i++){
-    this->lowerLevelNodesNumber.push_back(std::atoi(tmp[i].c_str())); 
+    this->lowerLevelNodesNumber.push_back(xbt_str_parse_int(tmp[i].c_str(), "Invalid lower level node number: %s"));
   }
   
   // Then, a l-sized vector standing for the parents number by level
@@ -450,7 +447,7 @@ void AsClusterFatTree::parse_specific_arguments(sg_platf_cluster_cbarg_t
                      ", see the documentation for more informations"); 
   }
   for(size_t i = 0 ; i < tmp.size() ; i++){
-    this->upperLevelNodesNumber.push_back(std::atoi(tmp[i].c_str())); 
+    this->upperLevelNodesNumber.push_back(xbt_str_parse_int(tmp[i].c_str(), "Invalid upper level node number: %s"));
   }
   
   // Finally, a l-sized vector standing for the ports number with the lower level
@@ -461,7 +458,7 @@ void AsClusterFatTree::parse_specific_arguments(sg_platf_cluster_cbarg_t
     
   }
   for(size_t i = 0 ; i < tmp.size() ; i++){
-    this->lowerLevelPortsNumber.push_back(std::atoi(tmp[i].c_str())); 
+    this->lowerLevelPortsNumber.push_back(xbt_str_parse_int(tmp[i].c_str(), "Invalid lower level node number: %s"));
   }
   this->cluster = cluster;
 }