Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
further parser cleanups
[simgrid.git] / src / surf / surf_routing.c
index bd20167..25ffc1b 100644 (file)
@@ -53,7 +53,6 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_route, surf, "Routing part of surf");
 
 static void routing_parse_Speer(void);          /* peer bypass */
 static void routing_parse_Srandom(void);        /* random bypass */
-static void routing_parse_Erandom(void);        /* random bypass */
 
 static char* replace_random_parameter(char * chaine);
 static void clean_routing_after_parse(void);
@@ -126,17 +125,6 @@ static void parse_S_host(const char *host_id, const char* coord)
   }
 }
 
-static void parse_E_host(void)
-{
-        xbt_dict_cursor_t cursor = NULL;
-         char *key;
-         char *elem;
-
-         xbt_dict_foreach(current_property_set, cursor, key, elem) {
-                 XBT_DEBUG("property : %s = %s",key,elem);
-               }
-}
-
 /*
  * \brief Add a host to the network element list from XML
  */
@@ -144,19 +132,6 @@ static void parse_S_host_XML(sg_platf_host_cbarg_t h)
 {
        parse_S_host(h->V_host_id, h->V_host_coord);
 }
-static void parse_E_host_XML(void)
-{
-       parse_E_host();
-}
-
-/*
- * \brief Add a host to the network element list from lua script
- */
-static void parse_S_host_lua(const char *host_id, const char *coord)
-{
-  parse_S_host(host_id, coord);
-}
-
 
 /**
  * \brief Add a "router" to the network element list
@@ -787,7 +762,6 @@ void surf_parse_models_setup()
   if (surf_parse_models_setup_already_called)
     return;
   surf_parse_models_setup_already_called=1;
-  routing_parse_Erandom();
   surf_config_models_setup();
 }
 
@@ -911,7 +885,6 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_
 
   /* parse generic elements */
   sg_platf_host_add_cb(parse_S_host_XML);
-  surfxml_add_callback(ETag_surfxml_host_cb_list, &parse_E_host_XML);
   sg_platf_router_add_cb(parse_S_router);
 
   surfxml_add_callback(STag_surfxml_route_cb_list,
@@ -937,8 +910,7 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_
   surfxml_add_callback(STag_surfxml_peer_cb_list,
                          &routing_parse_Speer);
 
-  surfxml_add_callback(ETag_surfxml_platform_cb_list,
-                                                 &clean_routing_after_parse);
+  sg_platf_postparse_add_cb(clean_routing_after_parse);
 
 #ifdef HAVE_TRACING
   instr_routing_define_callbacks();
@@ -947,10 +919,10 @@ void routing_model_create(size_t size_of_links, void *loopback, double_f_cpvoid_
 
 void surf_parse_add_callback_config(void)
 {
-       surfxml_add_callback(STag_surfxml_prop_cb_list, &parse_properties_XML);
-       surfxml_add_callback(STag_surfxml_random_cb_list, &routing_parse_Srandom);
+  surfxml_add_callback(STag_surfxml_random_cb_list, &routing_parse_Srandom);
 }
 
+
 /* ************************************************** */
 /* ********** PATERN FOR NEW ROUTING **************** */
 
@@ -1523,7 +1495,6 @@ void routing_parse_Scluster(void)
                }
                surf_parse_link();
 
-               ETag_surfxml_host();
                ETag_surfxml_link();
 
                surf_parsing_link_up_down_t info = xbt_new0(s_surf_parsing_link_up_down_t, 1);
@@ -1618,7 +1589,6 @@ void routing_parse_Scluster(void)
                }
                surf_parse_link();
 
-               ETag_surfxml_host();
                ETag_surfxml_link();
 
                surf_parsing_link_up_down_t info = xbt_new0(s_surf_parsing_link_up_down_t, 1);
@@ -1871,121 +1841,109 @@ static void routing_parse_Speer(void)
 
 static void routing_parse_Srandom(void)
 {
-         double mean, std, min, max, seed;
-         char *random_id = A_surfxml_random_id;
-         char *random_radical = A_surfxml_random_radical;
-         char *rd_name = NULL;
-         char *rd_value;
-         mean = surf_parse_get_double(A_surfxml_random_mean);
-         std  = surf_parse_get_double(A_surfxml_random_std_deviation);
-         min  = surf_parse_get_double(A_surfxml_random_min);
-         max  = surf_parse_get_double(A_surfxml_random_max);
-         seed = surf_parse_get_double(A_surfxml_random_seed);
-
-         double res = 0;
-         int i = 0;
-         random_data_t random = xbt_new0(s_random_data_t, 1);
+    double mean, std, min, max, seed;
+    char *random_id = A_surfxml_random_id;
+    char *random_radical = A_surfxml_random_radical;
+    char *rd_name = NULL;
+    char *rd_value;
+    mean = surf_parse_get_double(A_surfxml_random_mean);
+    std  = surf_parse_get_double(A_surfxml_random_std_deviation);
+    min  = surf_parse_get_double(A_surfxml_random_min);
+    max  = surf_parse_get_double(A_surfxml_random_max);
+    seed = surf_parse_get_double(A_surfxml_random_seed);
+
+    double res = 0;
+    int i = 0;
+    random_data_t random = xbt_new0(s_random_data_t, 1);
           char *tmpbuf;
 
-         xbt_dynar_t radical_elements;
-         unsigned int iter;
-         char *groups;
-         int start, end;
-         xbt_dynar_t radical_ends;
-
-         random->generator = A_surfxml_random_generator;
-         random->seed = seed;
-         random->min = min;
-         random->max = max;
-
-         /* Check user stupidities */
-         if (max < min)
-           THROWF(arg_error, 0, "random->max < random->min (%f < %f)", max, min);
-         if (mean < min)
-           THROWF(arg_error, 0, "random->mean < random->min (%f < %f)", mean,
-                  min);
-         if (mean > max)
-           THROWF(arg_error, 0, "random->mean > random->max (%f > %f)", mean,
-                  max);
-
-         /* normalize the mean and standard deviation before storing */
-         random->mean = (mean - min) / (max - min);
-         random->std = std / (max - min);
-
-         if (random->mean * (1 - random->mean) < random->std * random->std)
-           THROWF(arg_error, 0, "Invalid mean and standard deviation (%f and %f)",
-                  random->mean, random->std);
-
-         XBT_DEBUG("id = '%s' min = '%f' max = '%f' mean = '%f' std_deviatinon = '%f' generator = '%d' seed = '%ld' radical = '%s'",
-         random_id,
-         random->min,
-         random->max,
-         random->mean,
-         random->std,
-         random->generator,
-         random->seed,
-         random_radical);
-
-         if(xbt_dict_size(random_value)==0)
-                 random_value = xbt_dict_new();
-
-         if(!strcmp(random_radical,""))
-         {
-                 res = random_generate(random);
-                 rd_value = bprintf("%f",res);
-                 xbt_dict_set(random_value, random_id, rd_value, free);
-         }
-         else
-         {
-                 radical_elements = xbt_str_split(random_radical, ",");
-                 xbt_dynar_foreach(radical_elements, iter, groups) {
-                       radical_ends = xbt_str_split(groups, "-");
-                       switch (xbt_dynar_length(radical_ends)) {
-                       case 1:
-                                         xbt_assert(!xbt_dict_get_or_null(random_value,random_id),"Custom Random '%s' already exists !",random_id);
-                                         res = random_generate(random);
+    xbt_dynar_t radical_elements;
+    unsigned int iter;
+    char *groups;
+    int start, end;
+    xbt_dynar_t radical_ends;
+
+    random->generator = A_surfxml_random_generator;
+    random->seed = seed;
+    random->min = min;
+    random->max = max;
+
+    /* Check user stupidities */
+    if (max < min)
+      THROWF(arg_error, 0, "random->max < random->min (%f < %f)", max, min);
+    if (mean < min)
+      THROWF(arg_error, 0, "random->mean < random->min (%f < %f)", mean,
+       min);
+    if (mean > max)
+      THROWF(arg_error, 0, "random->mean > random->max (%f > %f)", mean,
+       max);
+
+    /* normalize the mean and standard deviation before storing */
+    random->mean = (mean - min) / (max - min);
+    random->std = std / (max - min);
+
+    if (random->mean * (1 - random->mean) < random->std * random->std)
+      THROWF(arg_error, 0, "Invalid mean and standard deviation (%f and %f)",
+       random->mean, random->std);
+
+    XBT_DEBUG("id = '%s' min = '%f' max = '%f' mean = '%f' std_deviatinon = '%f' generator = '%d' seed = '%ld' radical = '%s'",
+    random_id,
+    random->min,
+    random->max,
+    random->mean,
+    random->std,
+    random->generator,
+    random->seed,
+    random_radical);
+
+    if(xbt_dict_size(random_value)==0)
+      random_value = xbt_dict_new();
+
+    if(!strcmp(random_radical,""))
+    {
+      res = random_generate(random);
+      rd_value = bprintf("%f",res);
+      xbt_dict_set(random_value, random_id, rd_value, free);
+    }
+    else
+    {
+      radical_elements = xbt_str_split(random_radical, ",");
+      xbt_dynar_foreach(radical_elements, iter, groups) {
+      radical_ends = xbt_str_split(groups, "-");
+      switch (xbt_dynar_length(radical_ends)) {
+      case 1:
+            xbt_assert(!xbt_dict_get_or_null(random_value,random_id),"Custom Random '%s' already exists !",random_id);
+            res = random_generate(random);
                                           tmpbuf = bprintf("%s%d",random_id,atoi(xbt_dynar_getfirst_as(radical_ends,char *)));
                                           xbt_dict_set(random_value, tmpbuf, bprintf("%f",res), free);
                                           xbt_free(tmpbuf);
-                                         break;
-
-                       case 2:
-                             start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char *));
-                             end = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 1, char *));
-                                         for (i = start; i <= end; i++) {
-                                                 xbt_assert(!xbt_dict_get_or_null(random_value,random_id),"Custom Random '%s' already exists !",bprintf("%s%d",random_id,i));
-                                                 res = random_generate(random);
+            break;
+
+      case 2:
+            start = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char *));
+            end = surf_parse_get_int(xbt_dynar_get_as(radical_ends, 1, char *));
+            for (i = start; i <= end; i++) {
+              xbt_assert(!xbt_dict_get_or_null(random_value,random_id),"Custom Random '%s' already exists !",bprintf("%s%d",random_id,i));
+              res = random_generate(random);
                           tmpbuf = bprintf("%s%d",random_id,i);
-                                                 xbt_dict_set(random_value, tmpbuf, bprintf("%f",res), free);
+              xbt_dict_set(random_value, tmpbuf, bprintf("%f",res), free);
                           xbt_free(tmpbuf);
-                                         }
-                                         break;
-                       default:
-                               XBT_INFO("Malformed radical");
-                               break;
-                       }
-                       res = random_generate(random);
-                       rd_name  = bprintf("%s_router",random_id);
-                       rd_value = bprintf("%f",res);
-                       xbt_dict_set(random_value, rd_name, rd_value, free);
-
-                       xbt_dynar_free(&radical_ends);
-                 }
-                 free(rd_name);
-                 xbt_dynar_free(&radical_elements);
-         }
-}
-
-static void routing_parse_Erandom(void)
-{
-       /*xbt_dict_cursor_t cursor = NULL;
-       char *key;
-       char *elem;
+            }
+            break;
+      default:
+        XBT_INFO("Malformed radical");
+        break;
+      }
+      res = random_generate(random);
+      rd_name  = bprintf("%s_router",random_id);
+      rd_value = bprintf("%f",res);
+      xbt_dict_set(random_value, rd_name, rd_value, free);
 
-       xbt_dict_foreach(random_value, cursor, key, elem) {
-         XBT_DEBUG("%s = %s",key,elem);
-       }
-*/
+      xbt_dynar_free(&radical_ends);
+      }
+      free(rd_name);
+      xbt_dynar_free(&radical_elements);
+    }
 }
 
 /*
@@ -1999,7 +1957,7 @@ static void routing_parse_Erandom(void)
 
 void routing_add_host(const char *host_id)
 {
-  parse_S_host_lua((char *) host_id, (char*)""); // FIXME propagate coordinate system to lua
+  parse_S_host(host_id, ""); // FIXME propagate coordinate system to lua
 }
 
 /*