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