Blame src/system.H

Packit Service 8bf002
/*-
Packit Service 8bf002
 * Copyright (c) 1998, 2002-2008 Kiyoshi Matsui <kmatsui@t3.rim.or.jp>
Packit Service 8bf002
 * All rights reserved.
Packit Service 8bf002
 *
Packit Service 8bf002
 * Some parts of this code are derived from the public domain software
Packit Service 8bf002
 * DECUS cpp (1984,1985) written by Martin Minow.
Packit Service 8bf002
 *
Packit Service 8bf002
 * Redistribution and use in source and binary forms, with or without
Packit Service 8bf002
 * modification, are permitted provided that the following conditions
Packit Service 8bf002
 * are met:
Packit Service 8bf002
 * 1. Redistributions of source code must retain the above copyright
Packit Service 8bf002
 *    notice, this list of conditions and the following disclaimer.
Packit Service 8bf002
 * 2. Redistributions in binary form must reproduce the above copyright
Packit Service 8bf002
 *    notice, this list of conditions and the following disclaimer in the
Packit Service 8bf002
 *    documentation and/or other materials provided with the distribution.
Packit Service 8bf002
 *
Packit Service 8bf002
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
Packit Service 8bf002
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Packit Service 8bf002
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
Packit Service 8bf002
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
Packit Service 8bf002
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Packit Service 8bf002
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
Packit Service 8bf002
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
Packit Service 8bf002
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
Packit Service 8bf002
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
Packit Service 8bf002
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
Packit Service 8bf002
 * SUCH DAMAGE.
Packit Service 8bf002
 */
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 *                          S Y S T E M . H
Packit Service 8bf002
 *                  S y s t e m   D e p e n d e n t
Packit Service 8bf002
 *              D e f i n i t i o n s   f o r   M C P P
Packit Service 8bf002
 *
Packit Service 8bf002
 * Definitions in this file may be edited to configure MCPP for particular
Packit Service 8bf002
 * operating systems and compiler configurations.
Packit Service 8bf002
 *
Packit Service 8bf002
 * Note:  MCPP assumes the system implement the Ascii character set.
Packit Service 8bf002
 * If this is not the case, you will have to do some editing here and there.
Packit Service 8bf002
 */
Packit Service 8bf002
Packit Service 8bf002
#define SYSTEM_H
Packit Service 8bf002
Packit Service 8bf002
#if     HAVE_CONFIG_H
Packit Service 8bf002
#include    "configed.H"
Packit Service 8bf002
#else
Packit Service 8bf002
#include    "noconfig.H"
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
/* Some system has a wrong definition of UCHAR_MAX.  See cpp-test.html#5.1.3 */
Packit Service 8bf002
#if     UCHARMAX < -255
Packit Service 8bf002
/* The definition of UCHARMAX (possibly UCHAR_MAX too) is wrong.    */
Packit Service 8bf002
/* Define it as a signed int value, not as an unsigned value.       */
Packit Service 8bf002
#undef  UCHARMAX
Packit Service 8bf002
#define UCHARMAX    ((1 << CHAR_BIT) - 1)
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 *      PART 1 and PART 2 are defined in the above header files.
Packit Service 8bf002
 */
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 *      P A R T   1     Configurations for target-operating-system
Packit Service 8bf002
 *                      and target-compiler.
Packit Service 8bf002
 */
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 *      P A R T   2     Configurations for host-compiler.
Packit Service 8bf002
 */
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 *      P A R T   3     Configurations for default settings, typedefs and
Packit Service 8bf002
 *                      translation limits.
Packit Service 8bf002
 */
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 * The variable 'mcpp_mode' specifies the mode of preprocessing as one of 
Packit Service 8bf002
 *          OLD_PREP, KR, STD, or POST_STD.
Packit Service 8bf002
 *      Those modes have many differences each other --
Packit Service 8bf002
 *          i.e. handling of translation phases; handling of some
Packit Service 8bf002
 *          preprocessing tokens; availability of some directives; way of
Packit Service 8bf002
 *          macro expansion;
Packit Service 8bf002
 *          -- as follows.
Packit Service 8bf002
 *
Packit Service 8bf002
 * KR       Actual arguments of a macro are expanded (after substitution)
Packit Service 8bf002
 *          with rest of the replacement text and the subsequent source text.
Packit Service 8bf002
 *      ## in macro definition has no significance to cpp.  The surrounding
Packit Service 8bf002
 *          tokens are macro-expanded separately.  Also, # has no significance
Packit Service 8bf002
 *          to cpp.  The following token is expanded.
Packit Service 8bf002
 *      Directly or intermediately recursive macro call causes an error.
Packit Service 8bf002
 *      <backslash><newline> sequence is deleted only in string literals
Packit Service 8bf002
 *          and in #define directive lines.
Packit Service 8bf002
 *      sizeof (type) can be used in #if line.
Packit Service 8bf002
 *      KR corresponds to the "K&R 1st."
Packit Service 8bf002
 *
Packit Service 8bf002
 * OLD_PREP     In addition to the KR specifications, this mode has the
Packit Service 8bf002
 *          following characteristics (and some others).
Packit Service 8bf002
 *      Converts comment to 0 space instead of 1 space.
Packit Service 8bf002
 *      Expands the parameter like spelling in string literal as a macro.
Packit Service 8bf002
 *      Does not check unmatched pair of '"' or '\''.
Packit Service 8bf002
 *      OLD_PREP corresponts to "Reiser model" cpp.
Packit Service 8bf002
 *
Packit Service 8bf002
 * STD      Standard conforming mode.
Packit Service 8bf002
 *      <backslash><newline> sequence is always deleted after trigraph
Packit Service 8bf002
 *          conversion and before tokenization.
Packit Service 8bf002
 *      Digraph sequences are recognized as tokens.
Packit Service 8bf002
 *      Actual arguments of a macro are expanded separately prior to
Packit Service 8bf002
 *          re-scanning of the replacement text.
Packit Service 8bf002
 *      The name in the replacement text once expanded is not re-expanded,
Packit Service 8bf002
 *          thus preventing recursive death.
Packit Service 8bf002
 *      ## in macro definition concatenates tokens.  The tokens are not
Packit Service 8bf002
 *          expanded.  The concatenated token is expanded by rescanning.
Packit Service 8bf002
 *      # in macro definition stringizes the following argument.  The argument
Packit Service 8bf002
 *          is not expanded.  \ is inserted before " and \ in or surrounding
Packit Service 8bf002
 *          the string literal or character constant.
Packit Service 8bf002
 *      An expanded macro is surrounded by spaces to prevent unintended
Packit Service 8bf002
 *          token merging.
Packit Service 8bf002
 *
Packit Service 8bf002
 * POST_STD     This mode simplifies the behavior of STD mode as follows.
Packit Service 8bf002
 *      1. Digraph sequences are converted in translation phase 1, as
Packit Service 8bf002
 *          alternate characters rather than as tokens.
Packit Service 8bf002
 *      2. A space is inserted as a token separator between any tokens in
Packit Service 8bf002
 *          a source (except a macro name and the next '(' in macro
Packit Service 8bf002
 *          definition): thus simplifying tokenization, test of macro
Packit Service 8bf002
 *          redefinition and macro expansion, especially "stringization".
Packit Service 8bf002
 *      3. Test of macro redefinition ignores difference of parameter names,
Packit Service 8bf002
 *          test of which has little utility and not a little overhead.
Packit Service 8bf002
 *      4. #if expression forbids character constants, which have little
Packit Service 8bf002
 *          portability, little utility and not a little overhead.
Packit Service 8bf002
 *      5. Rescanning of a macro expansion is limited in the replacement
Packit Service 8bf002
 *          text, rest of the source file is not scanned, thus making the
Packit Service 8bf002
 *          syntax of "function-like" macro call more similar to that of
Packit Service 8bf002
 *          function call.
Packit Service 8bf002
 *      6. Argument of #include directive in <header.h> form is an obsolescent
Packit Service 8bf002
 *          feature.
Packit Service 8bf002
 *      7. '$' or so are not treated specially in #define directive.
Packit Service 8bf002
 *      8. Trigraphs, UCN (universal-character name) are not recognized.
Packit Service 8bf002
 *      9. Multi-byte characters in an identifier are not recognized.
Packit Service 8bf002
 *
Packit Service 8bf002
 * The following specifications are available when mode is STD or POST_STD.
Packit Service 8bf002
 *      preprocessing number token, digraphs,
Packit Service 8bf002
 *      #pragma (#pragma MCPP put_defines, #pragma MCPP warning
Packit Service 8bf002
 *          , #pragma MCPP debug) directive,
Packit Service 8bf002
 *      #error directive,
Packit Service 8bf002
 *      #if defined operator, #elif directive,
Packit Service 8bf002
 *      predefined macros __FILE__, __LINE__, __DATE__, __TIME__
Packit Service 8bf002
 *          , __STDC__, __STDC_VERSION__, __STDC_HOSTED__,
Packit Service 8bf002
 *      wide character constant, wide character string literal,
Packit Service 8bf002
 *      _Pragma() operator, variable-arguments macro,
Packit Service 8bf002
 *      macro as an argument of #include, #line directives,
Packit Service 8bf002
 *      escape sequences \x[hex-digits], \a, \v,
Packit Service 8bf002
 *      '+' option (C++ preprocessing),
Packit Service 8bf002
 *      'S<n>' option (re-defines __STDC__ as <n>, unpredefine some macros),
Packit Service 8bf002
 *      'V<n>' option (re-defines __STDC_VERSION__ or __cplusplus as <n>),
Packit Service 8bf002
 *      'h<n>' option (re-defines __STDC_HOSTED__ as <n>).
Packit Service 8bf002
 * The following specifications are available only in STD mode.
Packit Service 8bf002
 *      Trigraphs and UCN,
Packit Service 8bf002
 *      Multi-byte characters in an identifier.
Packit Service 8bf002
 * The following specifications are available only in KR and OLD_PREP modes.
Packit Service 8bf002
 *      #assert, #asm, #endasm, #put_defines, #debug and some other older
Packit Service 8bf002
 *          directives,
Packit Service 8bf002
 *      argument of #line directive other than decimal-digits.
Packit Service 8bf002
 */
Packit Service 8bf002
Packit Service 8bf002
/* The values of 'mcpp_mode'.   */
Packit Service 8bf002
#define OLD_PREP            1           /* "Reiser" cpp mode    */
Packit Service 8bf002
#define KR                  2           /* K&R 1st mode         */
Packit Service 8bf002
#define STD                 3           /* Standard moce        */
Packit Service 8bf002
#define POST_STD            9           /* Special mode of MCPP */
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 * TRIGRAPHS_INIT   Initial value for the -3 option.  If TRUE -3
Packit Service 8bf002
 *              disables trigraphs, if FALSE -3 enables them.
Packit Service 8bf002
 * DIGRAPHS_INIT    Initial value for the -2 option.  If TRUE -2
Packit Service 8bf002
 *              disables digraphs, if FALSE -2 enables them.
Packit Service 8bf002
 * OK_UCN       Enable recognition of Universal-Character-Name sequence
Packit Service 8bf002
 *              by -V199901L option.
Packit Service 8bf002
 * OK_MBIDENT   Enable multi-byte characters in identifier by -V199901L
Packit Service 8bf002
 *              option.
Packit Service 8bf002
 * EXPAND_PRAGMA    Enable macro expansion of #pragma line (even in modes
Packit Service 8bf002
 *              other than C99).
Packit Service 8bf002
 * expr_t, uexpr_t      Type of maximum integer:
Packit Service 8bf002
 *              long long (unsigned long long) or longer.
Packit Service 8bf002
 * EXPR_MAX should be defined to the maximum value of uexpr_t.
Packit Service 8bf002
 */
Packit Service 8bf002
#define TRIGRAPHS_INIT      FALSE
Packit Service 8bf002
#define DIGRAPHS_INIT       FALSE
Packit Service 8bf002
#ifndef EXPAND_PRAGMA
Packit Service 8bf002
#define EXPAND_PRAGMA       FALSE
Packit Service 8bf002
#endif
Packit Service 8bf002
#define OK_UCN              TRUE
Packit Service 8bf002
#define OK_MBIDENT          FALSE
Packit Service 8bf002
Packit Service 8bf002
#if     HAVE_INTMAX_T
Packit Service 8bf002
#if     HAVE_STDINT_H
Packit Service 8bf002
#include    "stdint.h"
Packit Service 8bf002
#elif   HAVE_INTTYPES_H
Packit Service 8bf002
#include    "inttypes.h"
Packit Service 8bf002
#endif
Packit Service 8bf002
typedef intmax_t    expr_t;
Packit Service 8bf002
typedef uintmax_t   uexpr_t;
Packit Service 8bf002
#else
Packit Service 8bf002
#if     HAVE_LONG_LONG
Packit Service 8bf002
#if     (HOST_COMPILER == MSC && _MSC_VER < 1500) || HOST_COMPILER == BORLANDC
Packit Service 8bf002
typedef __int64             expr_t;
Packit Service 8bf002
typedef unsigned __int64    uexpr_t;
Packit Service 8bf002
#else
Packit Service 8bf002
typedef long long           expr_t;
Packit Service 8bf002
typedef unsigned long long  uexpr_t;
Packit Service 8bf002
#endif
Packit Service 8bf002
#else   /* !HAVE_LONG_LONG  */
Packit Service 8bf002
typedef unsigned long   uexpr_t;
Packit Service 8bf002
typedef long            expr_t;
Packit Service 8bf002
#endif  /* HAVE_LONG_LONG   */
Packit Service 8bf002
#endif  /* HAVE_INTMAX_T    */
Packit Service 8bf002
Packit Service 8bf002
#if     HAVE_INTMAX_T
Packit Service 8bf002
#define EXPR_MAX            UINTMAX_MAX
Packit Service 8bf002
#elif   HAVE_LONG_LONG
Packit Service 8bf002
#if     (HOST_COMPILER == MSC && _MSC_VER < 1400) || HOST_COMPILER == BORLANDC
Packit Service 8bf002
#define EXPR_MAX            0xFFFFFFFFFFFFFFFFui64
Packit Service 8bf002
#else
Packit Service 8bf002
#define EXPR_MAX            0xFFFFFFFFFFFFFFFFULL
Packit Service 8bf002
#endif
Packit Service 8bf002
#else
Packit Service 8bf002
#define EXPR_MAX            4294967295UL
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 * Translation limits.
Packit Service 8bf002
 * The following definitions are used to allocate memory for work buffers.
Packit Service 8bf002
 *
Packit Service 8bf002
 * NWORK        Output buffer size.  Set this size according to your compiler-
Packit Service 8bf002
 *              proper.  Length of string literal should be less than NWORK
Packit Service 8bf002
 *              - 1.
Packit Service 8bf002
 *              Nevertheless, when COMPILER == GNUC || COMPILER == MSC, mcpp
Packit Service 8bf002
 *              uses NMACWORK as output buffer size because GNUC and Visual C
Packit Service 8bf002
 *              can accept very long line.
Packit Service 8bf002
 * NBUFF        Input buffer size after line concatenation by <backslash>
Packit Service 8bf002
 *              <newline>.
Packit Service 8bf002
 * NMACWORK     Internal work buffer size for macro definition and expansion.
Packit Service 8bf002
 * IDMAX        The longest identifier length.
Packit Service 8bf002
 * NMACPARS     The maximum number of #define parameters.
Packit Service 8bf002
 *              NOTE: Must be NMACPARS <= UCHARMAX.
Packit Service 8bf002
 * NEXP         The maximum nesting depth of #if expressions.
Packit Service 8bf002
 * BLK_NEST     The number of nested #if's permitted.
Packit Service 8bf002
 * INCLUDE_NEST The maximum nesting depth of #include.  This is needed to
Packit Service 8bf002
 *              prevent infinite recursive inclusion.
Packit Service 8bf002
 * RESCAN_LIMIT The maximum rescan times of macro expansion in STD or POST_STD
Packit Service 8bf002
 *              modes.
Packit Service 8bf002
 * PRESTD_RESCAN_LIMIT  The maximum rescan times of macro expansion in KR or
Packit Service 8bf002
 *              OLD_PREP modes..
Packit Service 8bf002
 *
Packit Service 8bf002
 * NBUFF should not be smaller than NWORK.
Packit Service 8bf002
 * NMACWORK should not be smaller than NWORK * 2.
Packit Service 8bf002
 *
Packit Service 8bf002
 * SBSIZE defines the number of hash-table slots for the macro symbol table.
Packit Service 8bf002
 * It must be a power of 2.
Packit Service 8bf002
 *
Packit Service 8bf002
 * MKDEP_INIT   The initial maximum number of filenames in a dependency line
Packit Service 8bf002
 *              of output of -M* option.  The maximum number is dynamically
Packit Service 8bf002
 *              enlarged in execution.
Packit Service 8bf002
 */
Packit Service 8bf002
Packit Service 8bf002
#ifndef IDMAX
Packit Service 8bf002
#define IDMAX               0x400
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef NMACPARS
Packit Service 8bf002
#define NMACPARS            0xFF
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef NEXP
Packit Service 8bf002
#define NEXP                0x100
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef BLK_NEST
Packit Service 8bf002
#define BLK_NEST            0x100
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef INCLUDE_NEST
Packit Service 8bf002
#define INCLUDE_NEST        0x100
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef RESCAN_LIMIT
Packit Service 8bf002
#define RESCAN_LIMIT        0x40
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef PRESTD_RESCAN_LIMIT
Packit Service 8bf002
#define PRESTD_RESCAN_LIMIT 0x100
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef NBUFF
Packit Service 8bf002
#define NBUFF               0x10000     /* Must be NWORK <= NBUFF   */
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef NWORK
Packit Service 8bf002
#define NWORK               NBUFF       /* 0x1000, 0x4000, 0x10000, ..  */
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef NMACWORK
Packit Service 8bf002
#define NMACWORK            (NWORK * 4) /* Must be NWORK * 2 <= NMACWORK    */
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef SBSIZE
Packit Service 8bf002
#define SBSIZE              0x400
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef MKDEP_INIT
Packit Service 8bf002
#define MKDEP_INIT          0x100
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
#if     UCHARMAX < NMACPARS
Packit Service 8bf002
    #error  "NMACPARS should not be greater than UCHARMAX"
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
#if     NBUFF < NWORK
Packit Service 8bf002
    #error   "NBUFF must be same or greater than NWORK"
Packit Service 8bf002
#endif
Packit Service 8bf002
#if     NMACWORK < NWORK * 2
Packit Service 8bf002
    #error   "NMACWORK must be same or greater than NWORK * 2"
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
#define SBMASK  (SBSIZE - 1)
Packit Service 8bf002
#if     (SBSIZE ^ SBMASK) != ((SBSIZE * 2) - 1)
Packit Service 8bf002
    #error  "SBSIZE must be a power of 2 !"
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 * Translation limits required by the Standard.
Packit Service 8bf002
 *
Packit Service 8bf002
 * *90MIN   limits specified by C90.
Packit Service 8bf002
 * *99MIN   limits specified by C99.
Packit Service 8bf002
 * *_CPLUS_MIN  limits recommended by C++ (ISO 1998/07 Standard).
Packit Service 8bf002
 *
Packit Service 8bf002
 * SLEN*MIN     Characters in a logical source line
Packit Service 8bf002
 *              and characters in a string literal or wide string literal
Packit Service 8bf002
 *              (after concatenation).
Packit Service 8bf002
 * IDLEN*MIN    Significant initial characters in an internal identifier
Packit Service 8bf002
 *              or a macro name.
Packit Service 8bf002
 * NMACPARS*MIN     Parameters in one macro definition.
Packit Service 8bf002
 *              Arguments in one macro invocation.
Packit Service 8bf002
 * EXP_NEST*MIN     Nesting levels of parenthesized expressions in a full
Packit Service 8bf002
 *              expression.
Packit Service 8bf002
 * BLK_NEST*MIN     Nesting levels of conditional inclusion.
Packit Service 8bf002
 * INCLUDE_NEST*MIN     Nesting levels for #include files.
Packit Service 8bf002
 * NMACRO*MIN   Macro identifiers simultaneously defined in one translation
Packit Service 8bf002
 *              unit.
Packit Service 8bf002
 */
Packit Service 8bf002
#define SLEN90MIN           0x1FD
Packit Service 8bf002
#define IDLEN90MIN          0x1F
Packit Service 8bf002
#define NMACPARS90MIN       0x1F
Packit Service 8bf002
#define EXP_NEST90MIN       0x20
Packit Service 8bf002
#define BLK_NEST90MIN       8
Packit Service 8bf002
#define INCLUDE_NEST90MIN   8
Packit Service 8bf002
#define NMACRO90MIN         0x400
Packit Service 8bf002
Packit Service 8bf002
#define SLEN99MIN           0xFFF
Packit Service 8bf002
#define IDLEN99MIN          0x3F
Packit Service 8bf002
#define NMACPARS99MIN       0x7F
Packit Service 8bf002
#define EXP_NEST99MIN       0x3F
Packit Service 8bf002
#define BLK_NEST99MIN       0x3F
Packit Service 8bf002
#define INCLUDE_NEST99MIN   0xF
Packit Service 8bf002
#define NMACRO99MIN         0xFFF
Packit Service 8bf002
Packit Service 8bf002
#define SLEN_CPLUS_MIN      0x10000
Packit Service 8bf002
#define IDLEN_CPLUS_MIN     0x400
Packit Service 8bf002
#define NMACPARS_CPLUS_MIN  0x100
Packit Service 8bf002
#define EXP_NEST_CPLUS_MIN  0x100
Packit Service 8bf002
#define BLK_NEST_CPLUS_MIN  0x100
Packit Service 8bf002
#define INCLUDE_NEST_CPLUS_MIN  0x100
Packit Service 8bf002
#define NMACRO_CPLUS_MIN    0x10000
Packit Service 8bf002
Packit Service 8bf002
/* LINE99LIMIT  means the line number limit of C99  */
Packit Service 8bf002
#define LINE99LIMIT         0x7FFFFFFF
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 * STDC     This macro is used for the predefined __STDC__.
Packit Service 8bf002
 * STDC_VERSION     is used for the value of __STDC_VERSION__.
Packit Service 8bf002
 * STDC_HOSTED      is used for the value of __STDC_HOSTED__.
Packit Service 8bf002
 */
Packit Service 8bf002
#if     IDMAX < IDLEN90MIN || NBUFF < SLEN90MIN + 3
Packit Service 8bf002
            || NWORK < SLEN90MIN + 2 || NMACPARS < NMACPARS90MIN
Packit Service 8bf002
            || NEXP < EXP_NEST90MIN || BLK_NEST < BLK_NEST90MIN
Packit Service 8bf002
#define STDC                0
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef STDC
Packit Service 8bf002
#define STDC                1       /* 1 : for ISO 9899:1990 or later   */
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
#ifndef STDC_VERSION
Packit Service 8bf002
#define STDC_VERSION        0L      /* 199409L  : For conforming
Packit Service 8bf002
            implementation to ISO 9899:1990 / Amendment 1:1995
Packit Service 8bf002
            199901L : For C99   */
Packit Service 8bf002
#endif
Packit Service 8bf002
#ifndef STDC_HOSTED
Packit Service 8bf002
#define STDC_HOSTED         1       /* 1 : for hosted implementation,
Packit Service 8bf002
            0 : for free-standing implementation (C99 specification)    */
Packit Service 8bf002
#endif
Packit Service 8bf002
Packit Service 8bf002
/*
Packit Service 8bf002
 * CPLUS specifies the default value of the pre-defined macro __cplusplus
Packit Service 8bf002
 * for C++ processing.
Packit Service 8bf002
 * The value can be changed by -V<n> option.
Packit Service 8bf002
 */
Packit Service 8bf002
#define CPLUS               1       /* 199711L for C++ Standard     */
Packit Service 8bf002