]> git.saurik.com Git - bison.git/blobdiff - lib/ebitset.c
tests: portability fixes.
[bison.git] / lib / ebitset.c
index effa2c22e4a2868e0e63d761ef1697c7b472358b..9f35499acb72f574bde7ba2d7c1cc51f0b557c76 100644 (file)
@@ -1,10 +1,12 @@
 /* Functions to support expandable bitsets.
 /* Functions to support expandable bitsets.
-   Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+
+   Copyright (C) 2002-2006, 2009-2012 Free Software Foundation, Inc.
+
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
-   This program is free software; you can redistribute it and/or modify
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
+#include <config.h>
 
 #include "ebitset.h"
 
 #include "ebitset.h"
+
 #include "obstack.h"
 #include <stdlib.h>
 #include <string.h>
 #include "obstack.h"
 #include <stdlib.h>
 #include <string.h>
@@ -115,11 +114,11 @@ static ebitset_elt *ebitset_free_list;    /* Free list of bitset elements.  */
  ((BSET)->b.cindex = (EINDEX) * EBITSET_ELT_WORDS, \
   (BSET)->b.cdata = EBITSET_WORDS (EBITSET_ELTS (BSET) [EINDEX]))
 
  ((BSET)->b.cindex = (EINDEX) * EBITSET_ELT_WORDS, \
   (BSET)->b.cdata = EBITSET_WORDS (EBITSET_ELTS (BSET) [EINDEX]))
 
-
+#undef min
+#undef max
 #define min(a, b) ((a) > (b) ? (b) : (a))
 #define max(a, b) ((a) > (b) ? (a) : (b))
 
 #define min(a, b) ((a) > (b) ? (b) : (a))
 #define max(a, b) ((a) > (b) ? (a) : (b))
 
-
 static bitset_bindex
 ebitset_resize (bitset src, bitset_bindex n_bits)
 {
 static bitset_bindex
 ebitset_resize (bitset src, bitset_bindex n_bits)
 {
@@ -136,7 +135,7 @@ ebitset_resize (bitset src, bitset_bindex n_bits)
     {
       bitset_windex size;
 
     {
       bitset_windex size;
 
-      /* The bitset needs to grow.  If we already have enough memory 
+      /* The bitset needs to grow.  If we already have enough memory
         allocated, then just zero what we need.  */
       if (newsize > EBITSET_ASIZE (src))
        {
         allocated, then just zero what we need.  */
       if (newsize > EBITSET_ASIZE (src))
        {
@@ -149,13 +148,13 @@ ebitset_resize (bitset src, bitset_bindex n_bits)
            size = newsize;
          else
            size = newsize + newsize / 4;
            size = newsize;
          else
            size = newsize + newsize / 4;
-         
+
          EBITSET_ELTS (src)
            = realloc (EBITSET_ELTS (src), size * sizeof (ebitset_elt *));
          EBITSET_ASIZE (src) = size;
        }
 
          EBITSET_ELTS (src)
            = realloc (EBITSET_ELTS (src), size * sizeof (ebitset_elt *));
          EBITSET_ASIZE (src) = size;
        }
 
-      memset (EBITSET_ELTS (src) + oldsize, 0, 
+      memset (EBITSET_ELTS (src) + oldsize, 0,
              (newsize - oldsize) * sizeof (ebitset_elt *));
     }
   else
              (newsize - oldsize) * sizeof (ebitset_elt *));
     }
   else
@@ -210,15 +209,13 @@ ebitset_elt_alloc (void)
 #define OBSTACK_CHUNK_FREE free
 #endif
 
 #define OBSTACK_CHUNK_FREE free
 #endif
 
-#if !defined(__GNUC__) || (__GNUC__ < 2)
+#if ! defined __GNUC__ || __GNUC__ < 2
 #define __alignof__(type) 0
 #endif
 
          obstack_specify_allocation (&ebitset_obstack, OBSTACK_CHUNK_SIZE,
                                      __alignof__ (ebitset_elt),
 #define __alignof__(type) 0
 #endif
 
          obstack_specify_allocation (&ebitset_obstack, OBSTACK_CHUNK_SIZE,
                                      __alignof__ (ebitset_elt),
-                                     (void *(*)PARAMS ((long int)))
                                      OBSTACK_CHUNK_ALLOC,
                                      OBSTACK_CHUNK_ALLOC,
-                                     (void (*)PARAMS ((void *)))
                                      OBSTACK_CHUNK_FREE);
        }
 
                                      OBSTACK_CHUNK_FREE);
        }
 
@@ -324,6 +321,9 @@ ebitset_elt_find (bitset bset, bitset_bindex bindex,
 
   switch (mode)
     {
 
   switch (mode)
     {
+    default:
+      abort ();
+
     case EBITSET_FIND:
       return 0;
 
     case EBITSET_FIND:
       return 0;
 
@@ -339,9 +339,6 @@ ebitset_elt_find (bitset bset, bitset_bindex bindex,
 
     case EBITSET_SUBST:
       return &ebitset_zero_elts[0];
 
     case EBITSET_SUBST:
       return &ebitset_zero_elts[0];
-
-    default:
-      abort ();
     }
 }
 
     }
 }
 
@@ -840,10 +837,10 @@ ebitset_unused_clear (bitset dst)
 {
   unsigned int last_bit;
   bitset_bindex n_bits;
 {
   unsigned int last_bit;
   bitset_bindex n_bits;
-  
+
   n_bits = BITSET_NBITS_ (dst);
   last_bit = n_bits % EBITSET_ELT_BITS;
   n_bits = BITSET_NBITS_ (dst);
   last_bit = n_bits % EBITSET_ELT_BITS;
-  
+
   if (last_bit)
     {
       bitset_windex eindex;
   if (last_bit)
     {
       bitset_windex eindex;
@@ -851,20 +848,20 @@ ebitset_unused_clear (bitset dst)
       ebitset_elt *elt;
 
       elts = EBITSET_ELTS (dst);
       ebitset_elt *elt;
 
       elts = EBITSET_ELTS (dst);
-      
+
       eindex = n_bits / EBITSET_ELT_BITS;
       eindex = n_bits / EBITSET_ELT_BITS;
-      
+
       elt = elts[eindex];
       if (elt)
        {
          bitset_windex windex;
          bitset_windex woffset;
          bitset_word *srcp = EBITSET_WORDS (elt);
       elt = elts[eindex];
       if (elt)
        {
          bitset_windex windex;
          bitset_windex woffset;
          bitset_word *srcp = EBITSET_WORDS (elt);
-         
+
          windex = n_bits / BITSET_WORD_BITS;
          woffset = eindex * EBITSET_ELT_WORDS;
          windex = n_bits / BITSET_WORD_BITS;
          woffset = eindex * EBITSET_ELT_WORDS;
-         
-         srcp[windex - woffset] &= ((bitset_word) 1 << last_bit) - 1;    
+
+         srcp[windex - woffset] &= ((bitset_word) 1 << last_bit) - 1;
          windex++;
          for (; (windex - woffset) < EBITSET_ELT_WORDS; windex++)
            srcp[windex - woffset] = 0;
          windex++;
          for (; (windex - woffset) < EBITSET_ELT_WORDS; windex++)
            srcp[windex - woffset] = 0;
@@ -1092,6 +1089,9 @@ ebitset_op3_cmp (bitset dst, bitset src1, bitset src2, enum bitset_ops op)
       dstp = EBITSET_WORDS (delt);
       switch (op)
        {
       dstp = EBITSET_WORDS (delt);
       switch (op)
        {
+       default:
+         abort ();
+
        case BITSET_OP_OR:
          for (i = 0; i < EBITSET_ELT_WORDS; i++, dstp++)
            {
        case BITSET_OP_OR:
          for (i = 0; i < EBITSET_ELT_WORDS; i++, dstp++)
            {
@@ -1143,9 +1143,6 @@ ebitset_op3_cmp (bitset dst, bitset src1, bitset src2, enum bitset_ops op)
                }
            }
          break;
                }
            }
          break;
-
-       default:
-         abort ();
        }
 
       if (!ebitset_elt_zero_p (delt))
        }
 
       if (!ebitset_elt_zero_p (delt))
@@ -1338,17 +1335,12 @@ ebitset_bytes (bitset_bindex n_bits ATTRIBUTE_UNUSED)
 bitset
 ebitset_init (bitset bset, bitset_bindex n_bits)
 {
 bitset
 ebitset_init (bitset bset, bitset_bindex n_bits)
 {
-  bitset_windex size;
-
   bset->b.vtable = &ebitset_vtable;
 
   bset->b.csize = EBITSET_ELT_WORDS;
 
   EBITSET_ZERO_SET (bset);
 
   bset->b.vtable = &ebitset_vtable;
 
   bset->b.csize = EBITSET_ELT_WORDS;
 
   EBITSET_ZERO_SET (bset);
 
-  size = n_bits ? (n_bits + EBITSET_ELT_BITS - 1) / EBITSET_ELT_BITS
-    : EBITSET_INITIAL_SIZE;
-
   EBITSET_ASIZE (bset) = 0;
   EBITSET_ELTS (bset) = 0;
   ebitset_resize (bset, n_bits);
   EBITSET_ASIZE (bset) = 0;
   EBITSET_ELTS (bset) = 0;
   ebitset_resize (bset, n_bits);