XBT_PUBLIC(void) surf_parse_init_callbacks(void);
XBT_PUBLIC(void) surf_parse_reset_callbacks(void);
XBT_PUBLIC(void) surf_parse_free_callbacks(void);
-XBT_PUBLIC(void) surf_parse_get_double(double *value, const char *string);
-XBT_PUBLIC(void) surf_parse_get_int(int *value, const char *string);
+XBT_PUBLIC(double) surf_parse_get_double(const char *string);
+XBT_PUBLIC(int) surf_parse_get_int(const char *string);
XBT_PUBLIC(void) surf_parse_add_callback_config(void);
XBT_PUBLIC(void) surf_parse_models_setup(void);
/* Prototypes of the functions offered by flex */
XBT_PUBLIC(void) xbt_graph_parse_open(const char *file);
XBT_PUBLIC(void) xbt_graph_parse_close(void);
XBT_PUBLIC(void) xbt_graph_parse_reset_parser(void);
-XBT_PUBLIC(void) xbt_graph_parse_get_double(double *value,
- const char *string);
+XBT_PUBLIC(double) xbt_graph_parse_get_double(const char *string);
/* Prototypes of the functions offered by flex */
XBT_PUBLIC(int) xbt_graph_parse_lex(void);
parse_argc++;
parse_argv = xbt_realloc(parse_argv, (parse_argc) * sizeof(char *));
parse_argv[(parse_argc) - 1] = xbt_strdup(A_surfxml_process_function);
- surf_parse_get_double(&start_time, A_surfxml_process_start_time);
- surf_parse_get_double(&kill_time, A_surfxml_process_kill_time);
+ start_time= surf_parse_get_double(A_surfxml_process_start_time);
+ kill_time = surf_parse_get_double(A_surfxml_process_kill_time);
}
static void parse_argument(void)
radical_ends = xbt_str_split(groups, "-");
switch (xbt_dynar_length(radical_ends)) {
case 1:
- surf_parse_get_int(&start, xbt_dynar_get_as(radical_ends, 0, char *));
+ start=surf_parse_get_int(xbt_dynar_get_as(radical_ends, 0, char *));
host_id = bprintf("%s%d%s", struct_cluster->V_cluster_prefix, start, struct_cluster->V_cluster_suffix);
link_id = bprintf("%s_link_%d", struct_cluster->V_cluster_id, start);
case 2:
- surf_parse_get_int(&start,
- xbt_dynar_get_as(radical_ends, 0, char *));
- surf_parse_get_int(&end, xbt_dynar_get_as(radical_ends, 1, char *));
+ 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++) {
host_id = bprintf("%s%d%s", struct_cluster->V_cluster_prefix, i, struct_cluster->V_cluster_suffix);
link_id = bprintf("%s_link_%d", struct_cluster->V_cluster_id, i);
char *random_radical = A_surfxml_random_radical;
char *rd_name = NULL;
char *rd_value;
- surf_parse_get_double(&mean,A_surfxml_random_mean);
- surf_parse_get_double(&std,A_surfxml_random_std_deviation);
- surf_parse_get_double(&min,A_surfxml_random_min);
- surf_parse_get_double(&max,A_surfxml_random_max);
- surf_parse_get_double(&seed,A_surfxml_random_seed);
+ 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;
xbt_free(tmpbuf);
break;
- case 2: surf_parse_get_int(&start,
- xbt_dynar_get_as(radical_ends, 0, char *));
- surf_parse_get_int(&end, xbt_dynar_get_as(radical_ends, 1, char *));
+ 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);
xbt_die("Parse error on line %d: %s\n", surf_parse_lineno, msg);
}
-void surf_parse_get_double(double *value, const char *string) {
- int ret = sscanf(string, "%lg", value);
+double surf_parse_get_double(const char *string) {
+ double res;
+ int ret = sscanf(string, "%lg", &res);
if (ret != 1)
surf_parse_error(bprintf("%s is not a double", string));
+ return res;
}
-void surf_parse_get_int(int *value, const char *string) {
- int ret = sscanf(string, "%d", value);
+int surf_parse_get_int(const char *string) {
+ int res;
+ int ret = sscanf(string, "%d", &res);
if (ret != 1)
surf_parse_error(bprintf("%s is not an integer", string));
+ return res;
}
void STag_surfxml_platform(void)
{
- double version;
- surf_parse_get_double(&version, A_surfxml_platform_version);
+ double version = surf_parse_get_double(A_surfxml_platform_version);
xbt_assert((version >= 1.0), "******* BIG FAT WARNING *********\n "
"You're using an ancient XML file.\n"
host.V_host_id = xbt_strdup(A_surfxml_host_id);
host.V_host_power_peak = get_cpu_power(A_surfxml_host_power);
- surf_parse_get_double(&(host.V_host_power_scale), A_surfxml_host_availability);
- surf_parse_get_int(&(host.V_host_core),A_surfxml_host_core);
+ host.V_host_power_scale = surf_parse_get_double( A_surfxml_host_availability);
+ host.V_host_core = surf_parse_get_int(A_surfxml_host_core);
host.V_host_power_trace = tmgr_trace_new(A_surfxml_host_availability_file);
host.V_host_state_trace = tmgr_trace_new(A_surfxml_host_state_file);
xbt_assert((A_surfxml_host_state == A_surfxml_host_state_ON) ||
struct_cluster->V_cluster_prefix = xbt_strdup(A_surfxml_cluster_prefix);
struct_cluster->V_cluster_suffix = xbt_strdup(A_surfxml_cluster_suffix);
struct_cluster->V_cluster_radical = xbt_strdup(A_surfxml_cluster_radical);
- surf_parse_get_double(&struct_cluster->S_cluster_power,A_surfxml_cluster_power);
- surf_parse_get_int(&struct_cluster->S_cluster_core,A_surfxml_cluster_core);
- surf_parse_get_double(&struct_cluster->S_cluster_bw,A_surfxml_cluster_bw);
- surf_parse_get_double(&struct_cluster->S_cluster_lat,A_surfxml_cluster_lat);
+ struct_cluster->S_cluster_power= surf_parse_get_double(A_surfxml_cluster_power);
+ struct_cluster->S_cluster_core = surf_parse_get_int(A_surfxml_cluster_core);
+ struct_cluster->S_cluster_bw = surf_parse_get_double(A_surfxml_cluster_bw);
+ struct_cluster->S_cluster_lat = surf_parse_get_double(A_surfxml_cluster_lat);
if(strcmp(A_surfxml_cluster_bb_bw,""))
- surf_parse_get_double(&struct_cluster->S_cluster_bb_bw,A_surfxml_cluster_bb_bw);
+ struct_cluster->S_cluster_bb_bw = surf_parse_get_double(A_surfxml_cluster_bb_bw);
if(strcmp(A_surfxml_cluster_bb_lat,""))
- surf_parse_get_double(&struct_cluster->S_cluster_bb_lat,A_surfxml_cluster_bb_lat);
+ struct_cluster->S_cluster_bb_lat = surf_parse_get_double(A_surfxml_cluster_bb_lat);
if(!strcmp(A_surfxml_cluster_router_id,""))
struct_cluster->S_cluster_router_id = bprintf("%s%s_router%s",
struct_cluster->V_cluster_prefix,
void STag_surfxml_link(void){
struct_lnk = xbt_new0(s_surf_parsing_link_arg_t, 1);
struct_lnk->V_link_id = xbt_strdup(A_surfxml_link_id);
- surf_parse_get_double(&(struct_lnk->V_link_bandwidth),A_surfxml_link_bandwidth);
+ struct_lnk->V_link_bandwidth = surf_parse_get_double(A_surfxml_link_bandwidth);
struct_lnk->V_link_bandwidth_file = tmgr_trace_new(A_surfxml_link_bandwidth_file);
- surf_parse_get_double(&(struct_lnk->V_link_latency),A_surfxml_link_latency);
+ struct_lnk->V_link_latency = surf_parse_get_double(A_surfxml_link_latency);
struct_lnk->V_link_latency_file = tmgr_trace_new(A_surfxml_link_latency_file);
xbt_assert((A_surfxml_link_state == A_surfxml_link_state_ON) ||
(A_surfxml_link_state == A_surfxml_link_state_OFF), "Invalid state");
power_scale = random_generate(random);
}
} else {
- surf_parse_get_double(&power_scale, power);
+ power_scale = surf_parse_get_double(power);
}
return power_scale;
}
static void init_randomness(void)
{
random_id = A_surfxml_random_id;
- surf_parse_get_double(&random_min, A_surfxml_random_min);
- surf_parse_get_double(&random_max, A_surfxml_random_max);
- surf_parse_get_double(&random_mean, A_surfxml_random_mean);
- surf_parse_get_double(&random_std_deviation,
- A_surfxml_random_std_deviation);
+ random_min = surf_parse_get_double(A_surfxml_random_min);
+ 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;
}
{
trace_id = xbt_strdup(A_surfxml_trace_id);
trace_file = xbt_strdup(A_surfxml_trace_file);
- surf_parse_get_double(&trace_periodicity, A_surfxml_trace_periodicity);
+ trace_periodicity = surf_parse_get_double(A_surfxml_trace_periodicity);
}
static void parse_Etag_trace(void)
if (__parse_node_label_and_data)
node->data = __parse_node_label_and_data(node, A_graphxml_node_label,
A_graphxml_node_data);
- xbt_graph_parse_get_double(&(node->position_x),
- A_graphxml_node_position_x);
- xbt_graph_parse_get_double(&(node->position_y),
- A_graphxml_node_position_y);
+ node->position_x = xbt_graph_parse_get_double(A_graphxml_node_position_x);
+ node->position_y = xbt_graph_parse_get_double(A_graphxml_node_position_y);
xbt_dict_set(parsed_nodes, A_graphxml_node_name, (void *) node, NULL);
}
edge->data = __parse_edge_label_and_data(edge, A_graphxml_edge_label,
A_graphxml_edge_data);
- xbt_graph_parse_get_double(&(edge->length), A_graphxml_edge_length);
+ edge->length = xbt_graph_parse_get_double(A_graphxml_edge_length);
XBT_DEBUG("<edge source=\"%s\" target=\"%s\" length=\"%f\"/>",
(char *) (edge->src)->data,
int_f_void_t xbt_graph_parse = _xbt_graph_parse;
-void xbt_graph_parse_get_double(double *value, const char *string)
+double xbt_graph_parse_get_double(const char *string)
{
+ double result;
int ret = 0;
- ret = sscanf(string, "%lg", value);
+ ret = sscanf(string, "%lg", &result);
xbt_assert((ret == 1), "Parse error line %d : %s not a number",
xbt_graph_parse_lineno, string);
+ return result;
}