]> andersk Git - splint.git/blob - src/Headers/abstract.h
68cc22610d423b06ee272938834c4b87c6bc360c
[splint.git] / src / Headers / abstract.h
1 /*
2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001.
3 ** See ../LICENSE for license information.
4 **
5 */
6 # ifndef ABSTRACT_H
7 # define ABSTRACT_H
8
9 # ifdef NOLCL
10 # error "Bad include"
11 # endif
12
13 /*
14 **  These two are needed in symtable.c
15 */
16
17 /*@constant int HT_MAXINDEX; @*/
18 # define HT_MAXINDEX 255 
19
20 /* simply use the lower-order bits by masking out the higher order bits */
21
22 # include "ltoken.h"
23 # include "ltokenList.h" 
24
25 typedef enum 
26 {
27   TAG_ENUM, TAG_STRUCT, TAG_UNION, TAG_FWDSTRUCT, TAG_FWDUNION
28 } tagKind;
29
30 # include "importNode.h"
31 # include "importNodeList.h" 
32
33 extern void checkBrackets (ltoken p_lb, ltoken p_rb);
34
35 # include "sortList.h"
36 # include "lsymbolList.h"
37
38 # include "lsymbolSet.h"
39 # include "sortSet.h"
40
41 /*
42 ** added pointer indirects to all typedefs, except as noted
43 ** evs 94-01-05
44 */
45
46 # include "pairNode.h"
47 # include "pairNodeList.h"
48
49 # include "declaratorNode.h"
50 # include "declaratorNodeList.h"
51
52 # include "declaratorInvNode.h"
53 # include "declaratorInvNodeList.h"
54
55 # include "typeExpr.h"  /* also defines abstDeclaratorNode */
56
57 # include "arrayQualNode.h"
58
59 # include "varNode.h"
60 # include "varNodeList.h"
61
62 # include "quantifierNode.h"
63 # include "quantifierNodeList.h"
64
65 # include "storeRefNode.h"
66 # include "storeRefNodeList.h"
67
68 # include "modifyNode.h"
69
70 # include "letDeclNode.h"
71 # include "letDeclNodeList.h"
72
73 # include "programNode.h"
74 # include "programNodeList.h"
75
76 # include "lclPredicateNode.h"
77 # include "exposedNode.h"
78
79 typedef enum {
80   TK_ABSTRACT, TK_EXPOSED, TK_UNION
81   } typeKind ;
82
83 # include "CTypesNode.h"
84
85 # include "initDeclNode.h"
86 # include "initDeclNodeList.h"
87
88 # include "constDeclarationNode.h"
89
90 typedef enum {
91   QLF_NONE, QLF_CONST, QLF_VOLATILE
92   } qualifierKind;
93
94 # include "varDeclarationNode.h"
95 # include "varDeclarationNodeList.h"
96
97 # include "globalList.h"
98
99 # include "claimNode.h"
100
101 # include "fcnNode.h"
102 # include "fcnNodeList.h"
103
104 # include "iterNode.h"
105
106 # include "abstBodyNode.h"
107 # include "abstractNode.h"
108
109 # include "stDeclNode.h"
110 # include "stDeclNodeList.h"
111
112 # include "taggedUnionNode.h"
113 # include "typeNode.h"
114
115 # include "strOrUnionNode.h"
116 # include "enumSpecNode.h"
117
118 # include "lclTypeSpecNode.h"
119 # include "typeNamePack.h"
120
121 # include "typeNameNode.h"
122 # include "typeNameNodeList.h"              /* this is a list of typeNameNode's */
123
124 # include "opFormNode.h"
125
126 # include "quantifiedTermNode.h"
127
128 typedef enum {
129   TRM_LITERAL, TRM_CONST, TRM_VAR, 
130   TRM_ZEROARY, TRM_APPLICATION, TRM_QUANTIFIER,
131   TRM_UNCHANGEDALL, TRM_UNCHANGEDOTHERS, 
132   TRM_SIZEOF
133   } termKIND;
134
135 # include "sigNode.h"
136 # include "sigNodeSet.h"
137
138 # include "signNode.h"
139 # include "nameNode.h"
140
141 # include "lslOp.h"
142 # include "lslOpSet.h"
143
144 # include "replaceNode.h"
145 # include "replaceNodeList.h"
146
147 # include "renamingNode.h"
148
149 # include "traitRefNode.h"
150 # include "traitRefNodeList.h"
151
152 # include "exportNode.h"
153 # include "privateNode.h"
154
155 # include "interfaceNode.h"
156 # include "interfaceNodeList.h" /* note: interfaceList --> interfaceNodeList */
157
158 # include "termNode.h"
159 # include "termNodeList.h"
160 # include "stmtNode.h"
161
162 /* The following are for parsing LSL signatures */
163
164 # include "sortSetList.h"
165 # include "lslOpList.h"
166
167 /* function prototypes for parsing LSL signatures */
168
169 extern /*@only@*/ lslOp
170   makelslOpNode (/*@only@*/ /*@null@*/ nameNode p_name,
171                  /*@dependent@*/ sigNode p_s);
172
173 extern /*@only@*/ cstring lslOp_unparse (lslOp p_x);
174
175 /*@notfunction@*/
176 # define MASH(x,y) \
177   (/*@+enumint@*/ (((unsigned) ((x)+1) << 1) + (y)) & HT_MAXINDEX /*@=enumint@*/) 
178
179 extern void abstract_init (void);
180 extern void resetImports (cstring p_current) ;
181
182 extern interfaceNodeList 
183   consInterfaceNode (/*@only@*/ interfaceNode p_n, /*@returned@*/ interfaceNodeList p_ns);
184
185 /* evs 8 Sept 1993       changed to importNodeList */
186 extern /*@only@*/ interfaceNode 
187   makeInterfaceNodeImports (/*@only@*/ importNodeList p_x);
188
189 extern /*@only@*/ nameNode 
190   makeNameNodeForm (/*@only@*/ /*@null@*/ opFormNode p_opform) /*@*/ ;
191 extern /*@only@*/ nameNode
192   makeNameNodeId (/*@only@*/ ltoken p_opid) /*@*/ ;
193 extern /*@only@*/ interfaceNode 
194   makeInterfaceNodeUses (/*@only@*/ traitRefNodeList p_x) /*@*/ ;
195 extern /*@only@*/ interfaceNode 
196   interfaceNode_makeConst (/*@only@*/ constDeclarationNode p_x) /*@*/ ;
197 extern /*@only@*/ interfaceNode 
198   interfaceNode_makeVar (/*@only@*/ varDeclarationNode p_x) /*@*/ ;
199 extern /*@only@*/ interfaceNode 
200   interfaceNode_makeType (/*@only@*/ typeNode p_x) /*@*/ ;
201 extern /*@only@*/ interfaceNode 
202   interfaceNode_makeFcn (/*@only@*/ fcnNode p_x) /*@*/ ;
203 extern /*@only@*/ interfaceNode 
204   interfaceNode_makeClaim (/*@only@*/ claimNode p_x) /*@*/ ;
205 extern /*@only@*/ interfaceNode interfaceNode_makeIter (/*@only@*/ iterNode p_x) /*@*/ ;
206 extern /*@only@*/ interfaceNode interfaceNode_makePrivConst(/*@only@*/ constDeclarationNode p_x) /*@*/ ;
207 extern /*@only@*/ interfaceNode 
208   interfaceNode_makePrivVar(/*@only@*/ varDeclarationNode p_x) /*@*/ ;
209 extern /*@only@*/ interfaceNode 
210   interfaceNode_makePrivType(/*@only@*/ typeNode p_x) /*@*/ ;
211 extern /*@only@*/ interfaceNode 
212   interfaceNode_makePrivFcn(/*@only@*/ fcnNode p_x) /*@*/ ;
213 extern /*@only@*/ typeNode makeAbstractTypeNode (/*@only@*/ abstractNode p_x) /*@*/ ;
214 extern /*@only@*/ typeNode makeExposedTypeNode (/*@only@*/ exposedNode p_x) /*@*/ ;
215
216 extern /*@only@*/ traitRefNode 
217   makeTraitRefNode(/*@only@*/ ltokenList p_fl, /*@null@*/ /*@only@*/ renamingNode p_r) /*@*/ ;
218
219 extern /*@only@*/ cstring printLeaves2 (ltokenList p_f) /*@*/ ;
220 extern /*@only@*/ cstring printRawLeaves2 (ltokenList p_f) /*@*/ ;
221 extern /*@only@*/ cstring sigNode_unparseText (/*@null@*/ sigNode p_n) /*@*/ ;
222
223 extern /*@only@*/ renamingNode 
224   makeRenamingNode (/*@only@*/ typeNameNodeList p_n, 
225                     /*@only@*/ replaceNodeList p_r) /*@*/ ; 
226 extern /*@only@*/ replaceNode 
227   makeReplaceNode (/*@only@*/ ltoken p_t, /*@only@*/ typeNameNode p_tn, bool p_is_ctype, 
228                    /*@only@*/ ltoken p_ct, 
229                    /*@null@*/ /*@only@*/ nameNode p_nn, 
230                    /*@null@*/ /*@only@*/ sigNode p_sn) /*@*/ ;
231
232 extern /*@only@*/ sigNode 
233   makesigNode (/*@only@*/ ltoken p_t, /*@only@*/ ltokenList p_domain, /*@only@*/ ltoken p_range) /*@*/ ;
234
235 extern /*@only@*/ replaceNode 
236   makeReplaceNameNode (/*@only@*/ ltoken p_t, /*@only@*/ typeNameNode p_tn, 
237                        /*@only@*/ nameNode p_nn) /*@*/ ;
238
239 extern /*@only@*/ opFormNode 
240   makeOpFormNode(/*@only@*/ ltoken p_t, opFormKind p_k, 
241                  opFormUnion p_u, /*@only@*/ ltoken p_close) /*@*/ ;
242
243 extern /*@only@*/ typeNameNode 
244   makeTypeNameNode (bool p_isObj, /*@only@*/ lclTypeSpecNode p_t, 
245                     /*@only@*/ abstDeclaratorNode p_n) /*@*/ ;
246 extern /*@only@*/ typeNameNode 
247   makeTypeNameNodeOp (/*@only@*/ opFormNode p_n) /*@*/ ;
248
249 extern /*@only@*/ lclTypeSpecNode 
250   makeLclTypeSpecNodeConj (/*@only@*/ /*@null@*/ lclTypeSpecNode p_a, 
251                            /*@only@*/ /*@null@*/ lclTypeSpecNode p_b) /*@*/ ;
252
253 extern /*@only@*/ lclTypeSpecNode
254   makeLclTypeSpecNodeType(/*@only@*/ /*@null@*/ CTypesNode p_x) /*@*/ ;
255
256 extern /*@only@*/ lclTypeSpecNode 
257   makeLclTypeSpecNodeSU(/*@only@*/ /*@null@*/ strOrUnionNode p_x) /*@*/ ;
258
259 extern /*@only@*/ lclTypeSpecNode 
260   makeLclTypeSpecNodeEnum(/*@only@*/ /*@null@*/ enumSpecNode p_x) /*@*/ ;
261
262 extern /*@only@*/ lclTypeSpecNode 
263   lclTypeSpecNode_addQual (/*@only@*/ lclTypeSpecNode p_n, qual p_q) 
264   /*@modifies p_n@*/ ;
265
266 extern /*@only@*/ enumSpecNode 
267   makeEnumSpecNode (/*@only@*/ ltoken p_t, /*@only@*/ ltoken p_optTagId, /*@owned@*/ ltokenList p_enums);
268
269 extern /*@only@*/ enumSpecNode 
270   makeEnumSpecNode2 (/*@only@*/ ltoken p_t, /*@only@*/ ltoken p_tagid);
271
272 extern /*@only@*/ strOrUnionNode 
273   makestrOrUnionNode (/*@only@*/ ltoken p_str, suKind p_k,
274                          /*@only@*/ ltoken p_opttagid, /*@only@*/ stDeclNodeList p_x);
275
276 extern /*@only@*/ strOrUnionNode 
277   makeForwardstrOrUnionNode (/*@only@*/ ltoken p_str, suKind p_k, 
278                                 /*@only@*/ ltoken p_tagid);
279
280 extern /*@only@*/ stDeclNode 
281   makestDeclNode (/*@only@*/ lclTypeSpecNode p_s, 
282                   /*@only@*/ declaratorNodeList p_x);
283 extern /*@only@*/ constDeclarationNode 
284   makeConstDeclarationNode (/*@only@*/ lclTypeSpecNode p_t,
285                             /*@only@*/ initDeclNodeList p_decls);
286 extern /*@only@*/ varDeclarationNode 
287   makeVarDeclarationNode (/*@only@*/ lclTypeSpecNode p_t, 
288                           /*@only@*/ initDeclNodeList p_x, 
289                           bool p_isGlobal, bool p_isPrivate);
290
291 extern varDeclarationNode makeFileSystemNode (void);
292 extern varDeclarationNode makeInternalStateNode (void);
293
294 extern /*@only@*/ initDeclNode 
295   makeInitDeclNode (/*@only@*/ declaratorNode p_d, /*@null@*/ /*@only@*/ termNode p_x);
296
297 extern /*@only@*/ abstractNode 
298   makeAbstractNode (/*@only@*/ ltoken p_t, /*@only@*/ ltoken p_name,
299                     bool p_isMutable, bool p_isRefCounted,
300                     /*@only@*/ abstBodyNode p_a);
301
302 extern /*@unused@*/ /*@only@*/ cstring abstBodyNode_unparseExposed (abstBodyNode p_n);
303
304 extern /*@only@*/ exposedNode 
305   makeExposedNode (/*@only@*/ ltoken p_t, /*@only@*/ lclTypeSpecNode p_s, 
306                    /*@only@*/ declaratorInvNodeList p_d);
307
308 extern /*@only@*/ declaratorInvNode 
309   makeDeclaratorInvNode (/*@only@*/ declaratorNode p_d, 
310                          /*@only@*/ abstBodyNode p_b);
311
312 extern /*@only@*/ fcnNode
313   fcnNode_fromDeclarator (/*@only@*/ /*@null@*/ lclTypeSpecNode p_t, 
314                           /*@only@*/ declaratorNode p_d);
315
316 extern /*@only@*/ fcnNode
317   makeFcnNode (qual p_specQual,
318                /*@only@*/ /*@null@*/ lclTypeSpecNode p_t, 
319                /*@only@*/ declaratorNode p_d,
320                /*@only@*/ /*@null@*/ globalList p_g, 
321                /*@only@*/ /*@null@*/ varDeclarationNodeList p_privateinits,
322                /*@only@*/ /*@null@*/ letDeclNodeList p_lets,
323                /*@only@*/ /*@null@*/ lclPredicateNode p_checks,
324                /*@only@*/ /*@null@*/ lclPredicateNode p_requires, 
325                /*@only@*/ /*@null@*/ modifyNode p_m,
326                /*@only@*/ /*@null@*/ lclPredicateNode p_ensures, 
327                /*@only@*/ /*@null@*/ lclPredicateNode p_claims);
328
329 extern /*@only@*/ iterNode 
330   makeIterNode (/*@only@*/ ltoken p_id, /*@only@*/ paramNodeList p_p);
331
332 extern /*@only@*/ claimNode 
333   makeClaimNode (/*@only@*/ ltoken p_id, 
334                  /*@only@*/ paramNodeList p_p, 
335                  /*@only@*/ /*@null@*/ globalList p_g, 
336                  /*@only@*/ /*@null@*/ letDeclNodeList p_lets, 
337                  /*@only@*/ /*@null@*/ lclPredicateNode p_requires, 
338                  /*@only@*/ /*@null@*/ programNode p_b, 
339                  /*@only@*/ /*@null@*/ lclPredicateNode p_ensures);
340
341 extern /*@only@*/ lclPredicateNode 
342   makeIntraClaimNode (/*@only@*/ ltoken p_t, /*@only@*/ lclPredicateNode p_n);
343
344 extern /*@only@*/ lclPredicateNode 
345   makeRequiresNode (/*@only@*/ ltoken p_t, /*@only@*/ lclPredicateNode p_n);
346
347 extern /*@only@*/ lclPredicateNode 
348   makeChecksNode (/*@only@*/ ltoken p_t, /*@only@*/ lclPredicateNode p_n);
349
350 extern /*@only@*/ lclPredicateNode 
351   makeEnsuresNode (/*@only@*/ ltoken p_t, /*@only@*/ lclPredicateNode p_n);
352
353 extern /*@only@*/ lclPredicateNode 
354   makeLclPredicateNode (/*@only@*/ ltoken p_t, /*@only@*/ termNode p_n, 
355                         lclPredicateKind p_k);
356
357 extern /*@only@*/ stmtNode
358   makeStmtNode (/*@only@*/ ltoken p_varId, 
359                 /*@only@*/ ltoken p_fcnId, /*@only@*/ termNodeList p_v);
360
361 extern /*@only@*/ programNode 
362   makeProgramNodeAction (/*@only@*/ programNodeList p_x, actionKind p_k);
363
364 extern /*@only@*/ programNode 
365   makeProgramNode (/*@only@*/ stmtNode p_x);
366
367 extern /*@only@*/ storeRefNode 
368   makeStoreRefNodeTerm (/*@only@*/ termNode p_t);
369
370 extern /*@only@*/ storeRefNode 
371   makeStoreRefNodeType (/*@only@*/ lclTypeSpecNode p_t, bool p_isObj);
372
373 extern /*@only@*/ modifyNode 
374   makeModifyNodeSpecial (/*@only@*/ ltoken p_t, bool p_modifiesNothing);
375
376 extern storeRefNode makeStoreRefNodeInternal (void);
377 extern storeRefNode makeStoreRefNodeSystem (void);
378
379 extern /*@only@*/ modifyNode 
380   makeModifyNodeRef (/*@only@*/ ltoken p_t, /*@only@*/ storeRefNodeList p_y);
381
382 extern /*@only@*/ letDeclNode 
383   makeLetDeclNode(/*@only@*/ ltoken p_varid, /*@null@*/ /*@only@*/ lclTypeSpecNode p_t, 
384                   /*@only@*/ termNode p_term);
385
386 extern /*@only@*/ abstBodyNode 
387   makeAbstBodyNode (/*@only@*/ ltoken p_t, /*@only@*/ fcnNodeList p_f);
388
389 extern /*@only@*/ abstBodyNode 
390   makeExposedBodyNode (/*@only@*/ ltoken p_t, /*@only@*/ lclPredicateNode p_inv);
391
392 extern /*@only@*/ abstBodyNode 
393   makeAbstBodyNode2 (/*@only@*/ ltoken p_t, /*@only@*/ ltokenList p_ops); 
394
395 extern paramNode markYieldParamNode (/*@returned@*/ paramNode p_p);
396
397 extern /*@only@*/ arrayQualNode 
398   makeArrayQualNode (/*@only@*/ ltoken p_t, /*@null@*/ /*@only@*/ termNode p_term);
399
400 extern /*@only@*/ quantifierNode 
401   makeQuantifierNode (/*@only@*/ varNodeList p_v, /*@only@*/ ltoken p_quant);
402
403 extern /*@only@*/ varNode 
404   makeVarNode (/*@only@*/ ltoken p_varid, bool p_isObj, /*@only@*/ lclTypeSpecNode p_t);
405
406 extern /*@only@*/ typeExpr makeTypeExpr (/*@only@*/ ltoken p_t);
407
408 extern /*@only@*/ declaratorNode 
409   makeDeclaratorNode (/*@only@*/ typeExpr p_t);
410
411 extern /*@only@*/ typeExpr 
412   makeFunctionNode (/*@null@*/ /*@only@*/ typeExpr p_x, /*@only@*/ paramNodeList p_p);
413
414 extern /*@only@*/ typeExpr
415   makePointerNode (/*@only@*/ ltoken p_star, /*@null@*/ /*@only@*/ /*@returned@*/ typeExpr p_x);
416
417 extern /*@only@*/ typeExpr 
418   makeArrayNode (/*@only@*/ /*@returned@*/ /*@null@*/ typeExpr p_x, 
419                  /*@only@*/ arrayQualNode p_a);
420
421 extern /*@only@*/ paramNode 
422   makeParamNode (/*@only@*/ lclTypeSpecNode p_t, /*@only@*/ typeExpr p_d);
423
424 extern /*@only@*/ termNode 
425   makeIfTermNode (/*@only@*/ ltoken p_ift, /*@only@*/ termNode p_ifn, 
426                   /*@only@*/ ltoken p_thent, /*@only@*/ termNode p_thenn, 
427                   /*@only@*/ ltoken p_elset, /*@only@*/ termNode p_elsen);
428
429 extern /*@only@*/ termNode 
430   makeQuantifiedTermNode (/*@only@*/ quantifierNodeList p_qn, 
431                           /*@only@*/ ltoken p_open, 
432                           /*@only@*/ termNode p_t, /*@only@*/ ltoken p_close);
433
434 extern /*@only@*/ termNode 
435   makeInfixTermNode (/*@only@*/ termNode p_x, /*@only@*/ ltoken p_op, 
436                      /*@only@*/ termNode p_y);
437
438 extern /*@only@*/ termNode 
439   makePostfixTermNode (/*@returned@*/ /*@only@*/ termNode p_secondary,
440                        /*@only@*/ ltokenList p_postfixops);
441
442 extern /*@only@*/ termNode 
443   makePostfixTermNode2 (/*@only@*/ /*@returned@*/ termNode p_secondary, 
444                         /*@only@*/ ltoken p_postfixop);
445
446 extern /*@only@*/ termNode 
447   makePrefixTermNode (/*@only@*/ ltoken p_op, /*@only@*/ termNode p_arg);
448
449 extern /*@exposed@*/ termNode 
450   CollapseInfixTermNode (/*@returned@*/ termNode p_secondary, termNodeList p_infix);
451
452 extern /*@only@*/ termNode 
453   makeMatchedNode (/*@only@*/ ltoken p_open, 
454                    /*@only@*/ termNodeList p_args, /*@only@*/ ltoken p_close);
455
456 extern /*@only@*/ termNode 
457   makeSqBracketedNode (/*@only@*/ ltoken p_lbracket, 
458                        /*@only@*/ termNodeList p_args, 
459                        /*@only@*/ ltoken p_rbracket);
460
461 extern /*@only@*/ termNode
462   updateSqBracketedNode (/*@null@*/ /*@only@*/ termNode p_left,
463                          /*@only@*/ /*@returned@*/ termNode p_t,
464                          /*@null@*/ /*@only@*/ termNode p_right);
465
466 extern termNode 
467   updateMatchedNode (/*@null@*/ /*@only@*/ termNode p_left, /*@returned@*/ termNode p_t, 
468                      /*@null@*/ /*@only@*/ termNode p_right);
469
470 extern /*@only@*/ termNode 
471   makeSimpleTermNode (/*@only@*/ ltoken p_varid);
472 extern /*@only@*/ termNode 
473   makeSelectTermNode (/*@only@*/ termNode p_pri, /*@only@*/ ltoken p_select,
474                       /*@dependent@*/ ltoken p_id);
475 extern /*@only@*/ termNode 
476   makeMapTermNode (/*@only@*/ termNode p_pri, /*@only@*/ ltoken p_map, 
477                    /*@dependent@*/ ltoken p_id);
478 extern /*@only@*/ termNode 
479   makeLiteralTermNode (/*@only@*/ ltoken p_tok, sort p_s); 
480
481 extern /*@only@*/ termNode 
482   makeUnchangedTermNode1 (/*@only@*/ ltoken p_op, /*@only@*/ ltoken p_all); 
483 extern /*@only@*/ termNode 
484   makeUnchangedTermNode2 (/*@only@*/ ltoken p_op, /*@only@*/ storeRefNodeList p_x); 
485 extern /*@only@*/ termNode 
486   makeSizeofTermNode(/*@only@*/ ltoken p_op, /*@only@*/ lclTypeSpecNode p_type);
487 extern /*@only@*/ termNode 
488   makeOpCallTermNode (/*@only@*/ ltoken p_op, /*@only@*/ ltoken p_open, 
489                       /*@only@*/ termNodeList p_args, /*@only@*/ ltoken p_close);
490
491 extern sort sigNode_rangeSort (sigNode p_sig);
492
493 extern /*@only@*/ sortList sigNode_domain (sigNode p_sig);
494
495 extern bool sameNameNode (/*@null@*/ nameNode p_n1, /*@null@*/ nameNode p_n2);
496
497 extern /*@only@*/ CTypesNode 
498   makeCTypesNode (/*@null@*/ /*@only@*/ CTypesNode p_ctypes, /*@only@*/ ltoken p_ct);
499
500 extern /*@only@*/ CTypesNode 
501   makeTypeSpecifier (/*@only@*/ ltoken p_typedefname) ;
502
503 extern bool sigNode_equal (sigNode p_n1, sigNode p_n2);
504
505 extern sort lclTypeSpecNode2sort(lclTypeSpecNode p_type);
506
507 extern sort typeExpr2ptrSort(sort p_base, /*@null@*/ typeExpr p_t);
508
509 /* should be tagKind, instead of int */
510 extern lsymbol checkAndEnterTag(tagKind p_k, /*@only@*/ ltoken p_opttagid);
511 extern void enteringFcnScope(lclTypeSpecNode p_t, declaratorNode p_d, globalList p_g);
512 extern void enteringClaimScope (paramNodeList p_params, globalList p_g);
513
514 extern /*@observer@*/ ltoken nameNode_errorToken (/*@null@*/ nameNode p_nn);
515 extern /*@observer@*/ ltoken termNode_errorToken (/*@null@*/ termNode p_n);
516 extern /*@observer@*/ ltoken lclTypeSpecNode_errorToken (/*@null@*/ lclTypeSpecNode p_t);
517
518 extern opFormUnion opFormUnion_createAnyOp (ltoken p_t); 
519 extern opFormUnion opFormUnion_createMiddle (int p_middle); 
520 extern void LCLBuiltins (void);
521 extern /*@only@*/ paramNode paramNode_elipsis (void);
522 extern termNodeList 
523   pushInfixOpPartNode (/*@returned@*/ termNodeList p_x, /*@only@*/ ltoken p_op,
524                        /*@only@*/ termNode p_secondary);
525 extern /*@only@*/ cstring declaratorNode_unparseCode (declaratorNode p_x);
526
527 extern /*@only@*/ cstring typeExpr_name (/*@null@*/ typeExpr p_x);
528
529 extern void setExposedType (lclTypeSpecNode p_s);
530 extern void declareForwardType (declaratorNode p_declare);
531
532 extern /*@only@*/ declaratorNode declaratorNode_copy (declaratorNode p_x);
533
534 extern bool lslOp_equal (lslOp p_x, lslOp p_y);
535
536 extern void lsymbol_setbool (lsymbol p_s) /*@modifies internalState@*/ ;
537 extern lsymbol lsymbol_getbool (void);
538 extern lsymbol lsymbol_getBool (void);
539 extern lsymbol lsymbol_getTRUE (void);
540 extern lsymbol lsymbol_getFALSE (void);
541
542
543 # else
544 # error "Multiple include"
545 # endif
This page took 0.732236 seconds and 3 git commands to generate.