home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / prgramer / pascal2c / p2crc < prev    next >
Text File  |  1992-08-04  |  82KB  |  1,655 lines

  1. # Standard configuration file for "p2c" 1.20, the Pascal to C translator
  2. #  Copyright (C) 1989, 1990, 1991 Free Software Foundation.
  3. #  Author: Dave Gillespie.
  4. #  Author's address: daveg@csvax.caltech.edu; 256-80 Caltech/Pasadena CA 91125.
  5.  
  6.    #######################################################################
  7.    #                                                                     #
  8.    #  08-04-1992                                                         #
  9.    #                                                                     #
  10.    #  Modified by Bernt Karasch for OS/2 v 2.0 (gcc/emx and nmake)       #
  11.    #  (Internet : hermann.gies@ruba.rz.ruhr-uni-bochum.dbp.de            #
  12.    #   Snailmail: Ruhr-Universitaet Bochum, Institut fuer Mineralogie,   #
  13.    #              Herrn Bernt Karasch, Universitaetsstrasse 150,         #
  14.    #              W-4630 Bochum 1, Federal Republic of Germany)          #
  15.    #                                                                     #
  16.    #  Modifications marked with ### BK                                   #
  17.    #                                                                     #
  18.    #######################################################################
  19.  
  20. # This program is free software; you can redistribute it and/or modify
  21. # it under the terms of the GNU General Public License as published by
  22. # the Free Software Foundation (any version).
  23.  
  24. # This program is distributed in the hope that it will be useful,
  25. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  26. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  27. # GNU General Public License for more details.
  28.  
  29. # You should have received a copy of the GNU General Public License
  30. # along with this program; see the file COPYING.  If not, write to
  31. # the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  32.  
  33.  
  34. # Note that all options except "Naming Conventions" and certain library
  35. # functions may be left blank or omitted entirely; the defaults are intended
  36. # to encompass a wide variety of "reasonable" implementations of C.
  37. # Option names are case-insensitive.
  38.  
  39. # The single-valued options can all be overridden by a later line in
  40. # this file, or in your own "p2crc" or ".p2crc" file, or in comments
  41. # in the input file.  To override an explicit value with the original
  42. # default, use the word "def".
  43.  
  44. # Some options define printf-like format strings.  These support all the
  45. # usual formatting codes, with additional features for string formatting.
  46. # The following extra "flag" characters are defined for %s:
  47. #    _     Convert to lower case
  48. #    ^     Convert to upper case
  49. #    _^    Convert to lower except capitalize first char and after non-letters
  50. #    ~     Insert '_' between lower case and following upper case letters
  51. #    !     Remove '_' and other non-alphanumeric characters
  52. #    ?     Negates _ and ^ flags if name contains mixed case
  53. #    R     Remove file name suffix (e.g., "foo.pas" => "foo")
  54. #    /     Remove path name (prefix ending in /, \, ], or :)
  55. # Also, where a format includes several "%" arguments, they may
  56. # appear in either order in the string.  When two string args are
  57. # involved, "%s" will refer to one and "%S" to the other.  The
  58. # notation %H expands to the p2c home directory name, as in "%H/p2crc".
  59.  
  60. # Many options simply refine defaults controlled by the Language, 
  61. # AnsiC, and Target options.
  62.  
  63.  
  64.  
  65.  
  66. Debug                           # Level of debugging output
  67.  
  68. TokenTrace                      # Additional debugging output
  69.  
  70.  
  71. Include                # Additional p2crc files to be included
  72. Include                         # %s=program name
  73.  
  74. CopySource                      # 1=copy Pascal source code into output
  75.                                 # file, #ifdef'd out.
  76.  
  77.  
  78.  
  79.  
  80. # INPUT LANGUAGE
  81.  
  82. Language                        # Known languages:
  83.                                 #  HP (default; Pascal Workstation version)
  84.                                 #  MODCAL (HP's advanced Pascal)
  85.                                 #  HP-UX (almost same as HP)
  86.                                 #  TURBO (vers 5.0 for IBM PC)
  87.                 #  OREGON (Oregon Software Pascal-2 V2.1)
  88.                 #  VAX (VAX/VMS Pascal)
  89.                 #  MODULA (Modula-2)
  90.                                 #  UCSD (almost same as TURBO)
  91.                                 #  MPW (MPW Pascal 2.0 for the Mac)
  92.                 #  BERK (SUN Berkeley Pascal)
  93.  
  94. Modula2                # 1=Use modula-2 block structure (IF-END)
  95.                 # 0=Use Pascal block structure (IF-BEGIN-END)
  96.                 # default=1 if Language=MODULA, 0 for others
  97.  
  98. Integer16                       # 1=assume Pascal integers are 16 bits
  99.                                 # 0=assume Pascal integers are 32 bits
  100.                 # 2=use native C "int" for Pascal "integer"
  101.                                 # default=0 for HP/Oregon/VAX, 1 for Turbo/MPW
  102.  
  103. DoubleReals                     # 1=convert Pascal real to C double
  104.                                 # 0=convert Pascal real to C float
  105.                                 # default=1 for Turbo and HP-UX, 0 for HP
  106.  
  107. UnsignedChar                    # 1=Pascal char must be unsigned
  108.                                 # 0=Pascal char must be signed
  109.                                 # 2=doesn't matter; use native C "char"
  110.                                 # default=unsigned, but use native "char"
  111.  
  112. NeedSignedByte                  # 1=use "signed char" even if not available
  113.                                 # 0 or default=use "short" if not sure
  114.  
  115. PascalEnumSize                  # Size in BITS of a Pascal enum type.
  116.                                 # Default=according to Language.
  117.  
  118. NestedComments                  # 1=Pascal comments may be nested
  119.                                 # 2=comments don't nest, but { must match }
  120.                                 # 0=comments are unnested, unmatched
  121.                                 # default=0 in HP/MODCAL, 2 in Turbo
  122.  
  123. ExternWords       external    # Words analogous to "forward" for declaring
  124. ExternWords      extern    # procedures or functions external.
  125. ExternWords      fortran
  126.  
  127. CExternWords      nonpascal     # Words like ExternWords but for which any
  128. CExternWords            # leading and/or trailing "_" is removed
  129. CExternWords                    # from the Pascal function/variable names.
  130.  
  131. ImportAll                       # 1=read all of each imported file, in case
  132.                                 #   file contains several modules/units
  133.                                 # 0=read only interface text of first module
  134.                                 # default=1 in HP/MODCAL, 0 in others
  135.  
  136. ImplModules            # 1=MODULE starts a block like PROGRAM.
  137.                 # 0=MODULEs have export/implement sections.
  138.  
  139. PascalSignif                    # Number of significant characters in Pascal
  140.                                 # identifiers; default=unlimited
  141.  
  142. PascalCaseSens                  # 1=Pascal idents are case-sensitive,
  143.                 #   keywords and predef words are u.c. or l.c.
  144.                 # 2=case-sens, keywords and predef words u.c.
  145.                 # 3=case-sens, keywords and predef words l.c.
  146.                                 # 0=not case-sensitive
  147.                 # default=2 in Modula-2, otherwise 0
  148.  
  149. DollarIdents            # 1='$' is legal in Pascal and C identifiers
  150.                 # 2=convert '$' (and '%') in idents into C '_'
  151.                 # 0='$' is for HP directives/Turbo hex consts
  152.                 # default=1 for Oregon & VAX Pascal only
  153.  
  154. IgnoreNonAlpha            # 1=ignore _, $, % in Pascal identifiers
  155.                 # 0=retain them (subject to DollarIdents)
  156.                 # default=1 for UCSD, 0 otherwise
  157.  
  158. InputTabSize                    # Number of characters per tab stop in input
  159.                                 # file, for reading Pascal indentation.
  160.                                 # Default=8.
  161.  
  162.  
  163.  
  164. # TARGET LANGUAGE
  165.  
  166. AnsiC                           # 1=use all Ansi C features and definitions
  167.                                 # 2=use GNU C language extensions
  168.                                 # 0=use only original K&R features
  169.                                 # default=use "modern" Unix-like C
  170.  
  171. C++                             # 1=use C++ extensions,
  172.                                 # 0=use straight C,
  173.                                 # default=generate code that works on either
  174.  
  175. Void*                           # 1=use "void *" for anyptr's
  176.                                 # 0=use "char *" for anyptr's
  177.                                 # default=1 if AnsiC=1 or C++=1
  178.  
  179. HasSignedChar                   # 1="signed char" and "signed int" are legal
  180.                                 # 0="signed ..." is not supported
  181.                                 # default=1 if AnsiC=1
  182.  
  183. CastNull                        # 1=must type-cast NULL into specific types
  184.                                 # 0 or default=don't cast NULL
  185.  
  186. CopyStructs                     # 0=no implicit copying of structs allowed
  187.                                 # 1=can assign but not pass to/from funcs
  188.                                 # 2=struct assignment and parameters only
  189.                                 # 3=can assign, pass, and return structs
  190.                                 # default=3 unless AnsiC=0
  191.  
  192. VariableArrays                  # 1=allows variable-length arrays
  193.                                 # 0=array sizes must be constant
  194.                                 # default=1 for Gnu C, 0 otherwise
  195.  
  196. InitPACStrings            # 1=can init char array with full-sized string
  197.                 # 0=string literal initializer always has \0
  198.                 # default=1 if AnsiC=1, else 0
  199.  
  200. ReUseFieldNames                 # 1=can use same field name in many structs
  201.                                 # 0=field names must be globally unique
  202.                                 # default=1
  203.  
  204. UseVExtern                      # 1 or default=assume strict ANSI linkage
  205.                                 # 0=UNIX-like "common" variable linkage
  206.  
  207. UseAnyptrMacros                 # 1=use Anyptr, Signed, Static, etc. macros
  208.                                 # 0=use true C constructs as specified above
  209.                 # 2=use Static, Local, Char only
  210.                 # default=2 if AnsiC=1, else 1
  211.  
  212. UsePPMacros                     # 1=use PP and PV macros for prototypes
  213.                                 # 0=do not use these macros for prototypes
  214.                                 # 2=use them only for external/forward
  215.                 # default=0 if AnsiC=1, else 2
  216.  
  217.  
  218.  
  219. # TARGET MACHINE
  220.  
  221. Target                          # machine name, if any.  Specify this or answer
  222.                                 # the following questions to tailor the output
  223.                                 # program to a particular architecture.
  224.                                 # Machines known:
  225.                                 #   HPUX-300, SUN-68K, BSD-VAX, BSD, SYSV
  226.  
  227. SignedChar                      # 1=char is signed, 0=char is unsigned,
  228.                                 # default=don't know
  229.  
  230. SignedField                     # 1="int" bit-fields in structs are signed,
  231.                                 # 0="int" bit-fields are unsigned,
  232.                                 # default=don't know but probably signed
  233.                                 # 2=don't know, be paranoid
  234.  
  235. SignedShift                     # 1=">>" does arithmetic (signed) shift,
  236.                                 # 0=">>" does logical shift even for ints,
  237.                                 # default=don't know but probably signed
  238.                                 # 2=don't know, be paranoid
  239.  
  240. CharSize                        # size in bits of a char, default at least 8
  241. ShortSize                       # size in bits of a short, default at least 16
  242. IntSize                         # size in bits of an int, default at least 16
  243. LongSize                        # size in bits of a long, default at least 32
  244. PtrSize                         # size in bits of a pointer.  If not all
  245.                                 # pointers have same size, must leave blank.
  246. FloatSize                       # size in bits of a float
  247. DoubleSize                      # size in bits of a double
  248. EnumSize                        # size in bits of an enum
  249.  
  250. Size_T_Long                     # 1=Ansi "size_t" type is long
  251.                                 # 0=Ansi "size_t" type is int
  252.                                 # default=don't know, probably long
  253.  
  254.  
  255.  
  256. # BRACES AND PLACEMENT OF STATEMENTS
  257.  
  258. NullStmtLine                    # 1=put null statements on their own lines,
  259.                                 # 0 or default=write "while (x) ;"
  260.  
  261. BracesAlways                    # 1=use {braces} always,
  262.                                 # 0=never unless needed,
  263.                                 # default=use nice braces
  264.  
  265. BraceLine                       # 1=always put open braces on a new line,
  266.                                 # 0=never put open brace on new line if poss,
  267.                                 # default=0 for sub-stmts, 1 for func bodies
  268.  
  269. BraceCombine                    # 1=don't put newline after '{' if possible
  270.                                 # 0 or default=open brace always ends a line
  271.  
  272. BraceElse                       # 1=put { } on both "then" and "else" if would
  273.                                 #   put them on either, default=independent
  274.  
  275. BraceElseLine                   # 0 or default=write "} else {"
  276.                                 # 1=write "}\nelse {", 2=write "} else\n{"
  277.                                 # 3=write "}\nelse\n{"
  278.  
  279. ElseIf                          # 1=always write "else if" on same line
  280.                                 # 0=always write "else\nif"
  281.                                 # default=use "else if" only when input used it
  282.  
  283. NewLineFuncs                    # 1=write "static int\nfoo()" in function defs
  284.                                 # 0 or default=write "static int foo()"
  285.  
  286.  
  287.  
  288. # INDENTATION
  289.  
  290. PhysTabSize                     # Spacing of tab-character tabs; default=8.
  291.                                 # 0=do not use tabs in output file.
  292.  
  293. Indent                          # Basic indentation delta; default=+2.
  294.                                 # Indentation deltas specify an amount by which
  295.                                 # to change indentation; +n or -n specifies a
  296.                                 # relative adjustment, n specifies an absolute
  297.                                 # amount of indentation where 0=far left.
  298.  
  299. BlockIndent                     # Indentation delta for statements enclosed
  300.                                 # in braces; applied after Indent.  Default=+0.
  301.  
  302. SwitchIndent                    # Indentation delta for switch statement body;
  303.                                 # applied after Indent.  Default=+0.
  304.  
  305. CaseIndent                      # Indentation delta for case labels; applied
  306.                                 # after Indent and SwitchIndent.  Default=-2.
  307.  
  308. LabelIndent                     # Indentation delta for statement labels.
  309.                                 # Default is 0 (absolute).
  310.  
  311. OpenBraceIndent                 # Indentation delta for the open brace that
  312.                                 # begins a block.  Used only if the brace is
  313.                                 # on its own line.  Default=+0.
  314.  
  315. CloseBraceIndent                # Indentation delta for the close brace that
  316.                                 # ends a block.  Default=+0.
  317.  
  318. FuncArgIndent                   # Indentation delta for function arguments.
  319.                                 # Default is 0.
  320.  
  321. BodyIndent                      # Indentation delta for the body of a function;
  322.                                 # applied after Indent.  Default=+0.
  323.  
  324. FuncOpenIndent                  # Indentation delta for the open brace that
  325.                                 # begins a function body.  Default=+0.
  326.  
  327. FuncCloseIndent                 # Indentation delta for the close brace that
  328.                                 # ends a function body.  Default=+0.
  329.  
  330. StructIndent                    # Indentation delta for "struct" declarations;
  331.                                 # applied after Indent.  Default=+0.
  332.  
  333. StructInitIndent                # Indentation delta for struct and array
  334.                                 # initializers; applied after Indent.
  335.                                 # Default=+0.
  336.  
  337. ExtraInitIndent                 # Indentation delta for nested struct/array
  338.                                 # initializers; not combined with Indent.
  339.                                 # Default=+2.
  340.  
  341. ExtraIndent                     # Extra indentation for broken lines if
  342.                                 # indenting by nesting order is too much;
  343.                                 # default=+2:
  344.                                 #    long_function_name(arguments,
  345.                                 #        more_arguments);
  346.                                 #    1234
  347.  
  348. BumpIndent                      # Extra indentation for subexpressions which
  349.                                 # coincide with next statement's indentation
  350.                                 # in a visually confusing way:
  351.                                 #     if (foo &&
  352.                                 #         bar)     <- this gets BumpIndent
  353.                                 #         spam();
  354.                                 # May be pos, neg or zero.  Default=+1.
  355.  
  356. ConstIndent                     # Target column for #defines; default=24.
  357.                                 # A positive relative value (e.g., +3) means
  358.                                 # to use that many spaces always rather than
  359.                                 # tabbing to a fixed column.  A value of the
  360.                                 # form, e.g., *5 means to tab to the next
  361.                                 # multiple-of-5 column.
  362.  
  363. CommentIndent                   # Target column (as in ConstIndent) for
  364.                                 # comments trailing statements.  Another
  365.                                 # syntax is, e.g., "-80" which means to
  366.                                 # right-justify comments on an 80-column line.
  367.                                 # Default=+3.
  368.  
  369. BraceCommentIndent              # Indentation for trailing comments on
  370.                                 # braces.  Default=+2.
  371.  
  372. DeclCommentIndent               # Target column for comments trailing
  373.                                 # declarations.  Default=CommentIndent.
  374.  
  375. CommentOverIndent               # If line is too long to indent nicely by
  376.                                 # CommentIndent or BraceCommentIndent, start
  377.                                 # a new line and indent according to this
  378.                                 # indentation, either n, +n, or -n.  Zero means
  379.                                 # never to start a new line.  Default=+4.
  380.  
  381. MinSpacing                      # Minimum spacing allowed for things like
  382.                                 # absolute ConstIndent spacing.  Default=2,
  383.                                 # i.e., ConstIndent will always insert at
  384.                                 # least two spaces, even on long lines.
  385.  
  386. MinSpacingThresh                # If specified, threshhold below which
  387.                                 # MinSpacing is used.  (Default=MinSpacing.)
  388.                                 # For example, if MinSpacingThresh=1:
  389.                                 #    foo  /*comment*/   (CommentIndent=5 used)
  390.                                 #    spam /*comment*/   (CommentIndent=5 used)
  391.                                 #    thing  /*comment*/ (MinSpacing=2 used)
  392.  
  393.  
  394.  
  395. # LINE BREAKING
  396.  
  397. LineWidth                       # Target max output line width; default=78.
  398.  
  399. MaxLineWidth                    # Absolute max output line width; default=90.
  400.  
  401. OverWidePenalty                 # Penalty for line lengths > LineWidth.
  402.                                 # Default=25.  (Penalties are real numbers.)
  403.  
  404. OverWideExtraPenalty            # Additional penalty multiplied by
  405.                                 # number-of-chars-too-long squared.
  406.                                 # Default=1.  Total over-wide penalty is
  407.                                 #   OW = max(OWP + N^2*OWEP, 0).
  408.  
  409. EarlyBreakPenalty               # Penalty for breaking at early break-points
  410.                                 # among those at a given nesting level.
  411.                                 # Default=1.  If N=number of possible break
  412.                                 # points before this one in this nesting,
  413.                                 #   EB = -N*EBP.
  414.  
  415. CommaBreakPenalty               # Penalty for breaking lines after a comma.
  416.                                 # Default=10.
  417.  
  418. CommaBreakExtraPenalty          # Additional penalty multiplied by nesting
  419.                                 # level of (number of parens enclosing) comma.
  420.                                 # Default=5.  Total comma-break penalty is
  421.                                 #   B = max(P + CBP + N*CBEP, 1.0)
  422.                                 # where
  423.                                 #   P = OW + EB + SIP + IP  (defined elsewhere)
  424.  
  425. SpecialArgBreakPenalty          # Penalty for breaking lines after a comma
  426.                                 # which follows a "special" argument, such
  427.                                 # as the format string of a printf.  Default=5.
  428.  
  429. OpBreakPenalty                  # Penalty for breaking at an operator (like +).
  430.                                 # Analogous to CommaBreakPenalty; default=25.
  431.  
  432. OpBreakExtraPenalty             # Additional penalty multiplied by nesting
  433.                                 # level of the operator.  Default=20.
  434.  
  435. LogBreakPenalty            # Penalty for breaking at an && or || operator.
  436.                 # Default=5.
  437.  
  438. LogBreakExtraPenalty        # Additional penalty multiplied by nesting
  439.                 # level of the logical operator.  Default=1.
  440.  
  441. RelBreakPenalty            # Penalty for breaking at a relational
  442.                 # operator.  Default=20.
  443.  
  444. RelBreakExtraPenalty        # Additional penalty multiplied by nesting
  445.                 # level of the relational op.  Default=10.
  446.  
  447. ExHyphenPenalty                 # Additional penalty for breaking a line just
  448.                                 # after a minus sign.  Default=10.  :-)
  449.  
  450. AssignBreakPenalty              # Penalty for breaking at an assignment
  451.                                 # operator.  Default=50.
  452.  
  453. AssignBreakExtraPenalty         # Additional penalty multiplied by nesting
  454.                                 # level of the assignment.  Default=30.
  455.  
  456. QMarkBreakPenalty               # Penalty for breaking lines at the "?" of
  457.                                 # a "?:" operator.  Default=50.  (Colons
  458.                                 # get the regular OpBreakPenalty.)
  459.  
  460. QMarkBreakExtraPenalty          # Additional penalty multiplied by nesting
  461.                                 # level of the "?:" operator.  Default=30.
  462.  
  463. ParenBreakPenalty               # Penalty for breaking after an open paren
  464.                                 # in a function call:
  465.                                 #   long_function_name(
  466.                                 #       very_long_argument);
  467.                                 # Default=25.
  468.  
  469. ParenBreakExtraPenalty          # Additional penalty multiplied by nesting
  470.                                 # level of the parentheses.  Default=10.
  471.  
  472. MoreBreakPenalty                # Adjustment to CommaBreakPenalty, etc.,
  473.                                 # if it is the second or later break in the
  474.                                 # same nesting.  (E.g., if two or more commas
  475.                                 # of a function call are broken.)  Default=-5.
  476.  
  477. MoreBreakExtraPenalty           # Adjustment to CommaBreakExtraPenalty, etc.,
  478.                                 # as in MoreBreakPenalty.  Default=-3.
  479.  
  480. WrongSidePenalty                # Extra penalty for breaking on the less
  481.                                 # preferred side of an operator (see BreakArith
  482.                                 # et al below).  Default=10.
  483.  
  484. ExtraIndentPenalty              # Penalty for indenting by ExtraIndent instead
  485.                                 # of according to nesting order.  If negative,
  486.                                 # -EIP is penalty for *not* using ExtraIndent.
  487.                                 # Default=30.
  488.  
  489. BumpIndentPenalty               # Penalty for using BumpIndent for identation.
  490.                                 # Default=10.
  491.  
  492. NoBumpIndentPenalty             # Penalty for not using BumpIndent when it
  493.                                 # ought to have been used.  Default=25.
  494.  
  495. IndentAmountPenalty             # Penalty for indentation; for a line indented
  496.                                 # N spaces (beyond the indentation of the
  497.                                 # statement as a whole),
  498.                                 #   IP = N*IAP.
  499.                                 # Default=0.5.
  500.  
  501. SameIndentPenalty               # Penalty for indenting two successive lines
  502.                                 # the same even though they belong to different
  503.                                 # nesting levels:
  504.                                 #   foo = x +
  505.                                 #         y *
  506.                                 #         z
  507.                                 # Default=5.
  508.  
  509. MaxLineBreakTries               # Limit to the number of line breaking
  510.                                 # alternatives to be tried.  Default=5000.
  511.  
  512. AllOrNoneBreak                  # List of functions for which arguments must
  513. AllOrNoneBreak                  # be written all on one line or all on separate
  514. AllOrNoneBreak                  # lines.  (A given function may have only one
  515. AllOrNoneBreak                  # of this and the following break properties.)
  516.  
  517. OneSpecialArg   printf          # List of functions like printf for which the
  518. OneSpecialArg                   # first argument is "special", remaining args
  519. OneSpecialArg                   # are uniform.
  520.  
  521. TwoSpecialArgs  sprintf         # List of functions like fprintf for which the
  522. TwoSpecialArgs  fprintf         # first two arguments are "special".
  523.  
  524. ThreeSpecialArgs                # List of functions for which the first three
  525. ThreeSpecialArgs                # arguments are "special".
  526.  
  527. BreakArith                      # Options string for how to break lines at
  528.                                 # arithmetic operators.  One or more of:
  529.                                 #   L  Break on left side of operator.
  530.                                 #   R  Break on right side of operator.
  531.                                 #   H  Same as L, but use "hanging" indent.
  532.                                 #   N  No breaking.
  533.                                 #  L>R Break either way, L preferred (or R<L).
  534.                                 #  R>L Break either way, R preferred (or L<R).
  535.                                 #  L=R Break either way equally (or LR).
  536.                                 #   A  (with above) Use all-or-none breaking.
  537.                                 # Default is R.
  538.  
  539. BreakRel                        # Same for relational ops (==, <, etc.)
  540.  
  541. BreakLog                        # Same for logical operators && and ||
  542.  
  543. BreakDot                        # Same for dot operators . and ->
  544.  
  545. BreakAssign                     # Same for assignments.
  546.  
  547. For_AllOrNone                   # 1 or default=all-or-none breaking of the
  548.                                 # three clauses of a "for" statement.  0=plain.
  549.  
  550.  
  551.  
  552. # COMMENTS AND BLANK LINES
  553.  
  554. NoBanner                 # 1=omit "From input file..." comment
  555.                 # 0 or default=put this command at top of file
  556.  
  557. EatComments                     # 1=don't copy any comments into C code
  558.                                 # 2=don't copy comments inside procedures
  559.                                 # 0 or default=keep all comments
  560.  
  561. SpitComments                    # 1=spit out all comments between procedures
  562.                                 # 0 or default=try to attach comments to code
  563.  
  564. SpitOrphanComments              # 1=spit out comments whose orig stmts are lost
  565.                                 # 0 or default=attach orphans to nearby code
  566.  
  567. CommentAfter                    # 1=assume comments follow statements
  568.                                 # 0 or default=assume comments precede stmts
  569.                                 # (in case statements are rearranged.)
  570.  
  571. BlankAfter                      # 1 or default=assume blank lines follow stmts
  572.                                 # 0=assume blanks precede statements
  573.  
  574. MajorSpacing                    # Minimum number of blank lines between major
  575.                                 # sections of code, default=2.
  576.  
  577. MinorSpacing                    # Minimum number of blank lines between minor
  578.                                 # sections, default=1.
  579.  
  580. FuncSpacing                     # Minimum number of blank lines between global
  581.                                 # functions, default=2.
  582.  
  583. MinFuncSpacing                  # Minimum number of blank lines separating
  584.                                 # sub-procedures, default=1.
  585.  
  586. EatNotes            # Suppress any notes whose text contains these
  587. EatNotes            # words.  Example: "EatNotes Spam [216]"
  588. EatNotes            # suppresses notes with "Spam" or "[216]".
  589.  
  590.  
  591.  
  592. # SPECIAL COMMENTS
  593.  
  594. FixedComment      FIXED        # Comment for fixed upper limit of FOR loops:
  595.                 #   for i:=1 to N do {FIXED}
  596.                 # will suppress use of a FORLIM for N.
  597.                 # Case-sensitive; no spaces allowed.
  598.  
  599. PermanentComment  PERMANENT    # Comment for permanently imported modules,
  600.                 # such as "system".
  601.  
  602. InterfaceComment  INTF-ONLY    # Comment for include files which are to be
  603.                 # treated as unit interface text, i.e., are
  604.                 # to be read without generating C code.
  605.  
  606. EmbedComment      EMBED        # Comment for embedded C code in Pascal:
  607.                 #   {EMBED
  608.                                 #   printf("stuff\n");
  609.                                 #   }
  610.                 # Use \[ \] for curly braces within embedded
  611.                 # code.  May appear in any context where
  612.                 # comments are used.
  613.  
  614. SkipComment       SKIP        # Comment for code to skip in p2c only:
  615.                 #   {SKIP} writeln('Not in p2c'); {NOSKIP}
  616.                 # {SKIP} ... {NOSKIP} sections can be nested.
  617.  
  618. NoSkipComment     NOSKIP        # Comment for code to skip except in p2c:
  619.                                 #   {NOSKIP writeln('Only in p2c'); }
  620.                 # Can be used in if-then-else fashion:
  621.                 #   {SKIP} foo; {NOSKIP bar; }
  622.                 # {NOSKIP ... } sections can not be nested.
  623.  
  624. SignedComment     SIGNED        # Type annotation: var c : {SIGNED} char;
  625.  
  626. UnsignedComment   UNSIGNED      # Type annotation: type uc = {UNSIGNED} char;
  627.  
  628.  
  629.  
  630.  
  631. # STYLISTIC OPTIONS
  632.  
  633. ExtraParens                     # 1=use many parentheses for readability,
  634.                                 # 2=use even more parentheses,
  635.                                 # 0=use minimal parens,
  636.                                 # default=use nice parens
  637.  
  638. BreakAddParens                  # 1=always add parens for operators broken
  639.                                 # across lines.  0=never, default=nice parens
  640.  
  641. ReturnParens                    # 1=write "return (x)"
  642.                                 # 0=write "return x"
  643.                                 # default=omit parens for trivial expressions
  644.  
  645. SpaceExprs                      # 1=use many spaces in expressions,
  646.                                 # 0=use minimal spaces in expressions,
  647.                                 # default=use nice spacing
  648.  
  649. SpaceFuncs            # 1=write a space after function name in call
  650.                 # 0 or default=no space: f(x)
  651.  
  652. SpaceCommas            # 1 or default=one space after commas: f(x, y)
  653.                 # 0=no space after commas: f(x,y)
  654.  
  655. ImplicitZero                    # 1=generate "if (x)" rather than "if (x!=0)"
  656.                                 # 0=always generate explicit comparisons
  657.                                 # default=only with strcmp and other idioms
  658.  
  659. StarIndex                       # 1=always use "*a"
  660.                                 # 0=always use "a[0]"
  661.                                 # default=use "*a" only in common idioms
  662.  
  663. AddIndex                        # 1=always use "a + n"
  664.                                 # 0=always use "&a[n]"
  665.                                 # default=use "a+n" only in common idioms
  666.  
  667. StarArrays            # 1 or default=write "f(int *a)" for array a
  668.                 # 0=write "f(int a[10])"
  669.                 # 2=write "f(int a[])"
  670.  
  671. StarFunctions                   # 1=write "(*fp)(x,y)" to call thru func ptr
  672.                                 # 0=write "fp(x,y)"
  673.                                 # default=1 unless AnsiC=1
  674.  
  675. PostIncrement                   # 1 or default=write i++ preferentially
  676.                                 # 0=write ++i preferentially
  677.  
  678. CaseSpacing                     # Number of blank lines between CASE sections,
  679.                                 # default=0.
  680.  
  681. CaseTabs                        # 0 or default=put each CASE on its own line.
  682.                                 # Else this is an amount by which to space
  683.                                 # cases on same line, either +n or *n in the
  684.                                 # style of ConstIndent.
  685.  
  686. CaseLimit                       # Maximum number of options in a CASE subrange
  687.                                 # that will be expanded out in-line; more than
  688.                                 # this moves to an "if" in the default clause.
  689.                                 # Default=9.
  690.  
  691. UseCommas                       # 1=use comma operator when convenient
  692.                                 # 0=do not use comma operator
  693.                                 # default=use comma operator when necessary
  694.  
  695. UseReturns                      # 1 or default=introduce "return" statements
  696.                                 # 0=do not rearrange to use "return"
  697.  
  698. ReturnLimit                     # Need at least this many statements in an
  699.                                 # "if" block before "return" rearrangement;
  700.                                 # default=3
  701.  
  702. UseBreaks                       # 1 or default=introduce "break"/"continue"
  703.                                 # 0=do not use "break" and "continue"
  704.  
  705. BreakLimit                      # Need at least this many statements in an
  706.                                 # "if" block before "break" rearrangement;
  707.                                 # default=2
  708.  
  709. ContinueLimit                   # Need at least this many statements in an
  710.                                 # "if" block before "continue" rearrangement;
  711.                                 # default=5
  712.  
  713. InfLoopStyle                    # 0 or default=follow the source file
  714.                                 # 1=use "for (;;) ..." for all infinite loops
  715.                                 # 2=use "while (1) ..."
  716.                                 # 3=use "do ... while (1)"
  717.  
  718. NullChar                        # 1 or default=write '\0' for null character
  719.                                 # 0=write 0 for null character constant
  720.  
  721. HighCharInt                     # 1 or default=write '\200' as 128 and above
  722.                                 # 0=write all char consts as characters
  723.  
  724. MixVars                         # 1=mix all vars of same base type: int a,b;
  725.                                 # 0=never mix variables: int a; int b;
  726.                                 # default=mix only adjacent variables
  727.  
  728. MixTypes                        # 1=mix all var types: int a,*b,c[5];
  729.                                 # 0=never mix variables with different types
  730.                                 # default=pointers only: int a,*b; int c[5];
  731.  
  732. MixFields                       # 1=mix bit-fields just like other vars
  733.                                 # 0=only one bit-field per declaration
  734.                                 # default=1
  735.  
  736. MixInits                        # 1=always mix variables with initializers
  737.                                 # 0=never mix variables with initializers
  738.                                 # default=mix with-inits with other with-inits
  739.  
  740. MainLocals                      # 1 or default=make globals local to main if poss
  741.                                 # 0=globals are always made global
  742.  
  743.  
  744.  
  745. # CODING OPTIONS
  746.  
  747. InitialCalls            # Initial function calls (or other brief C
  748. InitialCalls            # statements) to put at front of main program.
  749. InitialCalls            # E.g.: InitialCalls setup_buffer()
  750.  
  751. ExpandIncludes                  # 1 or default=expand include files into output
  752.                                 # 0=convert Pascal include to #include
  753.  
  754. CollectNest            # 1 or default=collect sub-procs, emit at end.
  755.                 # 0=emit sub-procedures one by one; this will
  756.                 #   produce bad code but is useful with
  757.                 #   ExpandIncludes=0.
  758.  
  759. ShortCircuit                    # 1=use &&, 0=use & for boolean AND, also OR.
  760.                                 # default=1 for Turbo/HP-UX, 0 for HP Pascal
  761.                 #   may be overridden by {$B} / $partial_eval$
  762.  
  763. ShortOpt                        # 1 or default=optimize a&b to a&&b if equiv
  764.                                 # 0=always use a&b, depending on ShortCircuit
  765.  
  766. ElimDeadCode                    # 1 or default=eliminate unreachable code
  767.                 # 2=even eliminate "if (false)" statements
  768.                                 # 0=leave unreachable code in place
  769.  
  770. FoldConstants                   # 1=instantiate non-structure const's in-line
  771.                                 #   (applies to int, char, boolean, enum, real)
  772.                                 # 0 or default=use #define's for constants
  773.                                 # 0 causes constant to be completely symbolic;
  774.                                 # default sometimes instantiates if convenient.
  775.                                 # A constant is folded if FoldConstants=1
  776.                                 # either when the const was defined, or when
  777.                                 # it was referenced.
  778.  
  779. FoldStrConstants                # 1=instantiate string const's in-line, as above
  780.                                 # 0 or default=use #define's for string const's
  781.  
  782. CharConsts            # 1 or default=const a='X' => #define a 'X'
  783.                 # 0=const a='X' => #define a "X"
  784.                 # (either always works---aesthetic only)
  785.  
  786. UseConsts                       # 1=use "const" keyword in C
  787.                 # 2=use "Const" form even if UseAnyptrMacros=0
  788.                                 # 0=do not use "const" declarations
  789.                                 # default=1 if AnsiC=1 or C++=1
  790.  
  791. UseUndef            # 1=use "#undef" when #defines go out of scope
  792.                 # 0=do not use "#undef", default=1.
  793.  
  794. StoreFileNames                  # 1=store file names associated with file vars
  795.                                 # 0=let the system record the name
  796.                                 # default=1 in Turbo Pascal, 0 otherwise.
  797.  
  798. SqueezeSubr                     # 1 or default=squeeze subranges into char, etc.
  799.                                 # 0=use only short's and int's (or long's).
  800.  
  801. UseEnum                         # 1=use C "enum" types
  802.                                 # 0=use integers for enumerations
  803.                                 # default=1 unless AnsiC=0
  804.  
  805. SqueezeEnum            # 1=use bytes for small enums, when UseEnum=0
  806.                 # 0=use shorts always
  807.                 # default=0 for HP Pascal, 1 otherwise.
  808.  
  809. CompEnums                       # 1=okay to compare enums directly
  810.                                 # 0=cast enums to ints for comparisons
  811.                                 # default=0 unless AnsiC=1.
  812.  
  813. PreserveTypes            # 1 or default=use typedef for all Pascal types
  814.                 # 0=don't unnecessarily use typedef
  815.                 # (Can be turned on/off for different decls)
  816.  
  817. PreservePointers        # 1=override PreserveTypes for pointer types
  818.                 # 0 or default=use in-line "*" notation
  819.                 # -1=same as PreserveTypes
  820.  
  821. PreserveStrings            # 1=override PreserveTypes for string types
  822.                 # 2=use typedef for strings w/non-const lengths
  823.                 # 0=use in-line "[]" notation for strings
  824.                 # -1 or default=same as PreserveTypes
  825.  
  826. Packing                         # 1 or default=fully packed records and arrays
  827.                                 # 0=ignore "packed" keyword
  828.                                 # 2=pack to bytes, but not bits
  829.  
  830. PackSigned                      # 1=implement packed arrays of signed values
  831.                                 # 0=only pack unsigned arrays
  832.                                 # default=1
  833.  
  834. SkipIndices                     # Number of vacant array indices allowable,
  835.                                 # default 0.  If 1, then array [1..10] is
  836.                                 # converted to array [11], but array [2..10]
  837.                                 # would be converted as array [9] with offsets.
  838.  
  839. OffsetForLoops                  # 1=adjust loops where index is always used
  840.                                 #   as, e.g., i-1 by offsetting the index.
  841.                                 # 0=leave them alone.  Default=1.
  842.  
  843. ForEvalOrder                    # 1=in for x:=y to z, force eval of y before z.
  844.                                 # 0 or default=evaluation order unimportant.
  845.  
  846. StringLeaders                   # Number of leading '>' placeholder characters
  847.                                 # that can be prepended to a string literal.
  848.                                 # Default is 3.
  849.  
  850. StringCeiling                   # Maximum size for strings.  Default is 255.
  851.                                 # If > 255, allows some "slop" in strings.
  852.                                 # If < 255, shortens large strings.
  853.  
  854. StringDefault                   # Size of string declared without [ ] brackets.
  855.                                 # Default is 255.
  856.  
  857. StringTruncLimit                # Minimum size of strings for which a warning
  858.                                 # is generated when assigned possibly longer
  859.                                 # strings.  These are assignments to check if
  860.                                 # Turbo-like truncation is necessary.
  861.                                 # Default is 80 for Turbo, 0 otherwise.
  862.  
  863. LongStringSize                  # Smallest string which can be considered
  864.                                 # "arbitrarily long"; default=StringCeiling.
  865.  
  866. KeepNulls                       # 1=try to preserve null (#0) chars in strings
  867.                                 # 0 or default=ignore them (but warn)
  868.  
  869. HighCharBits                    # 1=convert "ch >= 128" to "(ch & ~127) != 0"
  870.                                 # 2=convert "ch >= 127" to "(ch & 128) != 0"
  871.                                 # 0=do not use bit ops for high characters
  872.                                 # default=1 only if ch's signed-ness is unknown
  873.  
  874. StaticFunctions                 # 1 or default=use "static" for private funcs
  875.                                 # 0=don't create static functions
  876.  
  877. StaticVariables                 # 1 or default=use "static" for private vars
  878.                                 # 0=don't create static global vars
  879.  
  880. NeedStatic                      # Names of functions or variables which
  881.                                 # need to be declared static despite
  882.                                 # StaticFunctions=0 or StaticVariables=0.
  883.  
  884. AlwaysCopyValues                # 1=always make a local copy of a parameter
  885.                                 # 0 or default=only if it appears to be changed
  886.  
  887. VoidArgs                        # 1=write "f(void)" for funcs with no args
  888.                                 # 0=write "f()" for funcs with no args
  889.                                 # default=depends on AnsiC and C++
  890.  
  891. Prototypes                      # 1=write "f(int a, int b)"
  892.                                 # 2=write "f(int, int)" when possible
  893.                                 # 0=write "f(a, b) \n int a, b;"
  894.                                 # default=depends of AnsiC and C++
  895.  
  896. FullPrototyping                 # 1 or default=use prototypes everywhere
  897.                                 # 0=use prototypes only for forward/extern
  898.  
  899. ProcPtrPrototypes               # 1 or default=use prototypes for C func ptrs
  900.                                 # 0=always write, e.g., int (*fp)();
  901.  
  902. CastArgs                        # 1=include argument casts if needed: (double)i
  903.                                 # 0=do not include argument casts (dangerous!)
  904.                                 # default=do not cast if func has a prototype
  905.  
  906. CastLongArgs                    # 1=include int/long argument casts if needed
  907.                                 # 0=do not cast between int and long
  908.                                 # default=follow CastArgs
  909.  
  910. PromoteArgs                     # 1=promote e.g. short to int in prototypes
  911.                                 # 0=do not promote in prototypes
  912.                                 # default=only when prototyping forwards only
  913.  
  914. FixPromotedArgs            # 1=attempt to handle "&" of promoted args
  915.                 # 2=warn in this case but do not try to fix
  916.                 # 0=leave promoted args alone
  917.                 # default=1
  918.  
  919. PromoteEnums            # 1=promote enum to int when promoting args
  920.                 # 0=leave enums alone in prototypes
  921.                 # default=only when UseEnum=0
  922.  
  923. StaticLinks                     # 1=use _PROCEDURE (ProcTypeName) for proc ptrs
  924.                                 # 2=use _PROCEDURE but assume only global procs
  925.                                 # 0=use C function pointers, no static links
  926.                                 # default=1 in HP, 0 in Turbo Pascal
  927.  
  928. VarStrings                      # 1=full support for "var s:string" params
  929.                 #   and HP Pascal's strmax function
  930.                                 # 0=assume all var s:string's are string[255]
  931.                                 # default=0 always; may need 1 for some
  932.                                 #   HP Pascal programs
  933.  
  934. VarFiles                        # 1 or default="var f : file" params use &
  935.                                 # 0=pass FILE *'s by value; must not open or
  936.                                 #   close the file within the procedure
  937.  
  938. AddrStdFiles                    # 1=okay to write "&stdout", etc.
  939.                                 # 0 or default=not okay
  940.  
  941. CopyStructFuncs                 # 1=write "temp = f(); temp.field"
  942.                                 # 0=write "f().field"
  943.                                 # default=1 unless AnsiC=1
  944.  
  945. Atan2                           # 1=convert arctan(a/b) to atan2(a,b)
  946.                                 # 0 or default=convert it to atan(a/b)
  947.  
  948. BitwiseMod                      # 1 or default=convert x mod 16 to x&15
  949.                                 # 0=convert x mod 16 to x%16
  950.  
  951. BitwiseDiv                      # 1=convert x div 16 to x>>4
  952.                                 # 0 or default=convert x div 16 to x/16
  953.  
  954. AssumeBits                      # 1=assume args of funcs like na_po2 are
  955.                                 #   within reasonable range; write 1<<x.
  956.                                 # 0 or default=no assumptions; write na_po2
  957.  
  958. AssumeSigns                     # 1 or default=for e.g. na_lsl, assume
  959.                                 #   "x" is positive, "-x" is negative.
  960.                                 # 0=no assumptions (except for constants!)
  961.  
  962. AllocZeroNil                    # 1=na_new(p,0) must set p to nil
  963.                                 # 0 or default=not necessary
  964.                                 # 2=not necessary, but print a warning
  965.  
  966. PrintfOnly                      # 1=don't use puts, putc, etc., in WRITE
  967.                                 # 0=use puts, etc., as well as printf
  968.                                 # default=a pleasing compromise
  969.  
  970. MixWritelns                     # 1 or default=writeln;writeln=>printf("\n\n")
  971.                                 # 0=don't mix consecutive writeln stmts
  972.  
  973. IntegerWidth                    # Default field width for writing integers.
  974.                                 # Default is 1 for Turbo, 12 for HP.
  975.  
  976. RealWidth                       # Default field width for writing reals.
  977.                                 # Default is 12.
  978.  
  979. FormatStrings                   # 1=full support for write(string:width)
  980.                                 # 0 or default=':width' only stretches
  981.  
  982. WhileFgets                      # 1 or default=while (fgets(...)) { ... }
  983.                                 # 0=while (!eof(...)) { fgets(...); ... }
  984.  
  985. UseGets                         # 1 or default=use gets to read string[255]
  986.                                 # 0=always use fgets (with length checking)
  987.  
  988. NewLineSpace                    # 1=convert \n to ' ' in read(ch)
  989.                                 # 0=leave newlines alone reading characters
  990.                                 # default=0 in Turbo Pascal, 1 otherwise
  991.  
  992. BuildReads                      # 1=combine x:=f^;get(f) into read(f,x)
  993.                                 # 2=only for text files and files of char
  994.                                 # 0=leave it alone; default=1
  995.  
  996. BuildWrites                     # 1=combine f^:=x;put(f) into write(f,x)
  997.                                 # 2=only for text files and files of char
  998.                                 # 0=leave it alone; default=1
  999.  
  1000. BinaryMode                      # 1 or default=fopen binary files as, say, "rb"
  1001.                                 # 0=fopen binary files as "r"
  1002.                                 # 2=fopen binary files as "r" with a warning
  1003.  
  1004. ReadWriteOpen            # 1=RESET/REWRITE open binary files read/write
  1005.                 # 0=RESET opens read-only, REWRITE write-only
  1006.                 # 2=Open all files (text and binary) read/write
  1007.                 # default=1 in Turbo, 0 otherwise.
  1008.  
  1009. OpenMode                        # fopen mode string to use for Pascal open
  1010.                                 # statement.  Use a+ if that mode allows
  1011.                                 # seeking.  Default=build out of ANSI modes
  1012.  
  1013. FileNameFilter            # Name of a function to call which converts
  1014.                                 # a file name into a form usable by fopen;
  1015.                                 # if name must be changed this should return
  1016.                 # a pointer to a static buffer.
  1017.                                 # Not used for constant names.  "0"=no filter.
  1018.                 # default=P_trimname for Oregon/Berk, else 0
  1019.  
  1020. LiteralFiles            # 0=nameless rewrite(f) generates a temp file
  1021.                 # 1=nameless rewrite(f) uses "f" as file name
  1022.                 # 2=like 1 only if f appeared in "program" stmt
  1023.                 # default=2 for Berkeley, else 0.
  1024.  
  1025. LiteralFile            # A file variable which should be treated as
  1026. LiteralFile            # if LiteralFiles=1.  If LiteralFiles=2, files
  1027. LiteralFile            # in program header are added to this list.
  1028.  
  1029. StructFiles            # 1="file of x" produces a struct with buffer
  1030.                 #   and file-name included.
  1031.                 # 0 or default=use native FILE *'s, with
  1032.                 #   extra variables to hold buffer and name.
  1033.  
  1034. StructFile            # A file variable which should be treated as
  1035.                 # if StructFiles=1.
  1036.  
  1037. FullStrWrite                    # 1=full implementation of strwrite(s,i,j,...)
  1038.                                 # 0=ignore "j" variable and other issues
  1039.                                 # default=assign "j", assume not mid-string
  1040.                                 # 2=like default, but issue a warning
  1041.  
  1042. FullStrRead                     # 1 or default=full impl of strread using "%n"
  1043.                                 # 0=fake the value of "j"
  1044.                                 # 2=like default, but issue a warning
  1045.  
  1046. SetBits                         # Number of bits to use in each "long" of a set
  1047.                                 # default=LongSize if defined, else 32
  1048.  
  1049. DefaultSetSize                  # Default size of un-typed set constants;
  1050.                                 # default default=256 for VAX, else 8192
  1051.  
  1052. SmallSetConst                   # 0=write small-set literals like "1<<2|1<<4"
  1053.                                 # 1=write them like "0x14"
  1054.                                 # 2=write them like "20"
  1055.                                 # -1=do not use small-sets at all
  1056.                                 # default=-1 if SetBitsName defined, else 1
  1057.  
  1058. BigSetConst                     # (analogous to SmallSetConst for big sets)
  1059.  
  1060. LeLeRange                       # 1=write "j in [1..10]" as "1<=j && j<=10"
  1061.                                 # 0 or default=write ... as "j>=1 && j<=10"
  1062.  
  1063. UnsignedTrick                   # 1 or default=write "(unsigned)i <= 10"
  1064.                                 # 0=leave "i >= 0 && i <= 10" alone
  1065.  
  1066. UseIsAlpha                      # 1 or default=use "isalpha", "isdigit", etc.
  1067.                                 # 0=use plain comparisons
  1068.  
  1069. UseIsSpace                      # 1=convert "c==' '" to "isspace(c)"
  1070.                                 # 0 or default=leave it alone
  1071.  
  1072. UseStrncmp            # 1=use strncmp to compare packed array of char
  1073.                 # 0=use memcmp, same as for all other arrays
  1074.                 # default=1
  1075.  
  1076.  
  1077.  
  1078. # NAMING CONVENTIONS
  1079.  
  1080. CodeFileName      %Rs.c         # Name of .c output file for a program,
  1081.                                 # %s=input file name.
  1082.  
  1083. ModuleFileName    %_S.c         # Name of .c output file for a module,
  1084.                                 # %s=input file name, %S=module name.
  1085.  
  1086. HeaderFileName    %_S.h         # Name of .h output file for a module,
  1087.                                 # %s=input file name, %S=module name.
  1088.  
  1089. HeaderFileName2                 # If defined, different format to use when
  1090.                                 # generating #include's, otherwise same.
  1091.                                 # May be quoted as in IncludeFrom.
  1092.  
  1093. SelfIncludeName            # Format to apply after HeaderFileName to use
  1094.                                 # when a module includes its own header file.
  1095.  
  1096. LogFileName       %RS.log       # Name of log file name for -V mode.
  1097.                                 # %s=input file name, %S=output file name.
  1098.  
  1099. IncludeFileName                 # Format for translating Pascal include-file
  1100.                 # names.
  1101.  
  1102. SymCase                         # 1 or default=preserve case of Pascal idents,
  1103.                                 # 0=convert all Pascal idents to lower case
  1104.  
  1105. SymbolFormat                    # Format for C identifiers derived from
  1106.                                 # Pascal ones; default=%s.  The following
  1107.                                 # specific formats override this one.
  1108.                                 # %s=original Pascal identifier,
  1109.                                 # %S=name of parent module or procedure.
  1110.  
  1111. ConstFormat                     # Format for #define names derived from
  1112.                                 # Pascal consts.  (Often used: %^s)
  1113.  
  1114. ModuleFormat                    # Format for program and module names.
  1115.  
  1116. FunctionFormat            # Format for procedure and function names.
  1117.  
  1118. VarFormat            # Format for variable names.
  1119.  
  1120. TypeFormat            # Format for typedef names.
  1121.  
  1122. FieldFormat            # Format for fields of records; %S=record type.
  1123.  
  1124. EnumFormat            # Format for enumeration constants;
  1125.                 # %s=enum type name.  If not specified,
  1126.                 # default is ConstFormat, else SymbolFormat.
  1127.  
  1128. ReturnValueName   Result        # Return value holding variable; [%s=func name]
  1129. UnitInitName      _%s_init      # Turbo Pascal unit initializer; %s=unit name
  1130. HSymbolName       %s_H          # Name of "_H" symbol, if any; %s=unit name
  1131. GSymbolName       %s_G          # Name of "_G" symbol; [%s=unit name]
  1132. StringMaxName     MAX_%s        # VAR STRING hidden variable; %s=param name
  1133. ArrayMinName      %s_LOW    # Lower bound hidden variable; %s=param name
  1134. ArrayMaxName      %s_HIGH    # Upper bound hidden variable; %s=param name
  1135. CopyParName       %s_           # Alternate name for parameter %s
  1136. StaticLinkName    LINK          # Static link parameter name; [%s=func name]
  1137. LocalVarsStruct   LOC_%s        # Name of struct type for locals; %s=func name
  1138. LocalVarsName     V             # Name of struct var for locals; [%s=func name]
  1139. FwdStructName     %s            # Name of forward-used structs; %s=type name
  1140.                                 # (may simply be %s if you don't mind confusion)
  1141. EnumListName      %s_NAMES      # Name of array to hold names for enum %s
  1142. UnionName         UU            # Name of variant union
  1143. UnionPartName     %s            # Name of variant element; %s=tag value name
  1144. FakeStructName    _REC_%s    # Name of "temporary" structs; %s=base name
  1145. LabelName         _L%s          # Name of GOTO label; %s=label name
  1146. LabelVarName      _JL%s        # Name of GOTO label jmp_buf variable; %s=label
  1147. TempName          TEMP%s        # Name of general temporary vars; %s=unique id
  1148. DummyName         DUMMY%s       # Name of throwaway "dummy" vars; %s=unique id
  1149. WithName          WITH%s        # Name of WITH statement temp ptr; %s=unique id
  1150. ForName           FORLIM%s      # Name of FOR statement temp limit; %s=unique id
  1151. PtrName           PTR%s         # Name of NIL-checking temp ptr; %s=unique id
  1152. StringName        STR%s         # Name of temporary string vars; %s=unique id
  1153. SetName           SET%s         # Name of temporary set vars; %s=unique id
  1154. FNVarName         %s_NAME       # Name of file-name vars; %s=file var
  1155. FNSizeName        _FNSIZE       # Maximum length of file name (macro or integer)
  1156.  
  1157. AlternateName1    %s_           # Way to produce a second C symbol for a Pascal
  1158.                                 # symbol, where original symbol was %s.  Default
  1159.                                 # is to use AlternateName with %d=1.
  1160.  
  1161. AlternateName2                  # A second alternate for %s.
  1162.  
  1163. AlternateName                   # A %d'th name for %s.  %s and %d may appear in
  1164.                                 # either order.  Default is %d applications of
  1165.                                 # AlternateName1.
  1166.  
  1167. ExportSymbol                    # Name of exported symbol %s.  E.g.: "P_%s"
  1168.                                 # Default=%s, i.e., don't mess with the name.
  1169.                                 # %s is Pascal symbol name; %S is module name.
  1170.  
  1171. Export_Symbol                   # Exported-symbol format to be used when the
  1172.                                 # symbol %s contains an '_'.  Default=use
  1173.                                 # ExportSymbol format for every symbol.
  1174.  
  1175. Alias                           # Name of external proc or var; default="%s".
  1176.                                 # If does not contain a "%s", this simply
  1177.                                 # renames the next defined symbol of any kind.
  1178.  
  1179. Synonym                # Format:  Synonym name = newname
  1180. Synonym                # Treat the word "name" in the input file
  1181. Synonym                # exactly the same as the keyword or identifier
  1182. Synonym                # "newname".  If "newname" is omitted, ignore
  1183. Synonym                # the word "name" in the input.  For example:
  1184. Synonym                # "Synonym andthen = and" creates a keyword;
  1185. Synonym                # "Synonym allocmem = getmem" simulates a
  1186. Synonym                # built-in function "allocmem" which acts like
  1187. Synonym                # Turbo's "getmem"; "Synonym segment" ignores
  1188. Synonym                # the word "segment" in the input.
  1189.  
  1190. NameOf                          # Format:  NameOf name = newname
  1191. NameOf                          # Rename the specified symbol.  The name may
  1192. NameOf                          # be of the form "modulename.name" or
  1193. NameOf                          # "procname.name"; otherwise, all usages of
  1194. NameOf                          # the symbol are renamed.
  1195.  
  1196. VarMacro                        # Format:  VarMacro varname = C-expression
  1197. VarMacro                        # Must come before the declaration of variable
  1198. VarMacro                        # "varname".  Causes all references to the
  1199. VarMacro                        # variable to use the C expression instead.
  1200. VarMacro                        # In the expr, all C operators are supported;
  1201. VarMacro                        # all identifier names are used verbatim.
  1202. VarMacro                        # Also works for Turbo Pascal typed-constants.
  1203. VarMacro                        # Suppresses declaration of variable unless
  1204. VarMacro                        # "varname" appears in the C expression.
  1205. VarMacro                        # Simple algebra is used for assignments to
  1206. VarMacro                        # vars with expr definitions: if X -> 2*V+1,
  1207. VarMacro                        # then "X:=Y" translates to "V=(Y-1)/2".
  1208.  
  1209. ConstMacro                      # Analogous to VarMacro, but for constants and
  1210. ConstMacro                      # enumeration constants.  In an enum constant,
  1211. ConstMacro                      # if the C-expression is a single name the
  1212. ConstMacro                      # result is equivalent to Alias or NameOf.
  1213.  
  1214. FieldMacro                      # Format:  FieldMacro rec.field = C-expression
  1215. FieldMacro                      # where "rec" is a record type name which
  1216. FieldMacro                      # also appears in the C-expression.  For
  1217. FieldMacro                      # example: FieldMacro obj.foo = bar(obj) causes
  1218. FieldMacro                      # the field "foo" of record type "obj" to be 
  1219. FieldMacro                      # referenced through the function or macro
  1220. FieldMacro                      # "bar", rather than using dot notation.
  1221.  
  1222. FuncMacro                       # Format:  FuncMacro foo(a,b,c) = C-expression
  1223. FuncMacro                       # where "a", "b", "c" are arbitrary arg names
  1224. FuncMacro                       # also appearing in the C-expression.  "Foo"
  1225. FuncMacro                       # is a procedure or function defined or to be
  1226. FuncMacro                       # defined in the code, or predefined in Pascal.
  1227. FuncMacro                       # E.g.: FuncMacro PtInRect(p,r) = PtInRect(p,&r)
  1228. FuncMacro                       # causes "r" to be treated as a VAR param even
  1229. FuncMacro                       # though otherwise it would be passed by value.
  1230.  
  1231. WarnMacros                      # 1=warn if Var/Const/Field/FuncMacro not used
  1232.                                 # 0 or default=don't care.
  1233.  
  1234. SpecialMalloc                   # Format:  SpecialMalloc x.y.z = funcname
  1235. SpecialMalloc                   # where x is a type name, and y and z are
  1236. SpecialMalloc                   # optional variant tags for records.  The
  1237. SpecialMalloc                   # statement "new(p,y,z)" where p is a pointer
  1238. SpecialMalloc                   # to x is converted to p = funcname().
  1239.  
  1240. SpecialFree                     # Like SpecialMalloc, but defines a special
  1241. SpecialFree                     # function for freeing things of a given type.
  1242.  
  1243. SpecialSizeOf                   # Like SpecialMalloc, but defines a name or
  1244. SpecialSizeOf                   # other integer-valued C expression which is
  1245. SpecialSizeOf                   # the size of an object of the given type.
  1246.  
  1247. AvoidName         getc          # If any of these names appear in the code,
  1248. AvoidName         putc          # use an alternate name so as to avoid
  1249. AvoidName         getchar       # library conflicts.
  1250. AvoidName         putchar
  1251. AvoidName         feof          # These are typically macro names whose use
  1252. AvoidName         ferror        # would be disasterous under any
  1253. AvoidName         clearerr      # circumstances.
  1254. AvoidName         fileno
  1255. AvoidName         BUFSIZ    NULL    EOF
  1256. AvoidName         stdin     stdout  stderr
  1257. AvoidName         true false assert
  1258. AvoidName         Anyptr Void Char PP PV
  1259. AvoidName         Signed Const Volatile Register Static Local Inline
  1260. AvoidName         cdecl far near huge
  1261. AvoidName         isalpha isupper islower isdigit isxdigit isspace ispunct
  1262. AvoidName         isalnum isprint isgraph iscntrl isascii toascii
  1263. AvoidName         toupper tolower
  1264. AvoidName      LINK SEXT
  1265.  
  1266. AvoidGlobalName   fopen         # These names should be avoided in global
  1267. AvoidGlobalName   fclose        # contexts, but they are okay as local names.
  1268. AvoidGlobalName   fseek
  1269. AvoidGlobalName   exit      main
  1270. AvoidGlobalName   strcpy    strcat
  1271. AvoidGlobalName   printf    fprintf sprintf
  1272. AvoidGlobalName   scanf     fscanf  sscanf
  1273. AvoidGlobalName   malloc    realloc free
  1274. AvoidGlobalName   y0 y1 yn j0 j1 jn    # from math.h -- urghhh!
  1275.                                 # ... we should define lots more of these!
  1276.  
  1277. WarnName                        # A similar list of names to leave alone, but
  1278. WarnName                        # generate warnings for if they are defined.
  1279.  
  1280. WarnNames                       # 1=All vars, consts, types, procs, fields
  1281.                                 #   defined after this point should generate
  1282.                                 #   warnings if used.
  1283.                                 # 0 or default=no warnings for future names
  1284.  
  1285. WarnLibrary                     # A list of C functions, any calls to which
  1286. WarnLibrary                     # should generate warnings.
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292. # TARGET LIBRARY
  1293.  
  1294. QuoteIncludes                   # 1 or default=write #include "foo.h"
  1295.                                 # 0=write #include <foo.h>
  1296.  
  1297. IncludeFrom                     # Names of modules which need special
  1298. IncludeFrom                     # #include file names.  Formats:
  1299. IncludeFrom                     # IncludeFrom foo bar.h   => #include <bar.h>
  1300. IncludeFrom                     #   if QuoteIncludes=0 else #include "bar.h"
  1301. IncludeFrom                     # IncludeFrom foo <bar.h> => #include <bar.h>
  1302. IncludeFrom                     # IncludeFrom foo "bar.h" => #include "bar.h"
  1303. IncludeFrom                     # IncludeFrom foo         => no #include at all
  1304. # ### BK
  1305. #IncludeFrom iodeclarations <p2c/iodecl.h>
  1306. IncludeFrom iodeclarations <iodecl.h>
  1307. IncludeFrom system
  1308. IncludeFrom printer
  1309. IncludeFrom dos
  1310. IncludeFrom crt
  1311.  
  1312. ImportFrom                      # Names of modules whose import text
  1313. ImportFrom                      # resides in the specified files.
  1314. ImportFrom                      # E.g.: ImportFrom  mymod  /usr/me/mymod.imp
  1315. ImportFrom                      # These are the Turbo Pascal standard units
  1316. ImportFrom  system         %H/turbo.imp
  1317. ImportFrom  printer       %H/turbo.imp
  1318. ImportFrom  dos           %H/turbo.imp
  1319. ImportFrom  crt           %H/turbo.imp
  1320. ImportFrom  graph          %H/turbo.imp
  1321.  
  1322. ImportDir   %_s.pas             # Search list of other places to look for
  1323. ImportDir   %_s.text            # the module named %s.
  1324. ImportDir   %H/%_s.imp
  1325.  
  1326. IncludeDir  %_s                 # Search list of places to look for the
  1327. IncludeDir  %_s.pas             # Pascal include file %s.
  1328. IncludeDir  %_s.text
  1329. IncludeDir  %H/%_s.pas
  1330.  
  1331. LibraryFile %H/system.imp       # Names of import-text files to search
  1332. LibraryFile                     # always (as if "-s name" were used).
  1333.  
  1334. StructFunction    sprintf       # Names of "structured functions".
  1335. StructFunction    memcpy  memmove
  1336. StructFunction    strcpy    strsub   strrtrim    strrpt
  1337. StructFunction    P_addset  P_addsetr  P_remset
  1338.  
  1339. StrlapFunction    P_setunion    # Names of "structured functions" which
  1340. StrlapFunction    P_setint      # allow duplication of their arguments.
  1341. StrlapFunction    P_setdiff
  1342. StrlapFunction      P_setxor
  1343. StrlapFunction    P_expset    strlower   strupper   strpad
  1344.  
  1345. NoSideEffects     strcmp memcmp # Names of functions which have absolutely
  1346. NoSideEffects                   # no side effects on their arguments or
  1347. NoSideEffects                   # other global state of the program.
  1348.  
  1349. Deterministic     abs sin cos   # Names of functions which satisfy all
  1350. Deterministic                   # requirements for NoSideEffects, and
  1351. Deterministic                   # additionally compute their result
  1352. Deterministic                   # deterministically (and quickly), without
  1353. Deterministic                   # any sort of hidden dependencies.
  1354.                                 # (need many more in this list!)
  1355.  
  1356. LeaveAlone                      # Names of library functions which should
  1357. LeaveAlone                      # be left alone, rather than translated
  1358. LeaveAlone                      # into C equivalents.  (For example, prevents
  1359. LeaveAlone                      # converting fwritebytes into C fwrite.)
  1360.  
  1361. # ### BK
  1362. #HeaderName        <p2c/p2c.h>   # Name of standard p2c header file
  1363. HeaderName         <p2c.h>      # Name of standard p2c header file
  1364.  
  1365. UCharName         uchar         # Name of a typedef for "unsigned char";
  1366.                                 # default="char" or "unsigned char".
  1367.  
  1368. SCharName         schar         # Name of a typedef for "signed char";
  1369.                                 # default="char" or "signed char".
  1370.  
  1371. BooleanName       boolean       # Name of a typedef for booleans; default=char.
  1372.  
  1373. TrueName          true          # Name of a boolean "true" constant (optional)
  1374. FalseName         false         # Name of a boolean "false" constant (opt.)
  1375.  
  1376. NullName          NULL          # Name of a NULL pointer constant
  1377.  
  1378. ProcTypeName      _PROCEDURE    # Name of procedure-pointer typedef
  1379.  
  1380. EscapeCodeName    P_escapecode  # Names of error-handling variables
  1381. IOResultName      P_ioresult
  1382.  
  1383. ArgCName          P_argc        # Name of global copy of argc
  1384. ArgVName          P_argv        # Name of global copy of argv
  1385.  
  1386. MainName          PASCAL_MAIN   # Name of program setup function
  1387.  
  1388. EscapeName        _Escape       # Name of error-generation function
  1389.  
  1390. EscIOName         _EscIO        # Name of I/O-error-generation function
  1391.  
  1392. CheckIOName       _CHKIO        # Name of I/O-error-checking function
  1393.  
  1394. SetIOName         _SETIO        # Name of I/O-error-setting function
  1395.  
  1396. FileNotFoundName  FileNotFound  # Name or number of "File Not Found" ioresult
  1397.  
  1398. FileNotOpenName   FileNotOpen   # Name or number of "File Not Open" ioresult
  1399.  
  1400. FileWriteErrorName FileWriteError # Name of num of "File Write Error" ioresult
  1401.  
  1402. BadInputFormatName BadInputFormat # Name or num of "Bad Input Format" ioresult
  1403.  
  1404. EndOfFileName     EndOfFile     # Name or number of "End of File" ioresult
  1405.  
  1406. OutMemName        _OutMem       # Name of out-of-memory error function
  1407.  
  1408. CaseCheckName      _CaseCheck    # Name of case-out-of-range error function
  1409.  
  1410. NilCheckName      _NilCheck    # Name of nil-pointer error function
  1411.  
  1412. SetBitsName                     # Name of macro defined equal to SetBits
  1413.                                 # default=compile SetBits in-line
  1414.  
  1415. SprintfValue                    # 1=sprintf() returns its first argument
  1416.                                 # 0=sprintf() returns a character count
  1417.                                 # default=don't know (unless AnsiC=1)
  1418.                                 # -2=don't know regardless of AnsiC
  1419.                                 # 2=don't use sprintf in expressions
  1420.  
  1421. SprintfName                     # If SprintfValue != 1, this is the name
  1422.                                 # of a sprintf-like function which returns
  1423.                                 # its first argument.  Default=no such
  1424.                                 # function exists.
  1425.  
  1426. MemCpyName                      # Methods known: "memcpy", "bcopy"
  1427.                                 # default=according to Target, default "memcpy"
  1428.  
  1429. RoundName                       # Name of function or macro for rounding
  1430.                                 # a real to an integer.  Precede name with
  1431.                                 # a '*' if it is a macro that evaluates its
  1432.                                 # arguments more than once.  Default=do it
  1433.                                 # by hand.
  1434.  
  1435. DivName                # Name of function or macro for Pascal integer
  1436.                 # division where numerator may be negative.
  1437.                 # Use '*' if macro; default=use regular '/'.
  1438.  
  1439. ModName                # Name of function or macro for Pascal integer
  1440.                 # modulo where numerator may be negative.
  1441.                 # Use '*' if macro; default=use regular '%'.
  1442.  
  1443. RemName                # Name of function or macro for VAX Pascal
  1444.                 # REM where numerator or denominator may be
  1445.                 # negative.  Use '*' if macro; default=use MOD.
  1446.  
  1447. AbsName           labs          # Name of function for computing ABS of a
  1448.                                 # "long" value.  Precede with '*' if a
  1449.                                 # macro.  Default=by hand, or "labs" in AnsiC.
  1450.  
  1451. OddName                         # Name of a macro for computing ODD of an
  1452.                                 # integer.  Default=x&1.
  1453.  
  1454. EvenName                        # Name of a macro for computing NOT ODD of
  1455.                                 # an integer.  Default=!odd(x).
  1456.  
  1457. SwapName          _swap         # Name of Turbo-like swap() function.
  1458.  
  1459. StrCpyLeft                      # 1 or default=strcpy(s1,s2) works even if
  1460.                                 # s1 and s2 overlap, provided s1 <= s2.
  1461.                                 # 0=strcpy(s1,s2) does not allow overlap.
  1462.  
  1463. StrCICmpName      strcicmp      # Name of a strcicmp-like function; no default
  1464. StrSubName        strsub        # Name of a strsub-like function; no default
  1465. StrPosName        strpos2       # Name of a strpos2-like function; no default
  1466. StrDeleteName     strdelete     # Name of a strdelete-like function; no default
  1467. StrInsertName     strinsert     # Name of a strinsert-like function; no default
  1468. StrMoveName      strmove    # Name of a strmove-like function; no default
  1469. StrLTrimName      strltrim      # Name of a strltrim-like function; no default
  1470. StrRTrimName      strrtrim      # Name of a strrtrim-like function; no default
  1471. StrRptName        strrpt        # Name of a strrpt-like function; no default
  1472. StrPadName        strpad        # Name of a pad-like function; no default
  1473.  
  1474. MallocName        Malloc        # Name of a malloc-like function; default=malloc
  1475. FreeName          Free          # Name of a dispose-like function; default=free
  1476. FreeRvalueName    FreeR         # Name of a free-like function; default=free
  1477.  
  1478. RandRealName      _randreal     # Name of a Turbo "random" function; no default
  1479. RandIntName       _randint      # Name of a Turbo "random()" function; no def
  1480. RandomizeName     _randomize    # Name of a Turbo "randomize" procedure
  1481.  
  1482. SkipSpaceName     _skipspaces   # Name of a Turbo seekeof/seekeoln skipper
  1483.  
  1484. ReadlnName                      # Name of function or macro to skip past eoln.
  1485.                                 # Special names: fgets=use fgets with dummy var
  1486.                                 #                scanf=use scanf/fscanf
  1487.                                 # Default=use whichever method works out best
  1488.  
  1489. FreopenName                     # Name of function or macro that acts like
  1490.                                 # freopen(n,m,f), but if f==NULL acts like
  1491.                                 # fopen(n,m).  Default=do it by hand.
  1492.                                 # "fopen"=assume not reopening files.
  1493.                                 # "fclose"=fclose first, then fopen.
  1494.  
  1495. EofName           P_eof         # Name of "feof" with Pascal semantics.
  1496. EolnName          P_eoln        # Name of "eoln" function.
  1497. FilePosName       ftell         # Name of "filepos" function.
  1498. MaxPosName        P_maxpos      # Name of "maxpos" function.
  1499.  
  1500. SetUnionName      P_setunion    # Name of a set "+" function; no default
  1501. SetIntName        P_setint      # Name of a set "*" function; no default
  1502. SetDiffName       P_setdiff     # Name of a set "-" function; no default
  1503. SetXorName        P_setxor      # Name of a set "/" function; no default
  1504. SetInName         P_inset       # Name of a set "IN" function; no default
  1505. SetAddName        P_addset      # Name of a set "a:=a+[x]" function; no default
  1506. SetAddRangeName   P_addsetr     # Name of a set "a:=a+[x..y]" function; no def
  1507. SetRemName        P_remset      # Name of a set "a:=a-[x]" function; no default
  1508. SetEqualName      P_setequal    # Name of a set "=" function; no default
  1509. SubSetName        P_subset      # Name of a set "<=" function; no default
  1510. SetCopyName       P_setcpy      # Name of a set ":=" function; no default
  1511. SetExpandName     P_expset      # Name of small-set-to-set expander; no default
  1512. SetPackName       P_packset     # Name of set-to-small-set packer; no default
  1513.  
  1514. SignExtendName    SEXT          # Name of macro to sign-extend a number.
  1515.  
  1516. GetBitsName       *P_getbits_%s # Name of family of array-unpacking functions.
  1517.                                 # Precede name with '*' if a macro.  %s will
  1518.                                 # expand to S (for signed) or U (for unsigned),
  1519.                                 # followed by B (big array) or S (small array).
  1520.  
  1521. PutBitsName       *P_putbits_%s # Name of family of functions which 'OR' a
  1522.                                 # value into an element of a packed array.
  1523.                                 # %s expands to S or U, followed by B or S.
  1524.                                 # Use '*' if macro.  Default=use StoreBits.
  1525.  
  1526. ClrBitsName       *P_clrbits_%s # Name of family of functions which zero an
  1527.                                 # element of a packed array.  %s expands
  1528.                                 # to B or S only.  Use '*' if macro.
  1529.                                 # Default=use StoreBits.
  1530.  
  1531. StoreBitsName                   # Name of a family of functions or macros
  1532.                                 # which act just like PutBits, but overwrite
  1533.                                 # the array element rather than OR'ing.
  1534.                                 # Default=use ClrBits followed by PutBits.
  1535.                                 # At least StoreBits or both PutBits and
  1536.                                 # ClrBits must be defined.
  1537.  
  1538. DeclBufName        FILEBUF      # Name of a macro for declaring the file
  1539.                 # buffer for a file using GET and PUT.
  1540.  
  1541. DeclBufNCName      FILEBUFNC    # Name of a DeclBufName-like macro with two
  1542.                                 # arguments (no storage class), in case your
  1543.                 # compiler can't handle null macro arguments.
  1544.  
  1545. BufferedFile            # Names of file variables that use GET/PUT/^
  1546. BufferedFile            # notation instead of READ/WRITE notation.
  1547. BufferedFile            # Mostly useful for globals; locals are
  1548. BufferedFile            # detected automatically.  May be a var name,
  1549. BufferedFile            # field name, proc.var, type.field, or
  1550. BufferedFile            # "1"=use buffers for all files.
  1551.  
  1552. UnBufferedFile            # Names of files that will not be buffered,
  1553. UnBufferedFile            # even if they would otherwise be.  Syntax
  1554. UnBufferedFile            # same as for BufferedFile.
  1555.  
  1556. ResetBufName       RESETBUF     # Name of a macro for setting up a file
  1557.                 # buffer in "read" mode.  (For RESET.)
  1558.  
  1559. SetupBufName       SETUPBUF    # Name of a macro for setting up a file
  1560.                 # buffer in read/write mode.  (For OPEN, SEEK.)
  1561.  
  1562. GetFBufName        GETFBUF      # Name of a macro for accessing a file
  1563.                                 # buffer using "file^" notation.
  1564.  
  1565. GetName            GET          # Name of a macro for advancing
  1566.                                 # to the next element of an input file.
  1567.  
  1568. PutFBufName        PUTFBUF      # Name of a macro for storing an element
  1569.                                 # of a file using "file^" notation.
  1570.  
  1571. PutName            PUT          # Name of a macro for advancing
  1572.                                 # to the next element of an output file.
  1573.  
  1574. CharGetFBufName    P_peek       # A special GetFBuf for text and files of char.
  1575.  
  1576. CharGetName        getc         # A special Get for text and files of char.
  1577.  
  1578. CharPutFBufName    CPUTFBUF     # A special PutFBuf for text and files of char.
  1579.  
  1580. CharPutName        CPUT         # A special Put for text and files of char.
  1581.  
  1582. ArrayGetFBufName   AGETFBUF    # A special GetFBuf for files of arrays.
  1583.  
  1584. ArrayGetName            # A special Get for files of arrays.
  1585.  
  1586. ArrayPutFBufName   APUTFBUF    # A special PutFBuf for files of arrays.
  1587.  
  1588. ArrayPutName            # A special Put for files of arrays.
  1589.  
  1590. EofBufName       BUFEOF       # Name of a macro for "eof" of a buffered file.
  1591.  
  1592. FilePosBufName     BUFFPOS    # Name of a macro for buffered "filepos".
  1593.  
  1594.  
  1595.  
  1596. # CHECKING
  1597.  
  1598. CaseCheck                       # 1=check CASE statements without OTHERWISE
  1599.                                 # 0 or default=skip CASE stmt if out of range
  1600.                                 # 2=according to $range$ directives
  1601.  
  1602. ArrayCheck                      # 1=check array bounds
  1603.                                 # 0 or default=do not check array bounds
  1604.                                 # 2=according to $range$ directives
  1605.                                 #   (not yet implemented)
  1606.  
  1607. NilCheck                        # check pointer dereferences (0, 1, or 2)
  1608.  
  1609. RangeCheck                      # enable other range checking (0, 1, or 2):
  1610.                                 #   string indexing, ...?
  1611.                                 #   (not yet implemented)
  1612.  
  1613. MallocCheck                     # 1=check if malloc returns NULL
  1614.                                 # 0 or default=assume malloc never returns NULL
  1615.                                 # (often used with MallocName; see above)
  1616.  
  1617. CheckFileOpen                   # 1 or default=check for errors during open,
  1618.                                 # 0=assume file opens successfully
  1619.                 # 2=check only when $iocheck off$ or {$I-}
  1620.  
  1621. CheckFileIsOpen                 # 1=check for "file not open" error,
  1622.                                 # 0 or default=eof, etc., assume file is open
  1623.                 # 2=check only when $iocheck off$ or {$I-}
  1624.  
  1625. CheckFileWrite                  # 1=check for errors during write
  1626.                                 # 0=ignore write errors
  1627.                 # 2 or default=only when $iocheck off$ or {$I-}
  1628.  
  1629. CheckReadFormat                 # 1=check for "bad format" errors during read
  1630.                                 # 0=ignore read format errors
  1631.                 # 2 or default=only when $iocheck off$ or {$I-}
  1632.  
  1633. CheckFileEOF                    # 1=check for "past EOF" errors reading files
  1634.                                 # 0=ignore file EOF errors
  1635.                 # 2 or default=only when $iocheck off$ or {$I-}
  1636.  
  1637. CheckStdinEOF                   # 1=check for "past EOF" errors reading stdin
  1638.                                 # 0=ignore stdin EOF errors
  1639.                 # 2 or default=only when $iocheck off$ or {$I-}
  1640.  
  1641. CheckFileSeek                   # 1=check for errors during seek
  1642.                                 # 0=ignore seek errors
  1643.                 # 2 or default=only when $iocheck off$ or {$I-}
  1644.  
  1645.  
  1646.  
  1647.  
  1648. # ### BK
  1649. #Include %H/loc.p2crc            # Include any local modifications to this file.
  1650.  
  1651. Include %H/loc.p2c            # Include any local modifications to this file.
  1652.  
  1653.  
  1654. # End of p2crc
  1655.