]> git.saurik.com Git - bison.git/blobdiff - lib/obstack.h
The computation of nullable is broken: it doesn't handle empty
[bison.git] / lib / obstack.h
index 4d49ce024b15a416ff1a1589719beafc91237279..c949730e5e22aed3522b8cd0318684ff6beff679 100644 (file)
@@ -4,20 +4,23 @@
    This file is part of the GNU C Library.  Its master source is NOT part of
    the C library, however.  The master source lives in /gd/gnu/lib.
 
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
+   NOTE: The canonical source of this file is maintained with the GNU C Library.
+   Bugs can be reported to bug-glibc@gnu.org.
 
-   The GNU C Library is distributed in the hope that it will be useful,
+   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 the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.
 
    You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   License along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+   USA.  */
 
 /* Summary:
 
@@ -217,18 +220,18 @@ void obstack_init (struct obstack *obstack);
 
 void * obstack_alloc (struct obstack *obstack, int size);
 
-void * obstack_copy (struct obstack *obstack, void *address, int size);
-void * obstack_copy0 (struct obstack *obstack, void *address, int size);
+void * obstack_copy (struct obstack *obstack, const void *address, int size);
+void * obstack_copy0 (struct obstack *obstack, const void *address, int size);
 
 void obstack_free (struct obstack *obstack, void *block);
 
 void obstack_blank (struct obstack *obstack, int size);
 
-void obstack_grow (struct obstack *obstack, void *data, int size);
-void obstack_grow0 (struct obstack *obstack, void *data, int size);
+void obstack_grow (struct obstack *obstack, const void *data, int size);
+void obstack_grow0 (struct obstack *obstack, const void *data, int size);
 
 void obstack_1grow (struct obstack *obstack, int data_char);
-void obstack_ptr_grow (struct obstack *obstack, void *data);
+void obstack_ptr_grow (struct obstack *obstack, const void *data);
 void obstack_int_grow (struct obstack *obstack, int data);
 
 void * obstack_finish (struct obstack *obstack);
@@ -238,7 +241,7 @@ int obstack_object_size (struct obstack *obstack);
 int obstack_room (struct obstack *obstack);
 void obstack_make_room (struct obstack *obstack, int size);
 void obstack_1grow_fast (struct obstack *obstack, int data_char);
-void obstack_ptr_grow_fast (struct obstack *obstack, void *data);
+void obstack_ptr_grow_fast (struct obstack *obstack, const void *data);
 void obstack_int_grow_fast (struct obstack *obstack, int data);
 void obstack_blank_fast (struct obstack *obstack, int size);
 
@@ -288,21 +291,24 @@ extern int obstack_exit_failure;
    standard C version.  */
 #if defined __STDC__ && __STDC__
 
-# define obstack_init(h) \
-  _obstack_begin ((h), 0, 0, \
-                 (void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
+# define obstack_init(h)                                       \
+  _obstack_begin ((h), 0, 0,                                   \
+                 (void *(*) (long)) obstack_chunk_alloc,       \
+                 (void (*) (void *)) obstack_chunk_free)
 
-# define obstack_begin(h, size) \
-  _obstack_begin ((h), (size), 0, \
-                 (void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
+# define obstack_begin(h, size)                                        \
+  _obstack_begin ((h), (size), 0,                              \
+                 (void *(*) (long)) obstack_chunk_alloc,       \
+                 (void (*) (void *)) obstack_chunk_free)
 
 # define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
-  _obstack_begin ((h), (size), (alignment), \
-                   (void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun))
+  _obstack_begin ((h), (size), (alignment),                               \
+                 (void *(*) (long)) (chunkfun),                           \
+                 (void (*) (void *)) (freefun))
 
 # define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
-  _obstack_begin_1 ((h), (size), (alignment), \
-                   (void *(*) (void *, long)) (chunkfun), \
+  _obstack_begin_1 ((h), (size), (alignment),                          \
+                   (void *(*) (void *, long)) (chunkfun),              \
                    (void (*) (void *, void *)) (freefun), (arg))
 
 # define obstack_chunkfun(h, newchunkfun) \
@@ -313,21 +319,25 @@ extern int obstack_exit_failure;
 
 #else
 
-# define obstack_init(h) \
-  _obstack_begin ((h), 0, 0, \
-                 (void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free)
+# define obstack_init(h)                                               \
+  _obstack_begin ((h), 0, 0,                                           \
+                 (void *(*) ()) obstack_chunk_alloc,                   \
+                 (void (*) ()) obstack_chunk_free)
 
-# define obstack_begin(h, size) \
-  _obstack_begin ((h), (size), 0, \
-                 (void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free)
+# define obstack_begin(h, size)                                                \
+  _obstack_begin ((h), (size), 0,                                      \
+                 (void *(*) ()) obstack_chunk_alloc,                   \
+                 (void (*) ()) obstack_chunk_free)
 
 # define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
-  _obstack_begin ((h), (size), (alignment), \
-                   (void *(*) ()) (chunkfun), (void (*) ()) (freefun))
+  _obstack_begin ((h), (size), (alignment),                               \
+                 (void *(*) ()) (chunkfun),                               \
+                 (void (*) ()) (freefun))
 
 # define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
-  _obstack_begin_1 ((h), (size), (alignment), \
-                   (void *(*) ()) (chunkfun), (void (*) ()) (freefun), (arg))
+  _obstack_begin_1 ((h), (size), (alignment),                          \
+                   (void *(*) ()) (chunkfun),                          \
+                   (void (*) ()) (freefun), (arg))
 
 # define obstack_chunkfun(h, newchunkfun) \
   ((h) -> chunkfun = (struct _obstack_chunk *(*)()) (newchunkfun))
@@ -385,7 +395,7 @@ __extension__                                                               \
    int __len = (length);                                               \
    if (__o->next_free + __len > __o->chunk_limit)                      \
      _obstack_newchunk (__o, __len);                                   \
-   _obstack_memcpy (__o->next_free, (char *) (where), __len);          \
+   _obstack_memcpy (__o->next_free, (where), __len);                   \
    __o->next_free += __len;                                            \
    (void) 0; })
 
@@ -395,7 +405,7 @@ __extension__                                                               \
    int __len = (length);                                               \
    if (__o->next_free + __len + 1 > __o->chunk_limit)                  \
      _obstack_newchunk (__o, __len + 1);                               \
-   _obstack_memcpy (__o->next_free, (char *) (where), __len);          \
+   _obstack_memcpy (__o->next_free, (where), __len);                   \
    __o->next_free += __len;                                            \
    *(__o->next_free)++ = 0;                                            \
    (void) 0; })
@@ -408,8 +418,8 @@ __extension__                                                               \
    *(__o->next_free)++ = (datum);                                      \
    (void) 0; })
 
-/* These assume that the obstack alignment is good enough for pointers or ints,
-   and that the data added so far to the current object
+/* These assume that the obstack alignment is good enough for pointers
+   or ints, and that the data added so far to the current object
    shares that much alignment.  */
 
 # define obstack_ptr_grow(OBSTACK,datum)                               \
@@ -417,7 +427,7 @@ __extension__                                                               \
 ({ struct obstack *__o = (OBSTACK);                                    \
    if (__o->next_free + sizeof (void *) > __o->chunk_limit)            \
      _obstack_newchunk (__o, sizeof (void *));                         \
-   *((void **)__o->next_free)++ = ((void *)datum);                     \
+   *((void **)__o->next_free)++ = (datum);                             \
    (void) 0; })
 
 # define obstack_int_grow(OBSTACK,datum)                               \
@@ -425,11 +435,14 @@ __extension__                                                             \
 ({ struct obstack *__o = (OBSTACK);                                    \
    if (__o->next_free + sizeof (int) > __o->chunk_limit)               \
      _obstack_newchunk (__o, sizeof (int));                            \
-   *((int *)__o->next_free)++ = ((int)datum);                          \
+   *((int *)__o->next_free)++ = (datum);                               \
    (void) 0; })
 
-# define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
-# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
+# define obstack_ptr_grow_fast(h,aptr)                                 \
+  (*((void **) (h)->next_free)++ = (aptr))
+
+# define obstack_int_grow_fast(h,aint)                                 \
+  (*((int *) (h)->next_free)++ = (aint))
 
 # define obstack_blank(OBSTACK,length)                                 \
 __extension__                                                          \
@@ -510,14 +523,14 @@ __extension__                                                             \
 ( (h)->temp = (length),                                                        \
   (((h)->next_free + (h)->temp > (h)->chunk_limit)                     \
    ? (_obstack_newchunk ((h), (h)->temp), 0) : 0),                     \
-  _obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp),       \
+  _obstack_memcpy ((h)->next_free, (where), (h)->temp),                        \
   (h)->next_free += (h)->temp)
 
 # define obstack_grow0(h,where,length)                                 \
 ( (h)->temp = (length),                                                        \
   (((h)->next_free + (h)->temp + 1 > (h)->chunk_limit)                 \
    ? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0),                 \
-  _obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp),       \
+  _obstack_memcpy ((h)->next_free, (where), (h)->temp),                        \
   (h)->next_free += (h)->temp,                                         \
   *((h)->next_free)++ = 0)
 
@@ -529,15 +542,18 @@ __extension__                                                             \
 # define obstack_ptr_grow(h,datum)                                     \
 ( (((h)->next_free + sizeof (char *) > (h)->chunk_limit)               \
    ? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0),               \
-  (*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum)))
+  (*((const char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = (datum)))
 
 # define obstack_int_grow(h,datum)                                     \
 ( (((h)->next_free + sizeof (int) > (h)->chunk_limit)                  \
    ? (_obstack_newchunk ((h), sizeof (int)), 0) : 0),                  \
-  (*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = ((int) datum)))
+  (*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = (datum)))
+
+# define obstack_ptr_grow_fast(h,aptr)                                 \
+  (*((const char **) (h)->next_free)++ = (aptr))
 
-# define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr)
-# define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
+# define obstack_int_grow_fast(h,aint)                                 \
+  (*((int *) (h)->next_free)++ = (aint))
 
 # define obstack_blank(h,length)                                       \
 ( (h)->temp = (length),                                                        \