Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[sonar] Remove variadic functions.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 25 Jan 2019 08:39:47 +0000 (09:39 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 25 Jan 2019 11:31:34 +0000 (12:31 +0100)
include/xbt/automaton.h
src/xbt/automaton/automaton.c
src/xbt/automaton/automatonparse_promela.c
src/xbt/automaton/parserPromela.tab.cacc
src/xbt/automaton/parserPromela.yacc

index eb7b7c6..8a78ff0 100644 (file)
@@ -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,
index 35af3be..fd3e111 100644 (file)
@@ -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;
 }
 
index 0c1b57e..e43df85 100644 (file)
@@ -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)
index f721f97..65c9e06 100644 (file)
@@ -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;
 
index 4dc3c69..699b732 100644 (file)
@@ -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); }
     ;
 
 %%