proto.h revision d0b797fbf45f3cec923b22f93b61e86a1f867844
1/**************************************************************** 2Copyright (C) Lucent Technologies 1997 3All Rights Reserved 4 5Permission to use, copy, modify, and distribute this software and 6its documentation for any purpose and without fee is hereby 7granted, provided that the above copyright notice appear in all 8copies and that both that the copyright notice and this 9permission notice and warranty disclaimer appear in supporting 10documentation, and that the name Lucent Technologies or any of 11its entities not be used in advertising or publicity pertaining 12to distribution of the software without specific, written prior 13permission. 14 15LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 16INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. 17IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY 18SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 19WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 20IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 21ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 22THIS SOFTWARE. 23****************************************************************/ 24 25/* To avoid conflicts with <stdio.h> getline declaration on Linux */ 26#define getline awk_getline 27 28#include <stdint.h> 29 30extern int yywrap(void); 31extern void setfname(Cell *); 32extern int constnode(Node *); 33extern char *strnode(Node *); 34extern Node *notnull(Node *); 35extern int yyparse(void); 36 37extern int yylex(void); 38extern void startreg(void); 39extern int input(void); 40extern void unput(int); 41extern void unputstr(const char *); 42extern int yylook(void); 43extern int yyback(int *, int); 44extern int yyinput(void); 45 46extern fa *makedfa(const char *, int); 47extern fa *mkdfa(const char *, int); 48extern int makeinit(fa *, int); 49extern void penter(Node *); 50extern void freetr(Node *); 51extern int hexstr(char **); 52extern int quoted(char **); 53extern char *cclenter(const char *); 54extern void overflo(const char *); 55extern void cfoll(fa *, Node *); 56extern int first(Node *); 57extern void follow(Node *); 58extern int member(int, const char *); 59extern int match(fa *, const char *); 60extern int pmatch(fa *, const char *); 61extern int nematch(fa *, const char *); 62extern Node *reparse(const char *); 63extern Node *regexp(void); 64extern Node *primary(void); 65extern Node *concat(Node *); 66extern Node *alt(Node *); 67extern Node *unary(Node *); 68extern int relex(void); 69extern int cgoto(fa *, int, int); 70extern void freefa(fa *); 71 72extern int pgetc(void); 73extern char *cursource(void); 74 75extern Node *nodealloc(int); 76extern Node *exptostat(Node *); 77extern Node *node1(int, Node *); 78extern Node *node2(int, Node *, Node *); 79extern Node *node3(int, Node *, Node *, Node *); 80extern Node *node4(int, Node *, Node *, Node *, Node *); 81extern Node *stat3(int, Node *, Node *, Node *); 82extern Node *op2(int, Node *, Node *); 83extern Node *op1(int, Node *); 84extern Node *stat1(int, Node *); 85extern Node *op3(int, Node *, Node *, Node *); 86extern Node *op4(int, Node *, Node *, Node *, Node *); 87extern Node *stat2(int, Node *, Node *); 88extern Node *stat4(int, Node *, Node *, Node *, Node *); 89extern Node *celltonode(Cell *, int); 90extern Node *rectonode(void); 91extern Node *makearr(Node *); 92extern Node *pa2stat(Node *, Node *, Node *); 93extern Node *linkum(Node *, Node *); 94extern void defn(Cell *, Node *, Node *); 95extern int isarg(const char *); 96extern char *tokname(int); 97extern Cell *(*proctab[])(Node **, int); 98extern intptr_t ptoi(void *); 99extern Node *itonp(intptr_t); 100 101extern void syminit(void); 102extern void arginit(int, char **); 103extern void envinit(char **); 104extern Array *makesymtab(int); 105extern void freesymtab(Cell *); 106extern void freeelem(Cell *, const char *); 107extern Cell *setsymtab(const char *, const char *, double, unsigned int, Array *); 108extern int hash(const char *, int); 109extern void rehash(Array *); 110extern Cell *lookup(const char *, Array *); 111extern double setfval(Cell *, double); 112extern void funnyvar(Cell *, const char *); 113extern char *setsval(Cell *, const char *); 114extern double getfval(Cell *); 115extern char *getsval(Cell *); 116extern char *getpssval(Cell *); /* for print */ 117extern char *tostring(const char *); 118extern char *qstring(const char *, int); 119 120extern void recinit(unsigned int); 121extern void initgetrec(void); 122extern void makefields(int, int); 123extern void growfldtab(int n); 124extern int getrec(char **, int *, int); 125extern void nextfile(void); 126extern int readrec(char **buf, int *bufsize, FILE *inf); 127extern char *getargv(int); 128extern void setclvar(char *); 129extern void fldbld(void); 130extern void cleanfld(int, int); 131extern void newfld(int); 132extern int refldbld(const char *, const char *); 133extern void recbld(void); 134extern Cell *fieldadr(int); 135extern void yyerror(const char *); 136extern void fpecatch(int); 137extern void bracecheck(void); 138extern void bcheck2(int, int, int); 139extern void SYNTAX(const char *, ...); 140extern void FATAL(const char *, ...); 141extern void WARNING(const char *, ...); 142extern void error(void); 143extern void eprint(void); 144extern void bclass(int); 145extern double errcheck(double, const char *); 146extern int isclvar(const char *); 147extern int is_number(const char *); 148 149extern int adjbuf(char **pb, int *sz, int min, int q, char **pbp, const char *what); 150extern void run(Node *); 151extern Cell *execute(Node *); 152extern Cell *program(Node **, int); 153extern Cell *call(Node **, int); 154extern Cell *copycell(Cell *); 155extern Cell *arg(Node **, int); 156extern Cell *jump(Node **, int); 157extern Cell *getline(Node **, int); 158extern Cell *getnf(Node **, int); 159extern Cell *array(Node **, int); 160extern Cell *awkdelete(Node **, int); 161extern Cell *intest(Node **, int); 162extern Cell *matchop(Node **, int); 163extern Cell *boolop(Node **, int); 164extern Cell *relop(Node **, int); 165extern void tfree(Cell *); 166extern Cell *gettemp(void); 167extern Cell *field(Node **, int); 168extern Cell *indirect(Node **, int); 169extern Cell *substr(Node **, int); 170extern Cell *sindex(Node **, int); 171extern int format(char **, int *, const char *, Node *); 172extern Cell *awksprintf(Node **, int); 173extern Cell *awkprintf(Node **, int); 174extern Cell *arith(Node **, int); 175extern double ipow(double, int); 176extern Cell *incrdecr(Node **, int); 177extern Cell *assign(Node **, int); 178extern Cell *cat(Node **, int); 179extern Cell *pastat(Node **, int); 180extern Cell *dopa2(Node **, int); 181extern Cell *split(Node **, int); 182extern Cell *condexpr(Node **, int); 183extern Cell *ifstat(Node **, int); 184extern Cell *whilestat(Node **, int); 185extern Cell *dostat(Node **, int); 186extern Cell *forstat(Node **, int); 187extern Cell *instat(Node **, int); 188extern Cell *bltin(Node **, int); 189extern Cell *printstat(Node **, int); 190extern Cell *nullproc(Node **, int); 191extern FILE *redirect(int, Node *); 192extern FILE *openfile(int, const char *); 193extern const char *filename(FILE *); 194extern Cell *closefile(Node **, int); 195extern void closeall(void); 196extern Cell *sub(Node **, int); 197extern Cell *gsub(Node **, int); 198 199#if !defined(_WIN32) 200/* In mingw, the following are defined with dllimport attributes. 201 Redefining here will only get warning reads: 202 203 ... redeclared without dllimport attribute: previous dllimport ignored 204 */ 205extern FILE *popen(const char *, const char *); 206extern int pclose(FILE *); 207#endif