From: Arnaud Giersch Date: Tue, 21 Feb 2012 15:50:01 +0000 (+0100) Subject: Fix type name and parsing for random generator. X-Git-Tag: exp_20120308~34^2~5 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/a7430c3a3c007a1746ac3d8ff320058a66e70b64?hp=654cf85f8a467bd8f883956476237b670292bb3b Fix type name and parsing for random generator. --- diff --git a/src/include/surf/random_mgr.h b/src/include/surf/random_mgr.h index 55ff757741..3580ab4738 100644 --- a/src/include/surf/random_mgr.h +++ b/src/include/surf/random_mgr.h @@ -14,19 +14,20 @@ SG_BEGIN_DECL() -typedef enum { NONE, DRAND48, RAND, RNGSTREAM } Generator; +typedef enum { NONE, DRAND48, RAND, RNGSTREAM } e_random_generator_t; typedef struct random_data_desc { long int seed; double max, min; double mean, std; /* note: mean and standard deviation are normalized */ - Generator generator; + e_random_generator_t generator; } s_random_data_t, *random_data_t; XBT_PUBLIC_DATA(xbt_dict_t) random_data_list; XBT_PUBLIC(double) random_generate(random_data_t random); -XBT_PUBLIC(random_data_t) random_new(Generator generator, long int seed, +XBT_PUBLIC(random_data_t) random_new(e_random_generator_t generator, + long int seed, double min, double max, double mean, double stdDeviation); diff --git a/src/surf/random_mgr.c b/src/surf/random_mgr.c index 6fb652d53f..8bad98fa8a 100644 --- a/src/surf/random_mgr.c +++ b/src/surf/random_mgr.c @@ -191,7 +191,7 @@ int _rand_r(unsigned int *pseed) #endif -static double custom_random(Generator generator, long int *seed) +static double custom_random(e_random_generator_t generator, long int *seed) { switch (generator) { @@ -252,7 +252,7 @@ double random_generate(random_data_t random) return X * (random->max - random->min) + random->min; } -random_data_t random_new(Generator generator, long int seed, +random_data_t random_new(e_random_generator_t generator, long int seed, double min, double max, double mean, double std) { random_data_t random = xbt_new0(s_random_data_t, 1); diff --git a/src/surf/surf_routing.c b/src/surf/surf_routing.c index 1d11084198..3acd4b11d9 100644 --- a/src/surf/surf_routing.c +++ b/src/surf/surf_routing.c @@ -1012,7 +1012,24 @@ static void routing_parse_Srandom(void) int start, end; xbt_dynar_t radical_ends; - random->generator = A_surfxml_random_generator; + switch (A_surfxml_random_generator) { + case AU_surfxml_random_generator: + case A_surfxml_random_generator_NONE: + random->generator = NONE; + break; + case A_surfxml_random_generator_DRAND48: + random->generator = DRAND48; + break; + case A_surfxml_random_generator_RAND: + random->generator = RAND; + break; + case A_surfxml_random_generator_RNGSTREAM: + random->generator = RNGSTREAM; + break; + default: + surf_parse_error("Invalid random generator"); + break; + } random->seed = seed; random->min = min; random->max = max; @@ -1036,7 +1053,7 @@ static void routing_parse_Srandom(void) 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); + (int)random->generator, random->seed, random_radical); if (!random_value) random_value = xbt_dict_new_homogeneous(free); diff --git a/src/surf/surfxml_parse.c b/src/surf/surfxml_parse.c index a9fcb6ce9d..aee71a9f7b 100644 --- a/src/surf/surfxml_parse.c +++ b/src/surf/surfxml_parse.c @@ -638,8 +638,8 @@ double get_cpu_power(const char *power) return power_scale; } -double random_min, random_max, random_mean, random_std_deviation, - random_generator; +double random_min, random_max, random_mean, random_std_deviation; +e_random_generator_t random_generator; char *random_id; static void init_randomness(void) @@ -649,7 +649,24 @@ static void init_randomness(void) random_max = surf_parse_get_double(A_surfxml_random_max); random_mean = surf_parse_get_double(A_surfxml_random_mean); random_std_deviation = surf_parse_get_double(A_surfxml_random_std_deviation); - random_generator = A_surfxml_random_generator; + switch (A_surfxml_random_generator) { + case AU_surfxml_random_generator: + case A_surfxml_random_generator_NONE: + random_generator = NONE; + break; + case A_surfxml_random_generator_DRAND48: + random_generator = DRAND48; + break; + case A_surfxml_random_generator_RAND: + random_generator = RAND; + break; + case A_surfxml_random_generator_RNGSTREAM: + random_generator = RNGSTREAM; + break; + default: + surf_parse_error("Invalid random generator"); + break; + } } static void add_randomness(void)