[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / yaccParser / utils.h
1 /*
2         Utility Definitions.
3 */
4
5 #ifndef __UTILS_H
6 #define __UTILS_H
7
8 /* stuff from util.c */
9 extern tree root;
10 extern list Lnil;
11 extern list all;
12
13 extern BOOLEAN nonstandardFlag;
14 extern BOOLEAN hashIds;
15 extern BOOLEAN acceptPrim;
16 extern BOOLEAN etags;
17                                   
18 extern BOOLEAN ignoreSCC;
19 extern BOOLEAN warnSCC;
20                                   
21 extern BOOLEAN implicitPrelude;
22 extern BOOLEAN ignorePragmas;
23
24 extern int minAcceptablePragmaVersion;
25 extern int maxAcceptablePragmaVersion;
26 extern int thisIfacePragmaVersion;
27
28 extern unsigned hash_table_size;
29 extern char *input_file_dir;
30
31 extern list imports_dirlist;
32 extern list sys_imports_dirlist;
33
34 extern char HiSuffix[];
35 extern char PreludeHiSuffix[];
36
37 extern void process_args PROTO((int, char **));
38
39 /* end of util.c stuff */
40
41 extern list mklcons     PROTO((void *h, list t)); /* if we have PROTO, we have "void *" */
42 extern list lapp        PROTO((list l1, void *l2));
43 extern list lconc       PROTO((list l1, list l2));
44 extern list mktruecase  PROTO((tree t));
45
46 #define lsing(l) mklcons(l, Lnil)               /* Singleton Lists */
47 #define ldub(l1, l2) mklcons(l1, lsing(l2))     /* Two-element Lists */
48
49 #define FN fns[icontexts]
50 #define SAMEFN samefn[icontexts]
51 #define PREVPATT prevpatt[icontexts]
52
53 extern tree *Rginfun PROTO((struct Sap *));
54 extern tree *Rginarg1 PROTO((struct Sap *));
55 extern tree *Rginarg2 PROTO((struct Sap *));
56
57 #define ginfun(xx) *Rginfun(xx)
58 #define ginarg1(xx) *Rginarg1(xx)
59 #define ginarg2(xx) *Rginarg2(xx)
60
61 extern id installid PROTO((char *));               /* Create a new identifier */
62 extern hstring installHstring PROTO((int, char *)); /* Create a new literal string */
63
64 extern id install_literal PROTO((char *));
65 extern char     *id_to_string PROTO((id));
66
67 extern struct infix *infixlookup();
68
69 /* partain additions */
70
71 extern char     *xmalloc PROTO((unsigned)); /* just a GNU-style error-checking malloc */
72 extern int       printf  PROTO((const char *, ...));
73 extern int       fprintf PROTO((FILE *, const char *, ...));
74 /*varies (sun/alpha): extern int         fputc   PROTO((char, FILE *)); */
75 extern int       fputs   PROTO((const char *, FILE *));
76 extern int       sscanf  PROTO((const char *, const char *, ...));
77 extern long      strtol  PROTO((const char *, char **, int));
78 extern size_t    fread   PROTO((void *, size_t, size_t, FILE *));
79 extern int       fclose  PROTO((FILE *));
80 extern int       isatty  PROTO((int));
81 /*extern ???       _filbuf */
82 /*extern ???     _flsbuf */
83
84 extern void      format_string PROTO((FILE *, unsigned char *, int));
85 extern tree      mkbinop PROTO((char *, tree, tree));
86 extern tree      mkinfixop PROTO((char *, tree, tree));
87 extern list      type2context PROTO((ttype));
88 extern pbinding  createpat PROTO((list, binding));
89 extern void      process_args PROTO((int, char **));
90 extern void      hash_init PROTO((void));
91 extern void      print_hash_table PROTO((void));
92 extern long int  hash_index PROTO((id));
93 extern void      yyinit PROTO((void));
94 extern int       yyparse PROTO((void));
95 extern int       yylex PROTO((void));
96 extern void      setyyin PROTO((char *));
97 extern void      yyerror PROTO((char *));
98 extern void      error PROTO((char *));
99 extern void      hsperror PROTO((char *));
100 extern void      enteriscope PROTO((void));
101 extern void      exposeis PROTO((void));
102 extern void      makeinfix PROTO((id, int, int));
103 extern int       nfixes PROTO((void));
104 extern long int  precedence PROTO((int));
105 extern int       pprecedence PROTO((struct infix *));
106 extern void      rearrangeprec PROTO((tree, tree));
107 extern int       pfixity PROTO((struct infix *));
108 extern void      hsincindent PROTO((void));
109 extern void      hssetindent PROTO((void));
110 extern void      hsentercontext PROTO((int));
111 extern void      hsendindent PROTO((void));
112 extern void      hsindentoff PROTO((void));
113
114 extern int       checkfixity PROTO((char *));
115 extern void      checksamefn PROTO((char *));
116 extern void      checkcontext PROTO((list));
117 extern void      checkinpat PROTO((void));
118 extern void      checkpatt PROTO((tree));
119 extern BOOLEAN   lhs_is_patt PROTO((tree));
120 extern tree      function PROTO((tree));
121 extern void      checkconap PROTO((tree, tree));
122 extern void      extendfn PROTO((binding, binding));
123 extern void      precparse PROTO((tree));
124 extern void      checkorder PROTO((binding));
125 extern BOOLEAN   checkorder2 PROTO((binding, BOOLEAN));
126 extern BOOLEAN   checksig PROTO((BOOLEAN, binding));
127 extern void      checkprec PROTO((tree, id, BOOLEAN));
128 extern BOOLEAN   isconstr PROTO((char *));
129 extern void      setstartlineno PROTO((void));
130 extern void      pprogram PROTO((tree));
131 extern void      who_am_i PROTO((void));
132 extern void      new_filename PROTO((char *));
133 extern int       Return PROTO((int));
134
135 /* mattson additions */
136 extern char *xstrdup PROTO((char *));           /* Duplicate a string */
137 extern char *xstrndup PROTO((char *, unsigned));/* Duplicate a substring */
138 extern char *xrealloc PROTO((char *, unsigned));/* Re-allocate a string */
139
140 #endif /* __UTILS_H */