# Standard configuration file for "p2c" 1.20, the Pascal to C translator # Copyright (C) 1989, 1990, 1991 Free Software Foundation. # Author: Dave Gillespie. # Author's address: daveg@csvax.caltech.edu; 256-80 Caltech/Pasadena CA 91125. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation (any version). # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # Note that all options except "Naming Conventions" and certain library # functions may be left blank or omitted entirely; the defaults are intended # to encompass a wide variety of "reasonable" implementations of C. # Option names are case-insensitive. # The single-valued options can all be overridden by a later line in # this file, or in your own "p2crc" or ".p2crc" file, or in comments # in the input file. To override an explicit value with the original # default, use the word "def". # Some options define printf-like format strings. These support all the # usual formatting codes, with additional features for string formatting. # The following extra "flag" characters are defined for %s: # _ Convert to lower case # ^ Convert to upper case # _^ Convert to lower except capitalize first char and after non-letters # ~ Insert '_' between lower case and following upper case letters # ! Remove '_' and other non-alphanumeric characters # ? Negates _ and ^ flags if name contains mixed case # R Remove file name suffix (e.g., "foo.pas" => "foo") # / Remove path name (prefix ending in /, \, ], or :) # Also, where a format includes several "%" arguments, they may # appear in either order in the string. When two string args are # involved, "%s" will refer to one and "%S" to the other. The # notation %H expands to the p2c home directory name, as in "%H/p2crc". # Many options simply refine defaults controlled by the Language, # AnsiC, and Target options. Debug # Level of debugging output TokenTrace # Additional debugging output Include # Additional p2crc files to be included Include # %s=program name CopySource # 1=copy Pascal source code into output # file, #ifdef'd out. # INPUT LANGUAGE Language # Known languages: # HP (default; Pascal Workstation version) # MODCAL (HP's advanced Pascal) # HP-UX (almost same as HP) # TURBO (vers 5.0 for IBM PC) # OREGON (Oregon Software Pascal-2 V2.1) # VAX (VAX/VMS Pascal) # MODULA (Modula-2) # UCSD (almost same as TURBO) # MPW (MPW Pascal 2.0 for the Mac) # BERK (SUN Berkeley Pascal) Modula2 # 1=Use modula-2 block structure (IF-END) # 0=Use Pascal block structure (IF-BEGIN-END) # default=1 if Language=MODULA, 0 for others Integer16 # 1=assume Pascal integers are 16 bits # 0=assume Pascal integers are 32 bits # 2=use native C "int" for Pascal "integer" # default=0 for HP/Oregon/VAX, 1 for Turbo/MPW DoubleReals # 1=convert Pascal real to C double # 0=convert Pascal real to C float # default=1 for Turbo and HP-UX, 0 for HP UnsignedChar # 1=Pascal char must be unsigned # 0=Pascal char must be signed # 2=doesn't matter; use native C "char" # default=unsigned, but use native "char" NeedSignedByte # 1=use "signed char" even if not available # 0 or default=use "short" if not sure PascalEnumSize # Size in BITS of a Pascal enum type. # Default=according to Language. NestedComments # 1=Pascal comments may be nested # 2=comments don't nest, but { must match } # 0=comments are unnested, unmatched # default=0 in HP/MODCAL, 2 in Turbo ExternWords external # Words analogous to "forward" for declaring ExternWords extern # procedures or functions external. ExternWords fortran CExternWords nonpascal # Words like ExternWords but for which any CExternWords # leading and/or trailing "_" is removed CExternWords # from the Pascal function/variable names. ImportAll # 1=read all of each imported file, in case # file contains several modules/units # 0=read only interface text of first module # default=1 in HP/MODCAL, 0 in others ImplModules # 1=MODULE starts a block like PROGRAM. # 0=MODULEs have export/implement sections. PascalSignif # Number of significant characters in Pascal # identifiers; default=unlimited PascalCaseSens # 1=Pascal idents are case-sensitive, # keywords and predef words are u.c. or l.c. # 2=case-sens, keywords and predef words u.c. # 3=case-sens, keywords and predef words l.c. # 0=not case-sensitive # default=2 in Modula-2, otherwise 0 DollarIdents # 1='$' is legal in Pascal and C identifiers # 2=convert '$' (and '%') in idents into C '_' # 0='$' is for HP directives/Turbo hex consts # default=1 for Oregon & VAX Pascal only IgnoreNonAlpha # 1=ignore _, $, % in Pascal identifiers # 0=retain them (subject to DollarIdents) # default=1 for UCSD, 0 otherwise InputTabSize # Number of characters per tab stop in input # file, for reading Pascal indentation. # Default=8. # TARGET LANGUAGE AnsiC # 1=use all Ansi C features and definitions # 2=use GNU C language extensions # 0=use only original K&R features # default=use "modern" Unix-like C C++ # 1=use C++ extensions, # 0=use straight C, # default=generate code that works on either Void* # 1=use "void *" for anyptr's # 0=use "char *" for anyptr's # default=1 if AnsiC=1 or C++=1 HasSignedChar # 1="signed char" and "signed int" are legal # 0="signed ..." is not supported # default=1 if AnsiC=1 CastNull # 1=must type-cast NULL into specific types # 0 or default=don't cast NULL CopyStructs # 0=no implicit copying of structs allowed # 1=can assign but not pass to/from funcs # 2=struct assignment and parameters only # 3=can assign, pass, and return structs # default=3 unless AnsiC=0 VariableArrays # 1=allows variable-length arrays # 0=array sizes must be constant # default=1 for Gnu C, 0 otherwise InitPACStrings # 1=can init char array with full-sized string # 0=string literal initializer always has \0 # default=1 if AnsiC=1, else 0 ReUseFieldNames # 1=can use same field name in many structs # 0=field names must be globally unique # default=1 UseVExtern # 1 or default=assume strict ANSI linkage # 0=UNIX-like "common" variable linkage UseAnyptrMacros # 1=use Anyptr, Signed, Static, etc. macros # 0=use true C constructs as specified above # 2=use Static, Local, Char only # default=2 if AnsiC=1, else 1 UsePPMacros # 1=use PP and PV macros for prototypes # 0=do not use these macros for prototypes # 2=use them only for external/forward # default=0 if AnsiC=1, else 2 # TARGET MACHINE Target # machine name, if any. Specify this or answer # the following questions to tailor the output # program to a particular architecture. # Machines known: # HPUX-300, SUN-68K, BSD-VAX, BSD, SYSV SignedChar # 1=char is signed, 0=char is unsigned, # default=don't know SignedField # 1="int" bit-fields in structs are signed, # 0="int" bit-fields are unsigned, # default=don't know but probably signed # 2=don't know, be paranoid SignedShift # 1=">>" does arithmetic (signed) shift, # 0=">>" does logical shift even for ints, # default=don't know but probably signed # 2=don't know, be paranoid CharSize # size in bits of a char, default at least 8 ShortSize # size in bits of a short, default at least 16 IntSize # size in bits of an int, default at least 16 LongSize # size in bits of a long, default at least 32 PtrSize # size in bits of a pointer. If not all # pointers have same size, must leave blank. FloatSize # size in bits of a float DoubleSize # size in bits of a double EnumSize # size in bits of an enum Size_T_Long # 1=Ansi "size_t" type is long # 0=Ansi "size_t" type is int # default=don't know, probably long # BRACES AND PLACEMENT OF STATEMENTS NullStmtLine # 1=put null statements on their own lines, # 0 or default=write "while (x) ;" BracesAlways # 1=use {braces} always, # 0=never unless needed, # default=use nice braces BraceLine # 1=always put open braces on a new line, # 0=never put open brace on new line if poss, # default=0 for sub-stmts, 1 for func bodies BraceCombine # 1=don't put newline after '{' if possible # 0 or default=open brace always ends a line BraceElse # 1=put { } on both "then" and "else" if would # put them on either, default=independent BraceElseLine # 0 or default=write "} else {" # 1=write "}\nelse {", 2=write "} else\n{" # 3=write "}\nelse\n{" ElseIf # 1=always write "else if" on same line # 0=always write "else\nif" # default=use "else if" only when input used it NewLineFuncs # 1=write "static int\nfoo()" in function defs # 0 or default=write "static int foo()" # INDENTATION PhysTabSize # Spacing of tab-character tabs; default=8. # 0=do not use tabs in output file. Indent # Basic indentation delta; default=+2. # Indentation deltas specify an amount by which # to change indentation; +n or -n specifies a # relative adjustment, n specifies an absolute # amount of indentation where 0=far left. BlockIndent # Indentation delta for statements enclosed # in braces; applied after Indent. Default=+0. SwitchIndent # Indentation delta for switch statement body; # applied after Indent. Default=+0. CaseIndent # Indentation delta for case labels; applied # after Indent and SwitchIndent. Default=-2. LabelIndent # Indentation delta for statement labels. # Default is 0 (absolute). OpenBraceIndent # Indentation delta for the open brace that # begins a block. Used only if the brace is # on its own line. Default=+0. CloseBraceIndent # Indentation delta for the close brace that # ends a block. Default=+0. FuncArgIndent # Indentation delta for function arguments. # Default is 0. BodyIndent # Indentation delta for the body of a function; # applied after Indent. Default=+0. FuncOpenIndent # Indentation delta for the open brace that # begins a function body. Default=+0. FuncCloseIndent # Indentation delta for the close brace that # ends a function body. Default=+0. StructIndent # Indentation delta for "struct" declarations; # applied after Indent. Default=+0. StructInitIndent # Indentation delta for struct and array # initializers; applied after Indent. # Default=+0. ExtraInitIndent # Indentation delta for nested struct/array # initializers; not combined with Indent. # Default=+2. ExtraIndent # Extra indentation for broken lines if # indenting by nesting order is too much; # default=+2: # long_function_name(arguments, # more_arguments); # 1234 BumpIndent # Extra indentation for subexpressions which # coincide with next statement's indentation # in a visually confusing way: # if (foo && # bar) <- this gets BumpIndent # spam(); # May be pos, neg or zero. Default=+1. ConstIndent # Target column for #defines; default=24. # A positive relative value (e.g., +3) means # to use that many spaces always rather than # tabbing to a fixed column. A value of the # form, e.g., *5 means to tab to the next # multiple-of-5 column. CommentIndent # Target column (as in ConstIndent) for # comments trailing statements. Another # syntax is, e.g., "-80" which means to # right-justify comments on an 80-column line. # Default=+3. BraceCommentIndent # Indentation for trailing comments on # braces. Default=+2. DeclCommentIndent # Target column for comments trailing # declarations. Default=CommentIndent. CommentOverIndent # If line is too long to indent nicely by # CommentIndent or BraceCommentIndent, start # a new line and indent according to this # indentation, either n, +n, or -n. Zero means # never to start a new line. Default=+4. MinSpacing # Minimum spacing allowed for things like # absolute ConstIndent spacing. Default=2, # i.e., ConstIndent will always insert at # least two spaces, even on long lines. MinSpacingThresh # If specified, threshhold below which # MinSpacing is used. (Default=MinSpacing.) # For example, if MinSpacingThresh=1: # foo /*comment*/ (CommentIndent=5 used) # spam /*comment*/ (CommentIndent=5 used) # thing /*comment*/ (MinSpacing=2 used) # LINE BREAKING LineWidth # Target max output line width; default=78. MaxLineWidth # Absolute max output line width; default=90. OverWidePenalty # Penalty for line lengths > LineWidth. # Default=25. (Penalties are real numbers.) OverWideExtraPenalty # Additional penalty multiplied by # number-of-chars-too-long squared. # Default=1. Total over-wide penalty is # OW = max(OWP + N^2*OWEP, 0). EarlyBreakPenalty # Penalty for breaking at early break-points # among those at a given nesting level. # Default=1. If N=number of possible break # points before this one in this nesting, # EB = -N*EBP. CommaBreakPenalty # Penalty for breaking lines after a comma. # Default=10. CommaBreakExtraPenalty # Additional penalty multiplied by nesting # level of (number of parens enclosing) comma. # Default=5. Total comma-break penalty is # B = max(P + CBP + N*CBEP, 1.0) # where # P = OW + EB + SIP + IP (defined elsewhere) SpecialArgBreakPenalty # Penalty for breaking lines after a comma # which follows a "special" argument, such # as the format string of a printf. Default=5. OpBreakPenalty # Penalty for breaking at an operator (like +). # Analogous to CommaBreakPenalty; default=25. OpBreakExtraPenalty # Additional penalty multiplied by nesting # level of the operator. Default=20. LogBreakPenalty # Penalty for breaking at an && or || operator. # Default=5. LogBreakExtraPenalty # Additional penalty multiplied by nesting # level of the logical operator. Default=1. RelBreakPenalty # Penalty for breaking at a relational # operator. Default=20. RelBreakExtraPenalty # Additional penalty multiplied by nesting # level of the relational op. Default=10. ExHyphenPenalty # Additional penalty for breaking a line just # after a minus sign. Default=10. :-) AssignBreakPenalty # Penalty for breaking at an assignment # operator. Default=50. AssignBreakExtraPenalty # Additional penalty multiplied by nesting # level of the assignment. Default=30. QMarkBreakPenalty # Penalty for breaking lines at the "?" of # a "?:" operator. Default=50. (Colons # get the regular OpBreakPenalty.) QMarkBreakExtraPenalty # Additional penalty multiplied by nesting # level of the "?:" operator. Default=30. ParenBreakPenalty # Penalty for breaking after an open paren # in a function call: # long_function_name( # very_long_argument); # Default=25. ParenBreakExtraPenalty # Additional penalty multiplied by nesting # level of the parentheses. Default=10. MoreBreakPenalty # Adjustment to CommaBreakPenalty, etc., # if it is the second or later break in the # same nesting. (E.g., if two or more commas # of a function call are broken.) Default=-5. MoreBreakExtraPenalty # Adjustment to CommaBreakExtraPenalty, etc., # as in MoreBreakPenalty. Default=-3. WrongSidePenalty # Extra penalty for breaking on the less # preferred side of an operator (see BreakArith # et al below). Default=10. ExtraIndentPenalty # Penalty for indenting by ExtraIndent instead # of according to nesting order. If negative, # -EIP is penalty for *not* using ExtraIndent. # Default=30. BumpIndentPenalty # Penalty for using BumpIndent for identation. # Default=10. NoBumpIndentPenalty # Penalty for not using BumpIndent when it # ought to have been used. Default=25. IndentAmountPenalty # Penalty for indentation; for a line indented # N spaces (beyond the indentation of the # statement as a whole), # IP = N*IAP. # Default=0.5. SameIndentPenalty # Penalty for indenting two successive lines # the same even though they belong to different # nesting levels: # foo = x + # y * # z # Default=5. MaxLineBreakTries # Limit to the number of line breaking # alternatives to be tried. Default=5000. AllOrNoneBreak # List of functions for which arguments must AllOrNoneBreak # be written all on one line or all on separate AllOrNoneBreak # lines. (A given function may have only one AllOrNoneBreak # of this and the following break properties.) OneSpecialArg printf # List of functions like printf for which the OneSpecialArg # first argument is "special", remaining args OneSpecialArg # are uniform. TwoSpecialArgs sprintf # List of functions like fprintf for which the TwoSpecialArgs fprintf # first two arguments are "special". ThreeSpecialArgs # List of functions for which the first three ThreeSpecialArgs # arguments are "special". BreakArith # Options string for how to break lines at # arithmetic operators. One or more of: # L Break on left side of operator. # R Break on right side of operator. # H Same as L, but use "hanging" indent. # N No breaking. # L>R Break either way, L preferred (or RL Break either way, R preferred (or L BreakAssign # Same for assignments. For_AllOrNone # 1 or default=all-or-none breaking of the # three clauses of a "for" statement. 0=plain. # COMMENTS AND BLANK LINES NoBanner # 1=omit "From input file..." comment # 0 or default=put this command at top of file EatComments # 1=don't copy any comments into C code # 2=don't copy comments inside procedures # 0 or default=keep all comments SpitComments # 1=spit out all comments between procedures # 0 or default=try to attach comments to code SpitOrphanComments # 1=spit out comments whose orig stmts are lost # 0 or default=attach orphans to nearby code CommentAfter # 1=assume comments follow statements # 0 or default=assume comments precede stmts # (in case statements are rearranged.) BlankAfter # 1 or default=assume blank lines follow stmts # 0=assume blanks precede statements MajorSpacing # Minimum number of blank lines between major # sections of code, default=2. MinorSpacing # Minimum number of blank lines between minor # sections, default=1. FuncSpacing # Minimum number of blank lines between global # functions, default=2. MinFuncSpacing # Minimum number of blank lines separating # sub-procedures, default=1. EatNotes # Suppress any notes whose text contains these EatNotes # words. Example: "EatNotes Spam [216]" EatNotes # suppresses notes with "Spam" or "[216]". # SPECIAL COMMENTS FixedComment FIXED # Comment for fixed upper limit of FOR loops: # for i:=1 to N do {FIXED} # will suppress use of a FORLIM for N. # Case-sensitive; no spaces allowed. PermanentComment PERMANENT # Comment for permanently imported modules, # such as "system". InterfaceComment INTF-ONLY # Comment for include files which are to be # treated as unit interface text, i.e., are # to be read without generating C code. EmbedComment EMBED # Comment for embedded C code in Pascal: # {EMBED # printf("stuff\n"); # } # Use \[ \] for curly braces within embedded # code. May appear in any context where # comments are used. SkipComment SKIP # Comment for code to skip in p2c only: # {SKIP} writeln('Not in p2c'); {NOSKIP} # {SKIP} ... {NOSKIP} sections can be nested. NoSkipComment NOSKIP # Comment for code to skip except in p2c: # {NOSKIP writeln('Only in p2c'); } # Can be used in if-then-else fashion: # {SKIP} foo; {NOSKIP bar; } # {NOSKIP ... } sections can not be nested. SignedComment SIGNED # Type annotation: var c : {SIGNED} char; UnsignedComment UNSIGNED # Type annotation: type uc = {UNSIGNED} char; # STYLISTIC OPTIONS ExtraParens # 1=use many parentheses for readability, # 2=use even more parentheses, # 0=use minimal parens, # default=use nice parens BreakAddParens # 1=always add parens for operators broken # across lines. 0=never, default=nice parens ReturnParens # 1=write "return (x)" # 0=write "return x" # default=omit parens for trivial expressions SpaceExprs # 1=use many spaces in expressions, # 0=use minimal spaces in expressions, # default=use nice spacing SpaceFuncs # 1=write a space after function name in call # 0 or default=no space: f(x) SpaceCommas # 1 or default=one space after commas: f(x, y) # 0=no space after commas: f(x,y) ImplicitZero # 1=generate "if (x)" rather than "if (x!=0)" # 0=always generate explicit comparisons # default=only with strcmp and other idioms StarIndex # 1=always use "*a" # 0=always use "a[0]" # default=use "*a" only in common idioms AddIndex # 1=always use "a + n" # 0=always use "&a[n]" # default=use "a+n" only in common idioms StarArrays # 1 or default=write "f(int *a)" for array a # 0=write "f(int a[10])" # 2=write "f(int a[])" StarFunctions # 1=write "(*fp)(x,y)" to call thru func ptr # 0=write "fp(x,y)" # default=1 unless AnsiC=1 PostIncrement # 1 or default=write i++ preferentially # 0=write ++i preferentially CaseSpacing # Number of blank lines between CASE sections, # default=0. CaseTabs # 0 or default=put each CASE on its own line. # Else this is an amount by which to space # cases on same line, either +n or *n in the # style of ConstIndent. CaseLimit # Maximum number of options in a CASE subrange # that will be expanded out in-line; more than # this moves to an "if" in the default clause. # Default=9. UseCommas # 1=use comma operator when convenient # 0=do not use comma operator # default=use comma operator when necessary UseReturns # 1 or default=introduce "return" statements # 0=do not rearrange to use "return" ReturnLimit # Need at least this many statements in an # "if" block before "return" rearrangement; # default=3 UseBreaks # 1 or default=introduce "break"/"continue" # 0=do not use "break" and "continue" BreakLimit # Need at least this many statements in an # "if" block before "break" rearrangement; # default=2 ContinueLimit # Need at least this many statements in an # "if" block before "continue" rearrangement; # default=5 InfLoopStyle # 0 or default=follow the source file # 1=use "for (;;) ..." for all infinite loops # 2=use "while (1) ..." # 3=use "do ... while (1)" NullChar # 1 or default=write '\0' for null character # 0=write 0 for null character constant HighCharInt # 1 or default=write '\200' as 128 and above # 0=write all char consts as characters MixVars # 1=mix all vars of same base type: int a,b; # 0=never mix variables: int a; int b; # default=mix only adjacent variables MixTypes # 1=mix all var types: int a,*b,c[5]; # 0=never mix variables with different types # default=pointers only: int a,*b; int c[5]; MixFields # 1=mix bit-fields just like other vars # 0=only one bit-field per declaration # default=1 MixInits # 1=always mix variables with initializers # 0=never mix variables with initializers # default=mix with-inits with other with-inits MainLocals # 1 or default=make globals local to main if poss # 0=globals are always made global # CODING OPTIONS InitialCalls # Initial function calls (or other brief C InitialCalls # statements) to put at front of main program. InitialCalls # E.g.: InitialCalls setup_buffer() ExpandIncludes # 1 or default=expand include files into output # 0=convert Pascal include to #include CollectNest # 1 or default=collect sub-procs, emit at end. # 0=emit sub-procedures one by one; this will # produce bad code but is useful with # ExpandIncludes=0. ShortCircuit # 1=use &&, 0=use & for boolean AND, also OR. # default=1 for Turbo/HP-UX, 0 for HP Pascal # may be overridden by {$B} / $partial_eval$ ShortOpt # 1 or default=optimize a&b to a&&b if equiv # 0=always use a&b, depending on ShortCircuit ElimDeadCode # 1 or default=eliminate unreachable code # 2=even eliminate "if (false)" statements # 0=leave unreachable code in place FoldConstants # 1=instantiate non-structure const's in-line # (applies to int, char, boolean, enum, real) # 0 or default=use #define's for constants # 0 causes constant to be completely symbolic; # default sometimes instantiates if convenient. # A constant is folded if FoldConstants=1 # either when the const was defined, or when # it was referenced. FoldStrConstants # 1=instantiate string const's in-line, as above # 0 or default=use #define's for string const's CharConsts # 1 or default=const a='X' => #define a 'X' # 0=const a='X' => #define a "X" # (either always works---aesthetic only) UseConsts # 1=use "const" keyword in C # 2=use "Const" form even if UseAnyptrMacros=0 # 0=do not use "const" declarations # default=1 if AnsiC=1 or C++=1 UseUndef # 1=use "#undef" when #defines go out of scope # 0=do not use "#undef", default=1. StoreFileNames # 1=store file names associated with file vars # 0=let the system record the name # default=1 in Turbo Pascal, 0 otherwise. SqueezeSubr # 1 or default=squeeze subranges into char, etc. # 0=use only short's and int's (or long's). UseEnum # 1=use C "enum" types # 0=use integers for enumerations # default=1 unless AnsiC=0 SqueezeEnum # 1=use bytes for small enums, when UseEnum=0 # 0=use shorts always # default=0 for HP Pascal, 1 otherwise. CompEnums # 1=okay to compare enums directly # 0=cast enums to ints for comparisons # default=0 unless AnsiC=1. PreserveTypes # 1 or default=use typedef for all Pascal types # 0=don't unnecessarily use typedef # (Can be turned on/off for different decls) PreservePointers # 1=override PreserveTypes for pointer types # 0 or default=use in-line "*" notation # -1=same as PreserveTypes PreserveStrings # 1=override PreserveTypes for string types # 2=use typedef for strings w/non-const lengths # 0=use in-line "[]" notation for strings # -1 or default=same as PreserveTypes Packing # 1 or default=fully packed records and arrays # 0=ignore "packed" keyword # 2=pack to bytes, but not bits PackSigned # 1=implement packed arrays of signed values # 0=only pack unsigned arrays # default=1 SkipIndices # Number of vacant array indices allowable, # default 0. If 1, then array [1..10] is # converted to array [11], but array [2..10] # would be converted as array [9] with offsets. OffsetForLoops # 1=adjust loops where index is always used # as, e.g., i-1 by offsetting the index. # 0=leave them alone. Default=1. ForEvalOrder # 1=in for x:=y to z, force eval of y before z. # 0 or default=evaluation order unimportant. StringLeaders # Number of leading '>' placeholder characters # that can be prepended to a string literal. # Default is 3. StringCeiling # Maximum size for strings. Default is 255. # If > 255, allows some "slop" in strings. # If < 255, shortens large strings. StringDefault # Size of string declared without [ ] brackets. # Default is 255. StringTruncLimit # Minimum size of strings for which a warning # is generated when assigned possibly longer # strings. These are assignments to check if # Turbo-like truncation is necessary. # Default is 80 for Turbo, 0 otherwise. LongStringSize # Smallest string which can be considered # "arbitrarily long"; default=StringCeiling. KeepNulls # 1=try to preserve null (#0) chars in strings # 0 or default=ignore them (but warn) HighCharBits # 1=convert "ch >= 128" to "(ch & ~127) != 0" # 2=convert "ch >= 127" to "(ch & 128) != 0" # 0=do not use bit ops for high characters # default=1 only if ch's signed-ness is unknown StaticFunctions # 1 or default=use "static" for private funcs # 0=don't create static functions StaticVariables # 1 or default=use "static" for private vars # 0=don't create static global vars NeedStatic # Names of functions or variables which # need to be declared static despite # StaticFunctions=0 or StaticVariables=0. AlwaysCopyValues # 1=always make a local copy of a parameter # 0 or default=only if it appears to be changed VoidArgs # 1=write "f(void)" for funcs with no args # 0=write "f()" for funcs with no args # default=depends on AnsiC and C++ Prototypes # 1=write "f(int a, int b)" # 2=write "f(int, int)" when possible # 0=write "f(a, b) \n int a, b;" # default=depends of AnsiC and C++ FullPrototyping # 1 or default=use prototypes everywhere # 0=use prototypes only for forward/extern ProcPtrPrototypes # 1 or default=use prototypes for C func ptrs # 0=always write, e.g., int (*fp)(); CastArgs # 1=include argument casts if needed: (double)i # 0=do not include argument casts (dangerous!) # default=do not cast if func has a prototype CastLongArgs # 1=include int/long argument casts if needed # 0=do not cast between int and long # default=follow CastArgs PromoteArgs # 1=promote e.g. short to int in prototypes # 0=do not promote in prototypes # default=only when prototyping forwards only FixPromotedArgs # 1=attempt to handle "&" of promoted args # 2=warn in this case but do not try to fix # 0=leave promoted args alone # default=1 PromoteEnums # 1=promote enum to int when promoting args # 0=leave enums alone in prototypes # default=only when UseEnum=0 StaticLinks # 1=use _PROCEDURE (ProcTypeName) for proc ptrs # 2=use _PROCEDURE but assume only global procs # 0=use C function pointers, no static links # default=1 in HP, 0 in Turbo Pascal VarStrings # 1=full support for "var s:string" params # and HP Pascal's strmax function # 0=assume all var s:string's are string[255] # default=0 always; may need 1 for some # HP Pascal programs VarFiles # 1 or default="var f : file" params use & # 0=pass FILE *'s by value; must not open or # close the file within the procedure AddrStdFiles # 1=okay to write "&stdout", etc. # 0 or default=not okay CopyStructFuncs # 1=write "temp = f(); temp.field" # 0=write "f().field" # default=1 unless AnsiC=1 Atan2 # 1=convert arctan(a/b) to atan2(a,b) # 0 or default=convert it to atan(a/b) BitwiseMod # 1 or default=convert x mod 16 to x&15 # 0=convert x mod 16 to x%16 BitwiseDiv # 1=convert x div 16 to x>>4 # 0 or default=convert x div 16 to x/16 AssumeBits # 1=assume args of funcs like na_po2 are # within reasonable range; write 1<printf("\n\n") # 0=don't mix consecutive writeln stmts IntegerWidth # Default field width for writing integers. # Default is 1 for Turbo, 12 for HP. RealWidth # Default field width for writing reals. # Default is 12. FormatStrings # 1=full support for write(string:width) # 0 or default=':width' only stretches WhileFgets # 1 or default=while (fgets(...)) { ... } # 0=while (!eof(...)) { fgets(...); ... } UseGets # 1 or default=use gets to read string[255] # 0=always use fgets (with length checking) NewLineSpace # 1=convert \n to ' ' in read(ch) # 0=leave newlines alone reading characters # default=0 in Turbo Pascal, 1 otherwise BuildReads # 1=combine x:=f^;get(f) into read(f,x) # 2=only for text files and files of char # 0=leave it alone; default=1 BuildWrites # 1=combine f^:=x;put(f) into write(f,x) # 2=only for text files and files of char # 0=leave it alone; default=1 BinaryMode # 1 or default=fopen binary files as, say, "rb" # 0=fopen binary files as "r" # 2=fopen binary files as "r" with a warning ReadWriteOpen # 1=RESET/REWRITE open binary files read/write # 0=RESET opens read-only, REWRITE write-only # 2=Open all files (text and binary) read/write # default=1 in Turbo, 0 otherwise. OpenMode # fopen mode string to use for Pascal open # statement. Use a+ if that mode allows # seeking. Default=build out of ANSI modes FileNameFilter # Name of a function to call which converts # a file name into a form usable by fopen; # if name must be changed this should return # a pointer to a static buffer. # Not used for constant names. "0"=no filter. # default=P_trimname for Oregon/Berk, else 0 LiteralFiles # 0=nameless rewrite(f) generates a temp file # 1=nameless rewrite(f) uses "f" as file name # 2=like 1 only if f appeared in "program" stmt # default=2 for Berkeley, else 0. LiteralFile # A file variable which should be treated as LiteralFile # if LiteralFiles=1. If LiteralFiles=2, files LiteralFile # in program header are added to this list. StructFiles # 1="file of x" produces a struct with buffer # and file-name included. # 0 or default=use native FILE *'s, with # extra variables to hold buffer and name. StructFile # A file variable which should be treated as # if StructFiles=1. FullStrWrite # 1=full implementation of strwrite(s,i,j,...) # 0=ignore "j" variable and other issues # default=assign "j", assume not mid-string # 2=like default, but issue a warning FullStrRead # 1 or default=full impl of strread using "%n" # 0=fake the value of "j" # 2=like default, but issue a warning SetBits # Number of bits to use in each "long" of a set # default=LongSize if defined, else 32 DefaultSetSize # Default size of un-typed set constants; # default default=256 for VAX, else 8192 SmallSetConst # 0=write small-set literals like "1<<2|1<<4" # 1=write them like "0x14" # 2=write them like "20" # -1=do not use small-sets at all # default=-1 if SetBitsName defined, else 1 BigSetConst # (analogous to SmallSetConst for big sets) LeLeRange # 1=write "j in [1..10]" as "1<=j && j<=10" # 0 or default=write ... as "j>=1 && j<=10" UnsignedTrick # 1 or default=write "(unsigned)i <= 10" # 0=leave "i >= 0 && i <= 10" alone UseIsAlpha # 1 or default=use "isalpha", "isdigit", etc. # 0=use plain comparisons UseIsSpace # 1=convert "c==' '" to "isspace(c)" # 0 or default=leave it alone UseStrncmp # 1=use strncmp to compare packed array of char # 0=use memcmp, same as for all other arrays # default=1 # NAMING CONVENTIONS CodeFileName %Rs.c # Name of .c output file for a program, # %s=input file name. ModuleFileName %_S.c # Name of .c output file for a module, # %s=input file name, %S=module name. HeaderFileName %_S.h # Name of .h output file for a module, # %s=input file name, %S=module name. HeaderFileName2 # If defined, different format to use when # generating #include's, otherwise same. # May be quoted as in IncludeFrom. SelfIncludeName # Format to apply after HeaderFileName to use # when a module includes its own header file. LogFileName %RS.log # Name of log file name for -V mode. # %s=input file name, %S=output file name. IncludeFileName # Format for translating Pascal include-file # names. SymCase # 1 or default=preserve case of Pascal idents, # 0=convert all Pascal idents to lower case SymbolFormat # Format for C identifiers derived from # Pascal ones; default=%s. The following # specific formats override this one. # %s=original Pascal identifier, # %S=name of parent module or procedure. ConstFormat # Format for #define names derived from # Pascal consts. (Often used: %^s) ModuleFormat # Format for program and module names. FunctionFormat # Format for procedure and function names. VarFormat # Format for variable names. TypeFormat # Format for typedef names. FieldFormat # Format for fields of records; %S=record type. EnumFormat # Format for enumeration constants; # %s=enum type name. If not specified, # default is ConstFormat, else SymbolFormat. ReturnValueName Result # Return value holding variable; [%s=func name] UnitInitName _%s_init # Turbo Pascal unit initializer; %s=unit name HSymbolName %s_H # Name of "_H" symbol, if any; %s=unit name GSymbolName %s_G # Name of "_G" symbol; [%s=unit name] StringMaxName MAX_%s # VAR STRING hidden variable; %s=param name ArrayMinName %s_LOW # Lower bound hidden variable; %s=param name ArrayMaxName %s_HIGH # Upper bound hidden variable; %s=param name CopyParName %s_ # Alternate name for parameter %s StaticLinkName LINK # Static link parameter name; [%s=func name] LocalVarsStruct LOC_%s # Name of struct type for locals; %s=func name LocalVarsName V # Name of struct var for locals; [%s=func name] FwdStructName %s # Name of forward-used structs; %s=type name # (may simply be %s if you don't mind confusion) EnumListName %s_NAMES # Name of array to hold names for enum %s UnionName UU # Name of variant union UnionPartName %s # Name of variant element; %s=tag value name FakeStructName _REC_%s # Name of "temporary" structs; %s=base name LabelName _L%s # Name of GOTO label; %s=label name LabelVarName _JL%s # Name of GOTO label jmp_buf variable; %s=label TempName TEMP%s # Name of general temporary vars; %s=unique id DummyName DUMMY%s # Name of throwaway "dummy" vars; %s=unique id WithName WITH%s # Name of WITH statement temp ptr; %s=unique id ForName FORLIM%s # Name of FOR statement temp limit; %s=unique id PtrName PTR%s # Name of NIL-checking temp ptr; %s=unique id StringName STR%s # Name of temporary string vars; %s=unique id SetName SET%s # Name of temporary set vars; %s=unique id FNVarName %s_NAME # Name of file-name vars; %s=file var FNSizeName _FNSIZE # Maximum length of file name (macro or integer) AlternateName1 %s_ # Way to produce a second C symbol for a Pascal # symbol, where original symbol was %s. Default # is to use AlternateName with %d=1. AlternateName2 # A second alternate for %s. AlternateName # A %d'th name for %s. %s and %d may appear in # either order. Default is %d applications of # AlternateName1. ExportSymbol # Name of exported symbol %s. E.g.: "P_%s" # Default=%s, i.e., don't mess with the name. # %s is Pascal symbol name; %S is module name. Export_Symbol # Exported-symbol format to be used when the # symbol %s contains an '_'. Default=use # ExportSymbol format for every symbol. Alias # Name of external proc or var; default="%s". # If does not contain a "%s", this simply # renames the next defined symbol of any kind. Synonym # Format: Synonym name = newname Synonym # Treat the word "name" in the input file Synonym # exactly the same as the keyword or identifier Synonym # "newname". If "newname" is omitted, ignore Synonym # the word "name" in the input. For example: Synonym # "Synonym andthen = and" creates a keyword; Synonym # "Synonym allocmem = getmem" simulates a Synonym # built-in function "allocmem" which acts like Synonym # Turbo's "getmem"; "Synonym segment" ignores Synonym # the word "segment" in the input. NameOf # Format: NameOf name = newname NameOf # Rename the specified symbol. The name may NameOf # be of the form "modulename.name" or NameOf # "procname.name"; otherwise, all usages of NameOf # the symbol are renamed. VarMacro # Format: VarMacro varname = C-expression VarMacro # Must come before the declaration of variable VarMacro # "varname". Causes all references to the VarMacro # variable to use the C expression instead. VarMacro # In the expr, all C operators are supported; VarMacro # all identifier names are used verbatim. VarMacro # Also works for Turbo Pascal typed-constants. VarMacro # Suppresses declaration of variable unless VarMacro # "varname" appears in the C expression. VarMacro # Simple algebra is used for assignments to VarMacro # vars with expr definitions: if X -> 2*V+1, VarMacro # then "X:=Y" translates to "V=(Y-1)/2". ConstMacro # Analogous to VarMacro, but for constants and ConstMacro # enumeration constants. In an enum constant, ConstMacro # if the C-expression is a single name the ConstMacro # result is equivalent to Alias or NameOf. FieldMacro # Format: FieldMacro rec.field = C-expression FieldMacro # where "rec" is a record type name which FieldMacro # also appears in the C-expression. For FieldMacro # example: FieldMacro obj.foo = bar(obj) causes FieldMacro # the field "foo" of record type "obj" to be FieldMacro # referenced through the function or macro FieldMacro # "bar", rather than using dot notation. FuncMacro # Format: FuncMacro foo(a,b,c) = C-expression FuncMacro # where "a", "b", "c" are arbitrary arg names FuncMacro # also appearing in the C-expression. "Foo" FuncMacro # is a procedure or function defined or to be FuncMacro # defined in the code, or predefined in Pascal. FuncMacro # E.g.: FuncMacro PtInRect(p,r) = PtInRect(p,&r) FuncMacro # causes "r" to be treated as a VAR param even FuncMacro # though otherwise it would be passed by value. WarnMacros # 1=warn if Var/Const/Field/FuncMacro not used # 0 or default=don't care. SpecialMalloc # Format: SpecialMalloc x.y.z = funcname SpecialMalloc # where x is a type name, and y and z are SpecialMalloc # optional variant tags for records. The SpecialMalloc # statement "new(p,y,z)" where p is a pointer SpecialMalloc # to x is converted to p = funcname(). SpecialFree # Like SpecialMalloc, but defines a special SpecialFree # function for freeing things of a given type. SpecialSizeOf # Like SpecialMalloc, but defines a name or SpecialSizeOf # other integer-valued C expression which is SpecialSizeOf # the size of an object of the given type. AvoidName getc # If any of these names appear in the code, AvoidName putc # use an alternate name so as to avoid AvoidName getchar # library conflicts. AvoidName putchar AvoidName feof # These are typically macro names whose use AvoidName ferror # would be disasterous under any AvoidName clearerr # circumstances. AvoidName fileno AvoidName BUFSIZ NULL EOF AvoidName stdin stdout stderr AvoidName true false assert AvoidName Anyptr Void Char PP PV AvoidName Signed Const Volatile Register Static Local Inline AvoidName cdecl far near huge AvoidName isalpha isupper islower isdigit isxdigit isspace ispunct AvoidName isalnum isprint isgraph iscntrl isascii toascii AvoidName toupper tolower AvoidName LINK SEXT AvoidGlobalName fopen # These names should be avoided in global AvoidGlobalName fclose # contexts, but they are okay as local names. AvoidGlobalName fseek AvoidGlobalName exit main AvoidGlobalName strcpy strcat AvoidGlobalName printf fprintf sprintf AvoidGlobalName scanf fscanf sscanf AvoidGlobalName malloc realloc free AvoidGlobalName y0 y1 yn j0 j1 jn # from math.h -- urghhh! # ... we should define lots more of these! WarnName # A similar list of names to leave alone, but WarnName # generate warnings for if they are defined. WarnNames # 1=All vars, consts, types, procs, fields # defined after this point should generate # warnings if used. # 0 or default=no warnings for future names WarnLibrary # A list of C functions, any calls to which WarnLibrary # should generate warnings. # TARGET LIBRARY QuoteIncludes # 1 or default=write #include "foo.h" # 0=write #include IncludeFrom # Names of modules which need special IncludeFrom # #include file names. Formats: IncludeFrom # IncludeFrom foo bar.h => #include IncludeFrom # if QuoteIncludes=0 else #include "bar.h" IncludeFrom # IncludeFrom foo => #include IncludeFrom # IncludeFrom foo "bar.h" => #include "bar.h" IncludeFrom # IncludeFrom foo => no #include at all IncludeFrom iodeclarations IncludeFrom system IncludeFrom printer IncludeFrom dos IncludeFrom crt ImportFrom # Names of modules whose import text ImportFrom # resides in the specified files. ImportFrom # E.g.: ImportFrom mymod /usr/me/mymod.imp ImportFrom # These are the Turbo Pascal standard units ImportFrom system %H/turbo.imp ImportFrom printer %H/turbo.imp ImportFrom dos %H/turbo.imp ImportFrom crt %H/turbo.imp ImportFrom graph %H/turbo.imp ImportDir %_s.pas # Search list of other places to look for ImportDir %_s.text # the module named %s. ImportDir %H/%_s.imp IncludeDir %_s # Search list of places to look for the IncludeDir %_s.pas # Pascal include file %s. IncludeDir %_s.text IncludeDir %H/%_s.pas LibraryFile %H/system.imp # Names of import-text files to search LibraryFile # always (as if "-s name" were used). StructFunction sprintf # Names of "structured functions". StructFunction memcpy memmove StructFunction strcpy strsub strrtrim strrpt StructFunction P_addset P_addsetr P_remset StrlapFunction P_setunion # Names of "structured functions" which StrlapFunction P_setint # allow duplication of their arguments. StrlapFunction P_setdiff StrlapFunction P_setxor StrlapFunction P_expset strlower strupper strpad NoSideEffects strcmp memcmp # Names of functions which have absolutely NoSideEffects # no side effects on their arguments or NoSideEffects # other global state of the program. Deterministic abs sin cos # Names of functions which satisfy all Deterministic # requirements for NoSideEffects, and Deterministic # additionally compute their result Deterministic # deterministically (and quickly), without Deterministic # any sort of hidden dependencies. # (need many more in this list!) LeaveAlone # Names of library functions which should LeaveAlone # be left alone, rather than translated LeaveAlone # into C equivalents. (For example, prevents LeaveAlone # converting fwritebytes into C fwrite.) HeaderName # Name of standard p2c header file UCharName uchar # Name of a typedef for "unsigned char"; # default="char" or "unsigned char". SCharName schar # Name of a typedef for "signed char"; # default="char" or "signed char". BooleanName boolean # Name of a typedef for booleans; default=char. TrueName true # Name of a boolean "true" constant (optional) FalseName false # Name of a boolean "false" constant (opt.) NullName NULL # Name of a NULL pointer constant ProcTypeName _PROCEDURE # Name of procedure-pointer typedef EscapeCodeName P_escapecode # Names of error-handling variables IOResultName P_ioresult ArgCName P_argc # Name of global copy of argc ArgVName P_argv # Name of global copy of argv MainName PASCAL_MAIN # Name of program setup function EscapeName _Escape # Name of error-generation function EscIOName _EscIO # Name of I/O-error-generation function CheckIOName _CHKIO # Name of I/O-error-checking function SetIOName _SETIO # Name of I/O-error-setting function FileNotFoundName FileNotFound # Name or number of "File Not Found" ioresult FileNotOpenName FileNotOpen # Name or number of "File Not Open" ioresult FileWriteErrorName FileWriteError # Name of num of "File Write Error" ioresult BadInputFormatName BadInputFormat # Name or num of "Bad Input Format" ioresult EndOfFileName EndOfFile # Name or number of "End of File" ioresult OutMemName _OutMem # Name of out-of-memory error function CaseCheckName _CaseCheck # Name of case-out-of-range error function NilCheckName _NilCheck # Name of nil-pointer error function SetBitsName # Name of macro defined equal to SetBits # default=compile SetBits in-line SprintfValue # 1=sprintf() returns its first argument # 0=sprintf() returns a character count # default=don't know (unless AnsiC=1) # -2=don't know regardless of AnsiC # 2=don't use sprintf in expressions SprintfName # If SprintfValue != 1, this is the name # of a sprintf-like function which returns # its first argument. Default=no such # function exists. MemCpyName # Methods known: "memcpy", "bcopy" # default=according to Target, default "memcpy" RoundName # Name of function or macro for rounding # a real to an integer. Precede name with # a '*' if it is a macro that evaluates its # arguments more than once. Default=do it # by hand. DivName # Name of function or macro for Pascal integer # division where numerator may be negative. # Use '*' if macro; default=use regular '/'. ModName # Name of function or macro for Pascal integer # modulo where numerator may be negative. # Use '*' if macro; default=use regular '%'. RemName # Name of function or macro for VAX Pascal # REM where numerator or denominator may be # negative. Use '*' if macro; default=use MOD. AbsName labs # Name of function for computing ABS of a # "long" value. Precede with '*' if a # macro. Default=by hand, or "labs" in AnsiC. OddName # Name of a macro for computing ODD of an # integer. Default=x&1. EvenName # Name of a macro for computing NOT ODD of # an integer. Default=!odd(x). SwapName _swap # Name of Turbo-like swap() function. StrCpyLeft # 1 or default=strcpy(s1,s2) works even if # s1 and s2 overlap, provided s1 <= s2. # 0=strcpy(s1,s2) does not allow overlap. StrCICmpName strcicmp # Name of a strcicmp-like function; no default StrSubName strsub # Name of a strsub-like function; no default StrPosName strpos2 # Name of a strpos2-like function; no default StrDeleteName strdelete # Name of a strdelete-like function; no default StrInsertName strinsert # Name of a strinsert-like function; no default StrMoveName strmove # Name of a strmove-like function; no default StrLTrimName strltrim # Name of a strltrim-like function; no default StrRTrimName strrtrim # Name of a strrtrim-like function; no default StrRptName strrpt # Name of a strrpt-like function; no default StrPadName strpad # Name of a pad-like function; no default MallocName Malloc # Name of a malloc-like function; default=malloc FreeName Free # Name of a dispose-like function; default=free FreeRvalueName FreeR # Name of a free-like function; default=free RandRealName _randreal # Name of a Turbo "random" function; no default RandIntName _randint # Name of a Turbo "random()" function; no def RandomizeName _randomize # Name of a Turbo "randomize" procedure SkipSpaceName _skipspaces # Name of a Turbo seekeof/seekeoln skipper ReadlnName # Name of function or macro to skip past eoln. # Special names: fgets=use fgets with dummy var # scanf=use scanf/fscanf # Default=use whichever method works out best FreopenName # Name of function or macro that acts like # freopen(n,m,f), but if f==NULL acts like # fopen(n,m). Default=do it by hand. # "fopen"=assume not reopening files. # "fclose"=fclose first, then fopen. EofName P_eof # Name of "feof" with Pascal semantics. EolnName P_eoln # Name of "eoln" function. FilePosName ftell # Name of "filepos" function. MaxPosName P_maxpos # Name of "maxpos" function. SetUnionName P_setunion # Name of a set "+" function; no default SetIntName P_setint # Name of a set "*" function; no default SetDiffName P_setdiff # Name of a set "-" function; no default SetXorName P_setxor # Name of a set "/" function; no default SetInName P_inset # Name of a set "IN" function; no default SetAddName P_addset # Name of a set "a:=a+[x]" function; no default SetAddRangeName P_addsetr # Name of a set "a:=a+[x..y]" function; no def SetRemName P_remset # Name of a set "a:=a-[x]" function; no default SetEqualName P_setequal # Name of a set "=" function; no default SubSetName P_subset # Name of a set "<=" function; no default SetCopyName P_setcpy # Name of a set ":=" function; no default SetExpandName P_expset # Name of small-set-to-set expander; no default SetPackName P_packset # Name of set-to-small-set packer; no default SignExtendName SEXT # Name of macro to sign-extend a number. GetBitsName *P_getbits_%s # Name of family of array-unpacking functions. # Precede name with '*' if a macro. %s will # expand to S (for signed) or U (for unsigned), # followed by B (big array) or S (small array). PutBitsName *P_putbits_%s # Name of family of functions which 'OR' a # value into an element of a packed array. # %s expands to S or U, followed by B or S. # Use '*' if macro. Default=use StoreBits. ClrBitsName *P_clrbits_%s # Name of family of functions which zero an # element of a packed array. %s expands # to B or S only. Use '*' if macro. # Default=use StoreBits. StoreBitsName # Name of a family of functions or macros # which act just like PutBits, but overwrite # the array element rather than OR'ing. # Default=use ClrBits followed by PutBits. # At least StoreBits or both PutBits and # ClrBits must be defined. DeclBufName FILEBUF # Name of a macro for declaring the file # buffer for a file using GET and PUT. DeclBufNCName FILEBUFNC # Name of a DeclBufName-like macro with two # arguments (no storage class), in case your # compiler can't handle null macro arguments. BufferedFile # Names of file variables that use GET/PUT/^ BufferedFile # notation instead of READ/WRITE notation. BufferedFile # Mostly useful for globals; locals are BufferedFile # detected automatically. May be a var name, BufferedFile # field name, proc.var, type.field, or BufferedFile # "1"=use buffers for all files. UnBufferedFile # Names of files that will not be buffered, UnBufferedFile # even if they would otherwise be. Syntax UnBufferedFile # same as for BufferedFile. ResetBufName RESETBUF # Name of a macro for setting up a file # buffer in "read" mode. (For RESET.) SetupBufName SETUPBUF # Name of a macro for setting up a file # buffer in read/write mode. (For OPEN, SEEK.) GetFBufName GETFBUF # Name of a macro for accessing a file # buffer using "file^" notation. GetName GET # Name of a macro for advancing # to the next element of an input file. PutFBufName PUTFBUF # Name of a macro for storing an element # of a file using "file^" notation. PutName PUT # Name of a macro for advancing # to the next element of an output file. CharGetFBufName P_peek # A special GetFBuf for text and files of char. CharGetName getc # A special Get for text and files of char. CharPutFBufName CPUTFBUF # A special PutFBuf for text and files of char. CharPutName CPUT # A special Put for text and files of char. ArrayGetFBufName AGETFBUF # A special GetFBuf for files of arrays. ArrayGetName # A special Get for files of arrays. ArrayPutFBufName APUTFBUF # A special PutFBuf for files of arrays. ArrayPutName # A special Put for files of arrays. EofBufName BUFEOF # Name of a macro for "eof" of a buffered file. FilePosBufName BUFFPOS # Name of a macro for buffered "filepos". # CHECKING CaseCheck # 1=check CASE statements without OTHERWISE # 0 or default=skip CASE stmt if out of range # 2=according to $range$ directives ArrayCheck # 1=check array bounds # 0 or default=do not check array bounds # 2=according to $range$ directives # (not yet implemented) NilCheck # check pointer dereferences (0, 1, or 2) RangeCheck # enable other range checking (0, 1, or 2): # string indexing, ...? # (not yet implemented) MallocCheck # 1=check if malloc returns NULL # 0 or default=assume malloc never returns NULL # (often used with MallocName; see above) CheckFileOpen # 1 or default=check for errors during open, # 0=assume file opens successfully # 2=check only when $iocheck off$ or {$I-} CheckFileIsOpen # 1=check for "file not open" error, # 0 or default=eof, etc., assume file is open # 2=check only when $iocheck off$ or {$I-} CheckFileWrite # 1=check for errors during write # 0=ignore write errors # 2 or default=only when $iocheck off$ or {$I-} CheckReadFormat # 1=check for "bad format" errors during read # 0=ignore read format errors # 2 or default=only when $iocheck off$ or {$I-} CheckFileEOF # 1=check for "past EOF" errors reading files # 0=ignore file EOF errors # 2 or default=only when $iocheck off$ or {$I-} CheckStdinEOF # 1=check for "past EOF" errors reading stdin # 0=ignore stdin EOF errors # 2 or default=only when $iocheck off$ or {$I-} CheckFileSeek # 1=check for errors during seek # 0=ignore seek errors # 2 or default=only when $iocheck off$ or {$I-} Include %H/loc.p2crc # Include any local modifications to this file. # End of p2crc