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