123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /*
- * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
- * See the copyright notice in the ACK home directory, in the file "Copyright".
- */
- #ifndef UTILS_ACK_ACK_H
- #define UTILS_ACK_ACK_H
- #include "trans.h"
- #include "grows.h"
- #ifndef NORCSID
- #define RCS_ACK "$Id$"
- #endif
- /****************************************************************************/
- /* User settable options */
- /****************************************************************************/
- #define FRONTENDS "fe" /* The front-end definitions */
- #define TMPNAME "Ack_%x" /* Naming of temp. files */
- /****************************************************************************/
- /* Internal mnemonics, should not be tinkered with */
- /****************************************************************************/
- /* The names of some string variables */
- #define HOME "EM"
- #define RTS "RTS"
- #define HEAD "HEAD"
- #define TAIL "TAIL"
- #define SRC "SOURCE"
- #define LIBVAR "LNAME"
- #define SUFFIX "SUFFIX"
- /* Intended for flags, possibly in bit fields */
- #define YES (1)
- #define NO (0)
- #define MAYBE (2)
- #define EXTERN extern
- #define SUFCHAR '.' /* Start of SUFFIX in file name */
- #define SPACE ' '
- #define TAB '\t'
- #define EQUAL '='
- #define S_VAR '{' /* Start of variable */
- #define C_VAR '}' /* End of variable */
- #define A_VAR '?' /* Variable alternative */
- #define BSLASH '\\' /* Backslash */
- #define STAR '*' /* STAR */
- #define C_IN '<' /* Token specifying input */
- #define C_OUT '>' /* Token specifying output */
- #define S_EXPR '(' /* Start of expression */
- #define C_EXPR ')' /* End of expression */
- #define M_EXPR ':' /* Middle of two suffix lists */
- #define T_EXPR '=' /* Start of tail */
- #define NO_SCAN 0200 /* Bit set in character to defeat recogn. */
- typedef struct {
- char *p_path; /* points to the full pathname */
- int p_keeps:1; /* The string should be thrown when unused */
- int p_keep:1; /* The file should be thrown away after use */
- } path ;
- #define p_cont(elem) ((path *)l_content(elem))
- /* Return values of setpath() */
- enum f_path { FP_OK, FP_NOMATCH, FP_NOPATH } ;
- /* Own routines */
- enum f_path getpath(trf **first);
- enum f_path scan_end(trf **first);
- void noodstop();
- char *getvar(char *name);
- char *keeps(char *str);
- char *basename(char *string);
- char *skipblank(char *str);
- char *firstblank(char *str);
- char *getcore(unsigned size);
- char *changecore(char *ptr, unsigned int size);
- #define freecore(area) free(area)
- growstring scanb(char *line);
- growstring scanvars(char *line);
- void throws(char *str);
- void start_scan();
- void scan_found();
- void find_cpp();
- void try(list_elem *f_scan, char *suffix);
- void setlist(char *name);
- void fuerror(const char *fmt, ...);
- void transini();
- int process(char *arg);
- void setsvar(char *name, char *str);
- void getmapflags(trf *phase);
- void vprint(const char* fmt, ...);
- void disc_inputs(trf *phase);
- int startrf(trf *first);
- void setpvar(char *name,char *(*rout)(void));
- void l_add(list_head *header, char *string);
- void error(const char *fmt, ...);
- void do_Rflag(char *argp);
- void werror(const char *fmt, ...);
- void add_input(path *file, trf *phase);
- void add_head(char *str);
- void add_tail(char *str);
- int mayprep();
- int transform(trf *phase);
- void fatal(const char* fmt, ...);
- void l_clear(list_head *header);
- int satisfy(trf *trafo, char *suffix);
- int setfiles(trf *phase);
- void disc_files(trf *phase);
- int runphase(trf *phase);
- void rmfile(path *file);
- int mapflag(list_head *maplist, char *cflag);
- void clr_noscan(char *str);
- void l_throw(list_head *header);
- int mapexpand(char *mapentry, char *cflag);
- void prns(char *s);
- void set_Rflag(char *argp);
- void condit(growstring *line, list_head *fsuff, list_head *lsuff, char *tailval);
- void doassign(char *line, char *star, int length);
- void getcallargs(trf *phase);
- void discardargs(trf *phase);
- void quit(int code);
- void rmtemps();
- void intrf();
- void open_in(char *name);
- void close_in();
- int getinchar();
- int getln();
- void keephead(char *suffix);
- void varinit();
- void vieuwargs(int argc, char *argv[]);
- void firstarg(char *argp);
- void block(trf *first);
- void keeptail(char *suffix);
- void scanneeds();
- void setneeds(char *suffix, int tail);
- int run_exec(trf *phase, char *prog);
- void do_flush();
- void file_final(path *file);
- #define DEBUG 1 /* Allow debugging of Ack */
- #ifndef DEBUG
- # define debug 0 /* To surprise all these 'if ( debug ) 's */
- #else
- extern int debug ;
- #endif
- #endif /* UTILS_ACK_ACK_H */
|