]>
git.saurik.com Git - bison.git/blob - src/system.h
   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) () 
  96 # define SHRT_MIN (-32768) 
  99 # define SHRT_MAX 32767 
 104 /* From xstrndup.c.  */ 
 105 char *xstrndup 
PARAMS ((const char *s
, size_t n
)); 
 107 /*---------------------. 
 108 | Missing prototypes.  | 
 109 `---------------------*/ 
 111 #if !HAVE_DECL_STPCPY 
 112 char *stpcpy 
PARAMS ((char *dest
, const char *src
)); 
 115 #if !HAVE_DECL_STRCHR 
 116 char *strchr(const char *s
, int c
); 
 119 #if !HAVE_DECL_STRSPN 
 120 size_t strspn(const char *s
, const char *accept
); 
 123 #if !HAVE_DECL_STRNLEN 
 124 size_t strnlen 
PARAMS ((const char *s
, size_t maxlen
)); 
 127 #if !HAVE_DECL_MEMCHR 
 128 void *memchr 
PARAMS ((const void *s
, int c
, size_t n
)); 
 131 #if !HAVE_DECL_MEMRCHR 
 132 void *memrchr 
PARAMS ((const void *s
, int c
, size_t n
)); 
 141 #ifndef __attribute__ 
 142 /* This feature is available in gcc versions 2.5 and later.  */ 
 143 # if !defined (__GNUC__) || __GNUC__ < 2 || \ 
 144 (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ 
 145 #  define __attribute__(Spec) /* empty */ 
 149 /* The __-protected variants of `format' and `printf' attributes 
 150    are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */ 
 151 #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) 
 152 # define __format__ format 
 153 # define __printf__ printf 
 156 #ifndef ATTRIBUTE_NORETURN 
 157 # define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__)) 
 160 #ifndef ATTRIBUTE_UNUSED 
 161 # define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) 
 171 #ifndef HAVE_SETLOCALE 
 172 # define setlocale(Category, Locale) 
 176 #define _(Msgid)  gettext (Msgid) 
 177 #define N_(Msgid) (Msgid) 
 180 /*-------------------------------. 
 181 | Fix broken compilation flags.  | 
 182 `-------------------------------*/ 
 185 # define LOCALEDIR "/usr/local/share/locale" 
 204 # define obstack_chunk_alloc xmalloc 
 205 # define obstack_chunk_free  free 
 206 # include "obstack.h" 
 208 #define obstack_sgrow(Obs, Str) \ 
 209   obstack_grow (Obs, Str, strlen (Str)) 
 211 #define obstack_fgrow1(Obs, Format, Arg1)       \ 
 214   sprintf (buf, Format, Arg1);                  \ 
 215   obstack_grow (Obs, buf, strlen (buf));        \ 
 218 #define obstack_fgrow2(Obs, Format, Arg1, Arg2) \ 
 221   sprintf (buf, Format, Arg1, Arg2);            \ 
 222   obstack_grow (Obs, buf, strlen (buf));        \ 
 225 #define obstack_fgrow3(Obs, Format, Arg1, Arg2, Arg3)   \ 
 228   sprintf (buf, Format, Arg1, Arg2, Arg3);              \ 
 229   obstack_grow (Obs, buf, strlen (buf));                \ 
 232 #define obstack_fgrow4(Obs, Format, Arg1, Arg2, Arg3, Arg4)     \ 
 235   sprintf (buf, Format, Arg1, Arg2, Arg3, Arg4);                \ 
 236   obstack_grow (Obs, buf, strlen (buf));                        \ 
 241 /*-----------------------------------------. 
 242 | Extensions to use for the output files.  | 
 243 `-----------------------------------------*/ 
 247 # define EXT_TAB        "_tab" 
 248 # define EXT_OUTPUT     ".output" 
 252 #  define EXT_TAB       "_tab" 
 253 #  define EXT_OUTPUT    ".out" 
 256 #  define EXT_TAB       ".tab" 
 257 #  define EXT_OUTPUT    ".output" 
 258 # endif /* ! MSDOS */ 
 261 #ifndef DEFAULT_TMPDIR 
 262 # define DEFAULT_TMPDIR "/tmp" 
 267 /*---------------------. 
 268 | Free a linked list.  | 
 269 `---------------------*/ 
 271 #define LIST_FREE(Type, List)                   \ 
 273   Type *_node, *_next;                          \ 
 274   for (_node = List; _node; _node = _next)      \ 
 276       _next = _node->next;                      \ 
 282 /*---------------------------------------------. 
 283 | Debugging memory allocation (must be last).  | 
 284 `---------------------------------------------*/ 
 287 #  define DMALLOC_FUNC_CHECK 
 288 #  include <dmalloc.h> 
 289 # endif /* WITH_DMALLOC */ 
 291 #endif  /* ! BISON_SYSTEM_H */