]> git.saurik.com Git - bison.git/commitdiff
(YYSTD): New macro.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 17 Dec 2001 23:50:16 +0000 (23:50 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 17 Dec 2001 23:50:16 +0000 (23:50 +0000)
(YYSIZE_T, YYSTACK_ALLOC, YYSTACK_FREE, YYFPRINTF, YYSTDERR): Use it to
simplify macros, and fix some C++ porting problems reported by Hans Aberg.

src/bison.simple

index 65e0f9608917f606a4af6cf85f596548a3fc05a9..72f18becbf0f9021f789538b0b2e6360e39c11ca 100644 (file)
@@ -1,7 +1,7 @@
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line
 /* Skeleton output parser for bison,
-   Copyright 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989, 1990, 2000, 2001 Free Software Foundation, Inc.
 
    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
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+#ifdef __cplusplus
+# define YYSTD(x) std::x
+#else
+# define YYSTD(x) x
+#endif
+
 #if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
 
 /* The parser invokes alloca or malloc; define the necessary symbols.  */
 
 # if YYSTACK_USE_ALLOCA
 #  define YYSTACK_ALLOC alloca
-#  define YYSIZE_T size_t
+#  define YYSIZE_T YYSTD (size_t)
 # else
 #  ifndef YYSTACK_USE_ALLOCA
 #   if defined (alloca) || defined (_ALLOCA_H)
 #    define YYSTACK_ALLOC alloca
-#    define YYSIZE_T size_t
+#    define YYSIZE_T YYSTD (size_t)
 #   else
 #    if defined (__GNUC__) || defined (_AIX) || defined (__hpux)
 #     define YYSTACK_ALLOC __builtin_alloca
@@ -58,7 +64,7 @@
 #     if defined (__sgi) || defined (__sparc__) || defined (__sparc) || defined (__sun)
 #      include <alloca.h> /* INFRINGES ON USER NAME SPACE */
 #      define YYSTACK_ALLOC alloca
-#      define YYSIZE_T size_t
+#      define YYSIZE_T YYSTD (size_t)
 #     endif
 #    endif
 #   endif
 #  ifdef __cplusplus
 #   include <cstdlib> /* INFRINGES ON USER NAME SPACE */
 #   define YYSIZE_T std::size_t
-#   define YYSTACK_ALLOC std::malloc
-#   define YYSTACK_FREE std::free
 #  else
 #   ifdef __STDC__
 #    include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 #    define YYSIZE_T size_t
 #   endif
-#   define YYSTACK_ALLOC malloc
-#   define YYSTACK_FREE free
 #  endif
+#  define YYSTACK_ALLOC YYSTD (malloc)
+#  define YYSTACK_FREE YYSTD (free)
 # endif
 
 /* A type that is properly aligned for any stack member.  */
@@ -224,13 +228,11 @@ while (0)
 # ifndef YYFPRINTF
 #  ifdef __cplusplus
 #   include <cstdio.h> /* INFRINGES ON USER NAME SPACE */
-#   define YYFPRINTF std::fprintf
-#   define YYSTDERR std::stderr
 #  else
 #   include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#   define YYFPRINTF fprintf
-#   define YYSTDERR stderr
 #  endif
+#  define YYFPRINTF YYSTD (fprintf)
+#  define YYSTDERR YYSTD (stderr)
 # endif
 
 # define YYDPRINTF(Args)                       \