bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/5] Use max_int instead of max because MSVC defines this sym


From: Akim Demaille
Subject: Re: [PATCH 2/5] Use max_int instead of max because MSVC defines this symbol already
Date: Sat, 1 Aug 2020 20:02:06 +0200


> Le 30 juil. 2020 à 20:53, anonymous.maarten@gmail.com a écrit :
> 
> From: Anonymous Maarten <anonymous.maarten@gmail.com>

Thanks for the patch!  In the future, please try to match our style for commit 
messages.

I'm installing this instead of your patch.

Cheers!

commit f2e40f736e0ac95de1e80b2322bd32170d1ece5e
Author: Akim Demaille <akim.demaille@gmail.com>
Date:   Sat Aug 1 19:56:34 2020 +0200

    portability: beware of max () with MSVC
    
    Reported by Maarten De Braekeleer.
    https://lists.gnu.org/r/bison-patches/2020-07/msg00080.html
    
    We don't want to use gnulib's min and max macros, since we use
    function calls in min/max arguments.
    
    * src/location.c (max_int, min_int): Move to...
    * src/system.h: here.
    * src/counterexample.c, src/derivation.c: Use max_int instead of max.

diff --git a/src/counterexample.c b/src/counterexample.c
index c0dc796c..23436194 100644
--- a/src/counterexample.c
+++ b/src/counterexample.c
@@ -113,11 +113,6 @@ free_counterexample (counterexample *cex)
   free (cex);
 }
 
-static int max (int a, int b)
-{
-  return a < b ? b : a;
-}
-
 static void
 counterexample_print (const counterexample *cex, FILE *out, const char *prefix)
 {
@@ -131,8 +126,8 @@ counterexample_print (const counterexample *cex, FILE *out, 
const char *prefix)
   const char *deriv2_label
     = cex->shift_reduce ? _("Reduce derivation") : _("Second reduce 
derivation");
   const int width =
-    max (max (mbswidth (example1_label, 0), mbswidth (example2_label, 0)),
-         max (mbswidth (deriv1_label, 0),   mbswidth (deriv2_label, 0)));
+    max_int (max_int (mbswidth (example1_label, 0), mbswidth (example2_label, 
0)),
+             max_int (mbswidth (deriv1_label, 0),   mbswidth (deriv2_label, 
0)));
   if (flat)
     fprintf (out, "  %s%s%*s ", prefix,
              example1_label, width - mbswidth (example1_label, 0), "");
diff --git a/src/derivation.c b/src/derivation.c
index 030cc17b..382dc458 100644
--- a/src/derivation.c
+++ b/src/derivation.c
@@ -140,12 +140,6 @@ derivation_size (const derivation *deriv)
 }
 
 
-static int
-max (int a, int b)
-{
-  return a < b ? b : a;
-}
-
 // Longest distance from root to leaf.
 static int
 derivation_depth (const derivation *deriv)
@@ -159,7 +153,7 @@ derivation_depth (const derivation *deriv)
       for (gl_list_iterator_t it = gl_list_iterator (deriv->children);
            derivation_list_next (&it, &child);
            )
-        res = max (res, derivation_depth (child));
+        res = max_int (res, derivation_depth (child));
       return res + 1;
     }
   else
@@ -260,7 +254,7 @@ derivation_width (const derivation *deriv)
           // No separator at the beginning.
           children_width -= derivation_separator_width;
         }
-      return max (self_width, children_width);
+      return max_int (self_width, children_width);
     }
   else if (deriv == &d_dot)
     {
diff --git a/src/location.c b/src/location.c
index 5718144f..1c0aa1fd 100644
--- a/src/location.c
+++ b/src/location.c
@@ -40,18 +40,6 @@
 
 location const empty_loc = EMPTY_LOCATION_INIT;
 
-static int
-min_int (int a, int b)
-{
-  return a < b ? a : b;
-}
-
-static int
-max_int (int a, int b)
-{
-  return a >= b ? a : b;
-}
-
 /* The terminal width.  Not less than 40.  */
 static int
 columns (void)
diff --git a/src/system.h b/src/system.h
index eac89c27..fb65d573 100644
--- a/src/system.h
+++ b/src/system.h
@@ -131,6 +131,22 @@ typedef size_t uintptr_t;
 # include <stdbool.h>
 
 
+/*-----------.
+| Integers.  |
+`-----------*/
+
+static inline int
+min_int (int a, int b)
+{
+  return a < b ? a : b;
+}
+
+static inline int
+max_int (int a, int b)
+{
+  return a >= b ? a : b;
+}
+
 
 /*-------------.
 | Assertions.  |




reply via email to

[Prev in Thread] Current Thread [Next in Thread]