]>
git.saurik.com Git - bison.git/blob - src/system.h
4f95e2050a7091670ada42f07b38a2fd18ea6181
   1 /* system-dependent definitions for Bison. 
   2    Copyright 2000, 2001, 2002  Free Software Foundation, Inc. 
   4    This program is free software; you can redistribute it and/or modify 
   5    it under the terms of the GNU General Public License as published by 
   6    the Free Software Foundation; either version 2, or (at your option) 
   9    This program is distributed in the hope that it will be useful, 
  10    but WITHOUT ANY WARRANTY; without even the implied warranty of 
  11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  12    GNU General Public License for more details. 
  14    You should have received a copy of the GNU General Public License 
  15    along with this program; if not, write to the Free Software Foundation, 
  16    Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */ 
  18 #ifndef BISON_SYSTEM_H 
  19 #define BISON_SYSTEM_H 
  33 /* The following test is to work around the gross typo in 
  34    systems like Sony NEWS-OS Release 4.0C, whereby EXIT_FAILURE 
  35    is defined to 0, not 1.  */ 
  38 # define EXIT_FAILURE 1 
  42 # define EXIT_SUCCESS 0 
  49 #if defined(STDC_HEADERS) || defined(HAVE_STRING_H) 
  51 /* An ANSI string.h and pre-ANSI memory.h might conflict.  */ 
  52 # if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) 
  54 # endif /* not STDC_HEADERS and HAVE_MEMORY_H */ 
  55 #else /* not STDC_HEADERS and not HAVE_STRING_H */ 
  57 /* memory.h and strings.h conflict on some systems.  */ 
  58 #endif /* not STDC_HEADERS and not HAVE_STRING_H */ 
  60 #if defined(STDC_HEADERS) || defined(HAVE_CTYPE_H) 
  69 /* AIX requires this to be the first thing in the file.  */ 
  77 #   ifndef alloca /* predefined by HP cc +Olibcalls */ 
  85 # if defined PROTOTYPES || defined __STDC__ 
  86 #  define PARAMS(Args) Args 
  88 #  define PARAMS(Args) () 
  94 /* From xstrndup.c.  */ 
  95 char *xstrndup 
PARAMS ((const char *s
, size_t n
)); 
  97 /*---------------------. 
  98 | Missing prototypes.  | 
  99 `---------------------*/ 
 101 #if !HAVE_DECL_STPCPY 
 102 char *stpcpy 
PARAMS ((char *dest
, const char *src
)); 
 105 #if !HAVE_DECL_STRCHR 
 106 char *strchr(const char *s
, int c
); 
 109 #if !HAVE_DECL_STRNDUP 
 110 char *strndup 
PARAMS ((const char *s
, size_t size
)); 
 113 #if !HAVE_DECL_STRSPN 
 114 size_t strspn(const char *s
, const char *accept
); 
 117 #if !HAVE_DECL_STRNLEN 
 118 size_t strnlen 
PARAMS ((const char *s
, size_t maxlen
)); 
 121 #if !HAVE_DECL_MEMCHR 
 122 void *memchr 
PARAMS ((const void *s
, int c
, size_t n
)); 
 125 #if !HAVE_DECL_MEMRCHR 
 126 void *memrchr 
PARAMS ((const void *s
, int c
, size_t n
)); 
 135 #ifndef __attribute__ 
 136 /* This feature is available in gcc versions 2.5 and later.  */ 
 137 # if !defined (__GNUC__) || __GNUC__ < 2 || \ 
 138 (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ 
 139 #  define __attribute__(Spec) /* empty */ 
 141 /* The __-protected variants of `format' and `printf' attributes 
 142    are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */ 
 143 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) 
 144 #  define __format__ format 
 145 #  define __printf__ printf 
 157 #ifndef HAVE_SETLOCALE 
 158 # define setlocale(Category, Locale) 
 161 #include "libgettext.h" 
 162 #define _(Msgid)  gettext (Msgid) 
 163 #define N_(Msgid) (Msgid) 
 166 /*-------------------------------. 
 167 | Fix broken compilation flags.  | 
 168 `-------------------------------*/ 
 171 # define LOCALEDIR "/usr/local/share/locale" 
 190 # define obstack_chunk_alloc xmalloc 
 191 # define obstack_chunk_free  free 
 192 # include "obstack.h" 
 194 #define obstack_sgrow(Obs, Str) \ 
 195   obstack_grow (Obs, Str, strlen (Str)) 
 197 #define obstack_fgrow1(Obs, Format, Arg1)       \ 
 200   sprintf (buf, Format, Arg1);                  \ 
 201   obstack_grow (Obs, buf, strlen (buf));        \ 
 204 #define obstack_fgrow2(Obs, Format, Arg1, Arg2) \ 
 207   sprintf (buf, Format, Arg1, Arg2);            \ 
 208   obstack_grow (Obs, buf, strlen (buf));        \ 
 211 #define obstack_fgrow3(Obs, Format, Arg1, Arg2, Arg3)   \ 
 214   sprintf (buf, Format, Arg1, Arg2, Arg3);              \ 
 215   obstack_grow (Obs, buf, strlen (buf));                \ 
 218 #define obstack_fgrow4(Obs, Format, Arg1, Arg2, Arg3, Arg4)     \ 
 221   sprintf (buf, Format, Arg1, Arg2, Arg3, Arg4);                \ 
 222   obstack_grow (Obs, buf, strlen (buf));                        \ 
 226 /*---------------------------------. 
 227 | Machine-dependencies for Bison.  | 
 228 `---------------------------------*/ 
 231 # define        MAXSHORT        2147483647 
 232 # define        MINSHORT        -2147483648 
 234 # define        MAXSHORT        32767 
 235 # define        MINSHORT        -32768 
 238 #if defined (MSDOS) && !defined (__GO32__) 
 239 # define        BITS_PER_WORD   16 
 240 # define MAXTABLE       16383 
 242 # define        BITS_PER_WORD   32 
 243 # define MAXTABLE       32767 
 246 #define WORDSIZE(n)     (((n) + BITS_PER_WORD - 1) / BITS_PER_WORD) 
 247 #define SETBIT(x, i)    ((x)[(i)/BITS_PER_WORD] |= (1<<((i) % BITS_PER_WORD))) 
 248 #define RESETBIT(x, i)  ((x)[(i)/BITS_PER_WORD] &= ~(1<<((i) % BITS_PER_WORD))) 
 249 #define BITISSET(x, i)  (((x)[(i)/BITS_PER_WORD] & (1<<((i) % BITS_PER_WORD))) != 0) 
 252 /*-----------------------------------------. 
 253 | Extensions to use for the output files.  | 
 254 `-----------------------------------------*/ 
 258 # define EXT_TAB        "_tab" 
 259 # define EXT_OUTPUT     ".output" 
 260 # define EXT_STYPE_H    "_stype" 
 261 # define EXT_GUARD_C    "_guard" 
 265 #  define EXT_TAB       "_tab" 
 266 #  define EXT_OUTPUT    ".out" 
 267 #  define EXT_STYPE_H   ".sth" 
 268 #  define EXT_GUARD_C   ".guc" 
 271 #  define EXT_TAB       ".tab" 
 272 #  define EXT_OUTPUT    ".output" 
 273 #  define EXT_STYPE_H   ".stype" 
 274 #  define EXT_GUARD_C   ".guard" 
 275 # endif /* ! MSDOS */ 
 278 #ifndef DEFAULT_TMPDIR 
 279 # define DEFAULT_TMPDIR "/tmp" 
 284 /*----------------------------. 
 285 | As memcpy, but for shorts.  | 
 286 `----------------------------*/ 
 288 #define shortcpy(Dest, Src, Num) \ 
 289   memcpy (Dest, Src, Num * sizeof (short)) 
 291 /*---------------------. 
 292 | Free a linked list.  | 
 293 `---------------------*/ 
 295 #define LIST_FREE(Type, List)                   \ 
 297   Type *_node, *_next;                          \ 
 298   for (_node = List; _node; _node = _next)      \ 
 300       _next = _node->next;                      \ 
 306 /*---------------------------------------------. 
 307 | Debugging memory allocation (must be last).  | 
 308 `---------------------------------------------*/ 
 311 #  define DMALLOC_FUNC_CHECK 
 312 #  include <dmalloc.h> 
 313 # endif /* WITH_DMALLOC */ 
 315 #endif  /* ! BISON_SYSTEM_H */