#ifndef _LIBGP_H #define _LIBGP_H #include "mode.h" /* character classes */ /* bits for testing */ #define _LOWER 01 #define _UPPER 02 #define _SPACE 04 #define _DIGIT 010 #define _EOR 020 #define _META 040 #define _SQBRA _META #define _PTBRA _META #define _STAR _META #define _QUERY _META /* abbreviations for tests */ #define _ALPHA (_UPPER|_LOWER) #define _ALPHANUM (_ALPHA|_DIGIT) EXT CHAR _clook[]; #define QUOTE 0200 /* nb these args are not call by value !!!! */ #define space(c) (((c)"E)==0 ANDF _clook[c]&_SPACE) #define eolchar(c) (((c)"E)==0 ANDF _clook[c]&_EOR) #define layout(c) (((c)"E)==0 ANDF _clook[c]&(_EOR|_SPACE)) #define digit(c) (((c)"E)==0 ANDF _clook[c]&_DIGIT) #define letter(c) (((c)"E)==0 ANDF _clook[c]&_ALPHA) #define upper(c) (((c)"E)==0 ANDF _clook[c]&_UPPER) #define lower(c) (((c)"E)==0 ANDF _clook[c]&_LOWER) #define alphanum(c) (((c)"E)==0 ANDF _clook[c]&_ALPHANUM) #define metachar(c) (((c)"E)==0 ANDF _clook[c]&(_STAR|_QUERY|_SQBRA|_PTBRA)) /* input output and file handling */ /* input */ STRUCT _file FILE; STRUCT _file *FILEPTR; #define F_BUFSIZ 256 #define F_WRITING 1 #define F_READING 2 #define F_EOF 4 #define F_TABCVT 8 #define F_SBLANK 16 #define F_UPPER 32 struct _file { UFD fdes; BYTE fstatus; INT fsiz; L_INT flin; CHAR *ftab; STRING fnxt; STRING fend; FILEPTR fstak; CHAR fbuf[F_BUFSIZ]; }; EXT FILE _infile, _outfile, _errfile; EXT FILEPTR standin, standout, standerr; #define EOF (-1) /* storage allocation */ /* heap */ EXT ADR heapmin, heapmax; /* used for space allocation */ EXT ADR heapnxt; EXT ADR setheap(); EXT ADR getheap(); EXT ADR heap(); EXT ERR heaperr; #define GETHEAP(x) (struct x *)(getheap(sizeof(struct x))) #define HEAP(x) (struct x *)(heap(sizeof(struct x))) /* odds and ends */ CHAR stamp[]; EXT INT mkfault; EXT ERR sigerr; EXT INT any(); EXT INT chkid(); EXT INT cmpstr(); EXT STRING cpystr(); EXT INT equstr(); EXT STRING *parse(); #define PARSERR ((STRING*)(-1)) EXT INT isfile(); EXT STRING itoa(); EXT STRING Ltoa(); EXT INT maketmp(); EXT INT match(); EXT INT max(); EXT STRING movstr(); EXT INT number(); EXT STRING scanfor(); EXT INT upbstr(); #endif