* Copyright (c) 1980 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
* specifies the terms and conditions for redistribution.
* @(#)indent_globs.h 5.4 (Berkeley) 9/10/85
This include file contains the declarations for all global variables
The names of all of the variables will not be repeated here. The
declarations start on the next page.
#define bufsize 600 /* size of internal buffers */
#define inp_bufs 600 /* size of input buffer */
#define sc_size 5000 /* size of save_com buffer */
#define label_offset 2 /* number of levels a label is placed to left of code
#define tabsize 8 /* the size of a tab */
#define tabmask 0177770 /* mask used when figuring length of lines with tabs */
FILE *input
; /* the fid for the input file */
FILE *output
; /* the output file */
char labbuf
[bufsize
]; /* buffer for label */
char *s_lab
; /* start ... */
char *e_lab
; /* .. and end of stored label */
char codebuf
[bufsize
]; /* buffer for code section */
char *s_code
; /* start ... */
char *e_code
; /* .. and end of stored code */
char combuf
[bufsize
]; /* buffer for comments */
char *s_com
; /* start ... */
char *e_com
; /* ... and end of stored comments */
char in_buffer
[inp_bufs
]; /* input buffer */
char *buf_ptr
; /* ptr to next character to be taken from in_buffer */
char *buf_end
; /* ptr to first after last char in in_buffer */
char save_com
[sc_size
]; /* input text is saved here when looking for the brace
after an if, while, etc */
char *sc_end
; /* pointer into save_com buffer */
char *bp_save
; /* saved value of buf_ptr when taking input from
char *be_save
; /* similarly saved value of buf_end */
char token
[bufsize
]; /* the last token scanned */
int blanklines_after_declarations
;
int blanklines_before_blockcomments
;
int blanklines_after_procs
;
int swallow_optional_blanklines
;
int prefix_blankline_requested
;
int postfix_blankline_requested
;
int break_comma
; /* when true and not in parens, break after a comma */
int btype_2
; /* when true, brace should be on same line as if,
float case_ind
; /* indentation level to be used for a "case n:" */
int code_lines
;/* count of lines with code */
int had_eof
; /* set to true when input is exhausted */
int line_no
; /* the current line number. */
int max_col
; /* the maximum allowable line length */
int pointer_as_binop
; /* when true, "->" is treated as a binary
operator (giving, e.g., "p -> f") */
int verbose
; /* when true, non-essential error messages are printed
int cuddle_else
; /* true if else should cuddle up to '}' */
int star_comment_cont
; /* true iff comment continuation lines should
have stars at the beginning of each line.
int comment_delimiter_on_blankline
;
int troff
; /* true iff were generating troff input */
int procnames_start_line
; /* if true, the names of procedures being
defined get placed in column 1 (ie. a
newline is placed between the type of the
procedure and its name) */
int proc_calls_space
; /* If true, procedure calls look like:
foo(bar) rather than foo (bar) */
int format_col1_comments
; /* If comments which start in column 1 are to
be magically reformatted (just like comments that
begin in later columns) */
int inhibit_formatting
; /* true if INDENT OFF is in effect */
int suppress_blanklines
; /* set iff following blanklines should be
int continuation_indent
; /* set to the indentation between the edge of
code and continuation lines */
int lineup_to_parens
; /* if true, continued code within parens will
be lined up to the open paren */
int block_comment_max_col
;
int p_stack
[50]; /* this is the parsers stack */
int il
[50]; /* this stack stores indentation levels */
float cstk
[50]; /* used to store case stmt indentation
int box_com
; /* set to true when we are in a "boxed"
* comment. In that case, the first
* non-blank char should be lined up with
int cast_mask
; /* indicates which close parens close off
int sizeof_mask
; /* indicates which close parens close off
int block_init
; /* true iff inside a block initialization */
int last_nl
; /* this is true if the last thing scanned
int in_or_st
; /* Will be true iff there has been a
* declarator (e.g. int or char) and no
* left paren since the last semicolon.
* When true, a '{' is starting a
* structure definition or an
int bl_line
; /* set to 1 by dump_line if the line is
int col_1
; /* set to true if the last token started
int com_col
; /* this is the column in which the current
int com_ind
; /* the column in which comments to the
* right of code should start */
int com_lines
; /* the number of lines with comments, set
int dec_nest
; /* current nesting level for structure or
int decl_com_ind
; /* the column in which comments after
* declarations should be put */
int decl_on_line
; /* set to true if this line of code has
* part of a declaration on it */
int i_l_follow
; /* the level to which ind_level should be
* set after the current line is printed */
int in_decl
; /* set to true when we are in a
* declaration stmt. The processing of
* braces is then slightly different */
int in_stmt
; /* set to 1 while in a stmt */
int ind_level
; /* the current indentation level */
int ind_size
; /* the size of one indentation level */
int ind_stmt
; /* set to 1 if next line should have an
* extra indentation level because we are
* in the middle of a stmt */
int last_u_d
; /* set to true after scanning a token
* which forces a following operator to be
int leave_comma
; /* if true, never break declarations after
int ljust_decl
; /* true if declarations should be left
int out_coms
; /* the number of comments processed, set
int out_lines
; /* the number of lines written, set by
int p_l_follow
; /* used to remember how to indent
int paren_level
; /* parenthesization level. used to indent
short paren_indents
[20]; /* column positions of each paren */
int pcase
; /* set to 1 if the current line label is a
* case. It is printed differently from
int search_brace
; /* set to true by parse when it is
* necessary to buffer up all info up to
* the start of a stmt after an if, while,
int unindent_displace
; /* comments not to the right of
* code will be placed this many
* indentation levels to the left
int use_ff
; /* set to one if the current line should
* be terminated with a form feed */
int want_blank
; /* set to true when the following token
* should be prefixed by a blank. (Said
* prefixing is ignored in some cases.) */
int else_if
; /* True iff else if pairs should be
int decl_indent
; /* column to indent declared identifiers
float case_indent
; /* The distance to indent case labels from
* the switch statement */
int in_parameter_declaration
;
int tos
; /* pointer to top of stack */
char procname
[100]; /* The name of the current procedure */
struct parser_state state_stack
[5];
struct parser_state match_state
[5];