home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_progs
/
prog_oth
/
prep_065.lzh
/
PREP
/
PREP.H
< prev
next >
Wrap
C/C++ Source or Header
|
1991-08-16
|
4KB
|
122 lines
#include "stdio.h"
#include "string.h"
/* define C compiler here */
#define CRAY 0 /* Cray C 1.0 under CTSS */
#define SVS 0 /* Silicon Valley C */
#define BLANK ' '
#define TAB '\t'
#define TRUE 1
#define FALSE 0
#define NOT !
#define DEF_UNROLL_DEPTH 8
#define DEF_LINE_LIMIT 1
#define DEF_BUFFSIZE 200
#define STORE_SIZE 1000
#define NESTING 10
#define MAX_TOKENS 2*NESTING /* tokens and macro args */
#define exp expression /* used exp as a variable */
#define min(x,y) ((x) < (y) ? (x) : (y))
#define max(x,y) ((x) > (y) ? (x) : (y))
#define IN_BUFF_DONE in_buff[0] = NULL ;
#define UNROLLING ( ( unroll_depth > 1 ) && \
( mem_count <= line_limit ) && \
( var_count > 1 ) )
#define GET_MEM(S,A)\
if ( NULL == (S = malloc(A+1)) ) {\
abort( "Memory allocation failed") ; }
#define MATCH(S) ( strncmp( combuff, S, (name_length=strlen(S)) ) == 0 )
#define put_string(s) fputs( s, out ) ; putc( '\n', out ) ;
/* enumeration of command types */
enum Command {
type_begin, type_again, type_while, type_until, type_leave, type_continue,
type_case, type_of, type_default, type_end_case, type_continue_case,
type_do_limits, type_osqb, type_csqb, type_vec, type_unroll,
type_do, type_end_do, type_leave_do, type_continue_do,
type_include,
type_ifdef, type_ifndef, type_else, type_endif,
normal, unknown
} ;
#if CRAY
/* the cray considers characters to be unsigned */
#undef EOF
#define EOF 255
/* a few macros to adapt to cray namelength limitations */
#define continue_proc cont_proc
#define continue_do_proc cont_do_proc
#define leave_do_proc le_do_proc
#define include_proc inc_proc
#endif
#if SVS
#define fopen fopena /* cr-lf and ^Z conversion */
#endif
/* function type declarations */
char *mat_del(), *line_end(), *get_rec(), get_a_char(),
*malloc(), *calloc(), *realloc(), *strtokp(),
*mac_proc(), *strupr(), *strtok(), *strchrq() ;
#ifdef MAIN
/* Included stuff for main routine of program PREP */
/* global pointers & storage */
char *in_buff, *out_buff ; /* text buffer pointers */
char *first_nonblank ; /* first nb char in in_buff */
char *mem_store[STORE_SIZE] ; /* pointers to malloc areas */
char errline[2*DEF_BUFFSIZE] ; /* error message line */
char dataf[DEF_BUFFSIZE] ; /* data file name */
long allocation ; /* current size of in_buff */
int tab_size = 7 ; /* size of the tab in blanks */
int unroll_depth = 0 ; /* do loop unroll depth, 0 for no unrolling */
int line_limit = 1000 ; /* unroll loops if # lines <= line_limit */
int mem_count = 0 ; /* mem_store external counter */
int include_count = 0 ; /* index of filestack (for includes) */
int name_length = 0 ; /* current command name length */
int vec_flag = FALSE ; /* TRUE if in vector loop */
int com_keep = FALSE ; /* TRUE to keep comments */
int underline_keep=FALSE; /* TRUE to keep underline characters */
int macro_only = FALSE ; /* TRUE to do only macro expansion */
int ignore_flag = FALSE ; /* conditional compilation flag */
FILE *in, *out, *filestack[NESTING] ;
#else
/* Header stuff for the functions of program PREP */
/* global pointers & storage */
extern char *in_buff, *out_buff, *mem_store[],
*first_nonblank, dataf[], errline[] ;
extern int tab_size, unroll_depth, line_limit, com_keep, vec_flag,
mem_count, underline_keep, include_count, macro_only,
name_length, ignore_flag ;
extern long allocation ;
extern FILE *in, *out, *filestack[] ;
#endif