From: Arnaud Giersch Date: Fri, 25 Jan 2019 08:39:47 +0000 (+0100) Subject: [sonar] Remove variadic functions. X-Git-Tag: v3_22~482 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0fca8a1497fff4bb22f715f851ddbea4073ad3c2 [sonar] Remove variadic functions. --- diff --git a/include/xbt/automaton.h b/include/xbt/automaton.h index eb7b7c695d..8a78ff039a 100644 --- a/include/xbt/automaton.h +++ b/include/xbt/automaton.h @@ -61,7 +61,13 @@ XBT_PUBLIC xbt_automaton_state_t xbt_automaton_state_new(xbt_automaton_t a, int XBT_PUBLIC xbt_automaton_transition_t xbt_automaton_transition_new(xbt_automaton_t a, xbt_automaton_state_t src, xbt_automaton_state_t dst, xbt_automaton_exp_label_t label); -XBT_PUBLIC xbt_automaton_exp_label_t xbt_automaton_exp_label_new(int type, ...); +XBT_PUBLIC xbt_automaton_exp_label_t xbt_automaton_exp_label_new_or(xbt_automaton_exp_label_t left, + xbt_automaton_exp_label_t right); +XBT_PUBLIC xbt_automaton_exp_label_t xbt_automaton_exp_label_new_and(xbt_automaton_exp_label_t left, + xbt_automaton_exp_label_t right); +XBT_PUBLIC xbt_automaton_exp_label_t xbt_automaton_exp_label_new_not(xbt_automaton_exp_label_t exp_not); +XBT_PUBLIC xbt_automaton_exp_label_t xbt_automaton_exp_label_new_predicat(char* p); +XBT_PUBLIC xbt_automaton_exp_label_t xbt_automaton_exp_label_new_one(void); XBT_PUBLIC xbt_dynar_t xbt_automaton_get_states(xbt_automaton_t a); XBT_PUBLIC xbt_dynar_t xbt_automaton_get_transitions(xbt_automaton_t a); XBT_PUBLIC xbt_automaton_transition_t xbt_automaton_get_transition(xbt_automaton_t a, xbt_automaton_state_t src, diff --git a/src/xbt/automaton/automaton.c b/src/xbt/automaton/automaton.c index 35af3be3e0..fd3e111e86 100644 --- a/src/xbt/automaton/automaton.c +++ b/src/xbt/automaton/automaton.c @@ -56,45 +56,46 @@ xbt_automaton_transition_t xbt_automaton_transition_new(xbt_automaton_t a, xbt_a return transition; } -xbt_automaton_exp_label_t xbt_automaton_exp_label_new(int type, ...){ +xbt_automaton_exp_label_t xbt_automaton_exp_label_new_or(xbt_automaton_exp_label_t left, + xbt_automaton_exp_label_t right) +{ xbt_automaton_exp_label_t label = xbt_new0(struct xbt_automaton_exp_label, 1); - label->type = type; - xbt_automaton_exp_label_t left; - xbt_automaton_exp_label_t right; - xbt_automaton_exp_label_t exp_not; - char *p; - va_list ap; - va_start(ap, type); - switch(type){ - case 0 : - left = va_arg(ap, xbt_automaton_exp_label_t); - right = va_arg(ap, xbt_automaton_exp_label_t); - label->u.or_and.left_exp = left; - label->u.or_and.right_exp = right; - break; - case 1 : - left = va_arg(ap, xbt_automaton_exp_label_t); - right = va_arg(ap, xbt_automaton_exp_label_t); - label->u.or_and.left_exp = left; - label->u.or_and.right_exp = right; - break; - case 2 : - exp_not = va_arg(ap, xbt_automaton_exp_label_t); - label->u.exp_not = exp_not; - break; - case 3 : - p = va_arg(ap, char*); - label->u.predicat = xbt_strdup(p); - break; - case 4: - break; - default: - XBT_DEBUG("Invalid type: %d", type); - xbt_free(label); - label = NULL; - break; - } - va_end(ap); + label->type = AUT_OR; + label->u.or_and.left_exp = left; + label->u.or_and.right_exp = right; + return label; +} + +xbt_automaton_exp_label_t xbt_automaton_exp_label_new_and(xbt_automaton_exp_label_t left, + xbt_automaton_exp_label_t right) +{ + xbt_automaton_exp_label_t label = xbt_new0(struct xbt_automaton_exp_label, 1); + label->type = AUT_AND; + label->u.or_and.left_exp = left; + label->u.or_and.right_exp = right; + return label; +} + +xbt_automaton_exp_label_t xbt_automaton_exp_label_new_not(xbt_automaton_exp_label_t exp_not) +{ + xbt_automaton_exp_label_t label = xbt_new0(struct xbt_automaton_exp_label, 1); + label->type = AUT_NOT; + label->u.exp_not = exp_not; + return label; +} + +xbt_automaton_exp_label_t xbt_automaton_exp_label_new_predicat(char* p) +{ + xbt_automaton_exp_label_t label = xbt_new0(struct xbt_automaton_exp_label, 1); + label->type = AUT_PREDICAT; + label->u.predicat = xbt_strdup(p); + return label; +} + +xbt_automaton_exp_label_t xbt_automaton_exp_label_new_one(void) +{ + xbt_automaton_exp_label_t label = xbt_new0(struct xbt_automaton_exp_label, 1); + label->type = AUT_ONE; return label; } diff --git a/src/xbt/automaton/automatonparse_promela.c b/src/xbt/automaton/automatonparse_promela.c index 0c1b57ea34..e43df858ed 100644 --- a/src/xbt/automaton/automatonparse_promela.c +++ b/src/xbt/automaton/automatonparse_promela.c @@ -61,45 +61,6 @@ static void new_transition(char* id, xbt_automaton_exp_label_t label) } -static xbt_automaton_exp_label_t new_label(int type, ...){ - xbt_automaton_exp_label_t label = NULL; - xbt_automaton_exp_label_t left; - xbt_automaton_exp_label_t right; - xbt_automaton_exp_label_t exp_not; - char *p; - - va_list ap; - va_start(ap,type); - switch(type){ - case 0 : - left = va_arg(ap, xbt_automaton_exp_label_t); - right = va_arg(ap, xbt_automaton_exp_label_t); - label = xbt_automaton_exp_label_new(type, left, right); - break; - case 1 : - left = va_arg(ap, xbt_automaton_exp_label_t); - right = va_arg(ap, xbt_automaton_exp_label_t); - label = xbt_automaton_exp_label_new(type, left, right); - break; - case 2 : - exp_not = va_arg(ap, xbt_automaton_exp_label_t); - label = xbt_automaton_exp_label_new(type, exp_not); - break; - case 3 : - p = va_arg(ap, char*); - label = xbt_automaton_exp_label_new(type, p); - break; - case 4 : - label = xbt_automaton_exp_label_new(type); - break; - default: - XBT_DEBUG("Invalid type: %d", type); - break; - } - va_end(ap); - return label; -} - #include "parserPromela.tab.cacc" void xbt_automaton_load(xbt_automaton_t a, const char *file) diff --git a/src/xbt/automaton/parserPromela.tab.cacc b/src/xbt/automaton/parserPromela.tab.cacc index f721f979ce..65c9e06ec0 100644 --- a/src/xbt/automaton/parserPromela.tab.cacc +++ b/src/xbt/automaton/parserPromela.tab.cacc @@ -1275,31 +1275,31 @@ yyreduce: case 9: #line 69 "parserPromela.yacc" /* yacc.c:1646 */ - { (yyval.label) = new_label(0, (yyvsp[-2].label), (yyvsp[0].label)); } + { (yyval.label) = xbt_automaton_exp_label_new_or((yyvsp[-2].label), (yyvsp[0].label)); } #line 1280 "parserPromela.tab.cacc" /* yacc.c:1646 */ break; case 10: #line 70 "parserPromela.yacc" /* yacc.c:1646 */ - { (yyval.label) = new_label(1, (yyvsp[-2].label), (yyvsp[0].label)); } + { (yyval.label) = xbt_automaton_exp_label_new_and((yyvsp[-2].label), (yyvsp[0].label)); } #line 1286 "parserPromela.tab.cacc" /* yacc.c:1646 */ break; case 11: #line 71 "parserPromela.yacc" /* yacc.c:1646 */ - { (yyval.label) = new_label(2, (yyvsp[0].label)); } + { (yyval.label) = xbt_automaton_exp_label_new_not((yyvsp[0].label)); } #line 1292 "parserPromela.tab.cacc" /* yacc.c:1646 */ break; case 12: #line 72 "parserPromela.yacc" /* yacc.c:1646 */ - { (yyval.label) = new_label(4); } + { (yyval.label) = xbt_automaton_exp_label_new_one(); } #line 1298 "parserPromela.tab.cacc" /* yacc.c:1646 */ break; case 13: #line 73 "parserPromela.yacc" /* yacc.c:1646 */ - { (yyval.label) = new_label(3, (yyvsp[0].string)); } + { (yyval.label) = xbt_automaton_exp_label_new_predicat((yyvsp[0].string)); } #line 1304 "parserPromela.tab.cacc" /* yacc.c:1646 */ break; diff --git a/src/xbt/automaton/parserPromela.yacc b/src/xbt/automaton/parserPromela.yacc index 4dc3c6913f..699b732d51 100644 --- a/src/xbt/automaton/parserPromela.yacc +++ b/src/xbt/automaton/parserPromela.yacc @@ -66,11 +66,11 @@ option : ; exp : LEFT_PAR exp RIGHT_PAR { $$ = $2; } - | exp OR exp { $$ = new_label(0, $1, $3); } - | exp AND exp { $$ = new_label(1, $1, $3); } - | NOT exp { $$ = new_label(2, $2); } - | CASE_TRUE { $$ = new_label(4); } - | ID { $$ = new_label(3, $1); } + | exp OR exp { $$ = xbt_automaton_exp_label_new_or($1, $3); } + | exp AND exp { $$ = xbt_automaton_exp_label_new_and($1, $3); } + | NOT exp { $$ = xbt_automaton_exp_label_new_not($2); } + | CASE_TRUE { $$ = xbt_automaton_exp_label_new_one(); } + | ID { $$ = xbt_automaton_exp_label_new_predicat($1); } ; %%