]> andersk Git - splint.git/blame - src/Headers/uentry.h
Initial revision
[splint.git] / src / Headers / uentry.h
CommitLineData
885824d3 1/*
2** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2000.
3** See ../LICENSE for license information.
4*/
5# ifndef UENTRY_H
6# define UENTRY_H
7# define CENTRY_H
8
9/*
10** universal symbol table entry
11** (combines old llentry, centry, and ttentry)
12*/
13
14/*
15** vkind --- need to fix value for consistency in dump files
16*/
17
18typedef struct _ucinfo
19{
20 /*@only@*/ multiVal val;
21 typeIdSet access;
22} *ucinfo;
23
24typedef enum
25{
26 VKSPEC = 0, VKNORMAL,
27 VKPARAM, VKYIELDPARAM, VKREFYIELDPARAM,
28 VKRETPARAM, VKREFPARAM,
29 VKSEFPARAM, VKREFSEFPARAM,
30 VKSEFRETPARAM, VKREFSEFRETPARAM,
31 VKEXPMACRO
32} vkind;
33
34/*@constant vkind VKFIRST;@*/
35# define VKFIRST VKSPEC
36
37/*@constant vkind VKLAST;@*/
38# define VKLAST VKEXPMACRO
39
40typedef enum
41{
42 CH_UNKNOWN,
43 CH_UNCHECKED,
44 CH_CHECKED,
45 CH_CHECKMOD,
46 CH_CHECKEDSTRICT
47} chkind;
48
49typedef struct _uvinfo
50{
51 vkind kind; /* kind (parameter, specified) */
52 chkind checked; /* how is it checked */
53 sstate defstate;
54 nstate nullstate;
55} *uvinfo ;
56
57typedef struct _udinfo
58{
59 ynm abs;
60 ynm mut;
61 ctype type;
62} *udinfo ;
63
64/* information for specified functions */
65
66typedef enum
67{
68 SPC_NONE,
69 SPC_PRINTFLIKE,
70 SPC_SCANFLIKE,
71 SPC_MESSAGELIKE,
72 SPC_LAST
73} specCode;
74
75typedef struct _ufinfo
76{
77 qual nullPred;
78 specCode specialCode;
79 exitkind exitCode;
80 typeIdSet access; /* access types */
81
82 /*@owned@*/ globSet globs; /* globals list */
83 /*@owned@*/ sRefSet mods; /* modifies */
84
85 specialClauses specclauses;
86
87 /*@dependent@*/ uentryList defparams;
88 bool hasGlobs BOOLBITS;
89 bool hasMods BOOLBITS;
90} *ufinfo ;
91
92typedef struct _uiinfo
93{
94 typeIdSet access;
95 /*@owned@*/ globSet globs; /* globals list */
96 /*@owned@*/ sRefSet mods; /* modifies */
97} *uiinfo ;
98
99typedef struct _ueinfo
100{
101 typeIdSet access;
102} *ueinfo ;
103
104typedef union _uinfo
105{
106 ucinfo uconst;
107 uvinfo var;
108 udinfo datatype;
109 ufinfo fcn;
110 uiinfo iter;
111 ueinfo enditer;
112} *uinfo ;
113
114struct _uentry
115{
116 ekind ukind;
117 cstring uname;
118 ctype utype;
119
120 fileloc whereSpecified;
121 fileloc whereDefined;
122 fileloc whereDeclared;
123
124 /* meaning of sref is different for:
125 ** variables current state
126 ** functions state of return value
127 ** types state of datatype
128 */
129 /*@exposed@*/ /*@null@*/ sRef sref;
130
131 /* Location list is complete only if showalluses is set. */
132 filelocList uses;
133
134 bool used BOOLBITS;
135 bool lset BOOLBITS; /* set in local table */
136 bool isPrivate BOOLBITS; /* specification only */
137 bool hasNameError BOOLBITS;
138
139 storageClassCode storageclass;
140 /*@relnull@*/ uinfo info; /* null for KELIPSMARKER, KINVALID */
141} ;
142
143/*
144** There is no uentry_isDefined to avoid confusion with
145** uentry_isCodeDefined (which was previously called
146** uentry_isDefined.
147*/
148
149extern /*@truenull@*/ bool uentry_isUndefined (/*@special@*/ uentry p_e)
150 /*@*/ ;
151extern /*@truenull@*/ bool uentry_isInvalid (/*@special@*/ uentry p_e)
152 /*@*/ ;
153extern /*@falsenull@*/ bool uentry_isValid (/*@special@*/ uentry p_e)
154 /*@*/ ;
155
156/*@constant null uentry uentry_undefined; @*/
157# define uentry_undefined ((uentry) NULL)
158
159# define uentry_isUndefined(e) ((e) == uentry_undefined)
160# define uentry_isValid(e) ((e) != uentry_undefined)
161# define uentry_isInvalid(e) ((e) == uentry_undefined)
162
163extern int uentry_compareStrict (uentry p_v1, uentry p_v2);
164
165/*@constant int PARAMUNKNOWN; @*/
166# define PARAMUNKNOWN -1
167
168extern bool uentry_isMaybeAbstract (uentry p_e) /*@*/ ;
169extern void uentry_setAbstract (uentry p_e) /*@modifies p_e@*/ ;
170extern void uentry_setConcrete (uentry p_e) /*@modifies p_e@*/ ;
171extern void uentry_setHasNameError (uentry p_ue) /*@modifies p_ue@*/ ;
172
173extern /*@falsenull@*/ bool uentry_isLset (/*@sef@*/ uentry p_e);
174# define uentry_isLset(e) \
175 (uentry_isValid(e) && (e)->lset)
176
177extern /*@falsenull@*/ bool uentry_isUsed (/*@sef@*/ uentry p_e);
178# define uentry_isUsed(e) (uentry_isValid(e) && (e)->used)
179
180extern /*@unused@*/ /*@falsenull@*/ bool
181 uentry_isAbstractType (uentry p_e) /*@*/ ;
182# define uentry_isAbstractType(e) (uentry_isAbstractDatatype(e))
183
184extern /*@falsenull@*/ bool uentry_isConstant (/*@sef@*/ uentry p_e) /*@*/ ;
185# define uentry_isConstant(e) \
186 (uentry_isValid(e) && ekind_isConst ((e)->ukind))
187
188extern /*@falsenull@*/ bool uentry_isEitherConstant (/*@sef@*/ uentry p_e) /*@*/ ;
189# define uentry_isEitherConstant(e) \
190 (uentry_isValid(e) && (ekind_isConst ((e)->ukind) || ekind_isEnumConst ((e)->ukind)))
191
192extern /*@falsenull@*/ bool uentry_isEnumConstant (/*@sef@*/ uentry p_e) /*@*/ ;
193# define uentry_isEnumConstant(e) \
194 (uentry_isValid(e) && ekind_isEnumConst ((e)->ukind))
195
196extern /*@falsenull@*/ bool uentry_isExternal (/*@sef@*/ uentry p_e) /*@*/ ;
197# define uentry_isExternal(c) \
198 (uentry_isValid(c) && fileloc_isExternal (uentry_whereDefined (c)))
199
200extern /*@falsenull@*/ bool uentry_isExtern (/*@sef@*/ uentry p_e) /*@*/ ;
201# define uentry_isExtern(c) \
202 (uentry_isValid(c) && (c)->storageclass == SCEXTERN)
203
204extern bool uentry_isForward (uentry p_e) /*@*/ ;
205
206extern /*@falsenull@*/ bool uentry_isFunction (/*@sef@*/ uentry p_e) /*@*/ ;
207# define uentry_isFunction(e) \
208 (uentry_isValid(e) && ekind_isFunction ((e)->ukind))
209
210extern /*@falsenull@*/ bool uentry_isPriv (/*@sef@*/ uentry p_e) /*@*/ ;
211# define uentry_isPriv(e) \
212 (uentry_isValid(e) && (e)->isPrivate)
213
214extern /*@falsenull@*/ bool uentry_isFileStatic (uentry p_ue) /*@*/ ;
215extern /*@falsenull@*/ bool uentry_isExported (uentry p_ue) /*@*/ ;
216
217extern /*@falsenull@*/ bool uentry_isStatic (/*@sef@*/ uentry p_e) /*@*/ ;
218# define uentry_isStatic(c) \
219 (uentry_isValid(c) && (c)->storageclass == SCSTATIC)
220
221extern void uentry_setLset (/*@sef@*/ uentry p_e);
222# define uentry_setLset(e) \
223 (uentry_isValid(e) ? (e)->lset = TRUE : TRUE)
224
225extern bool uentry_isSpecialFunction (uentry p_ue) /*@*/ ;
226extern bool uentry_isMessageLike (uentry p_ue) /*@*/ ;
227extern bool uentry_isScanfLike (uentry p_ue) /*@*/ ;
228extern bool uentry_isPrintfLike (uentry p_ue) /*@*/ ;
229
230extern void uentry_setMessageLike (uentry p_ue) /*@modifies p_ue@*/ ;
231extern void uentry_setScanfLike (uentry p_ue) /*@modifies p_ue@*/ ;
232extern void uentry_setPrintfLike (uentry p_ue) /*@modifies p_ue@*/ ;
233
234extern void uentry_checkName (uentry p_ue) /*@modifies g_msgstream, p_ue@*/ ;
235
236extern bool uentry_sameObject (uentry p_e1, uentry p_e2);
237# define uentry_sameObject(e1,e2) ((e1) == (e2))
238
239extern void uentry_addAccessType (uentry p_ue, typeId p_tid) /*@modifies p_ue@*/ ;
240
241extern void uentry_showWhereAny (uentry p_spec)
242 /*@modifies g_msgstream@*/ ;
243
244extern void uentry_checkParams (uentry p_ue);
245extern void uentry_mergeUses (uentry p_res, uentry p_other);
246extern void uentry_setExtern (uentry p_c);
247extern void uentry_setUsed (uentry p_e, fileloc p_loc);
248extern void uentry_setDefState (uentry p_ue, sstate p_defstate);
249
250extern void uentry_setNotUsed (/*@sef@*/ uentry p_e);
251# define uentry_setNotUsed(e) \
252 (uentry_isValid (e) ? (e)->used = FALSE : FALSE)
253
254extern bool uentry_wasUsed (/*@sef@*/ uentry p_e);
255# define uentry_wasUsed(e) \
256 (uentry_isValid (e) ? (e)->used : TRUE)
257
258extern void uentry_mergeConstantValue (uentry p_ue, /*@only@*/ multiVal p_m);
259
260extern /*@observer@*/ fileloc uentry_whereEarliest (uentry p_e) /*@*/ ;
261extern /*@observer@*/ cstring uentry_rawName (uentry p_e) /*@*/ ;
262extern /*@observer@*/ fileloc uentry_whereDeclared (uentry p_e) /*@*/ ;
263extern bool uentry_equiv (uentry p_p1, uentry p_p2) /*@*/ ;
264extern /*@falsenull@*/ bool uentry_hasName (uentry p_e) /*@*/ ;
265extern /*@falsenull@*/ bool uentry_hasRealName (uentry p_e) /*@*/ ;
266extern /*@falsenull@*/ bool uentry_isAbstractDatatype (uentry p_e) /*@*/ ;
267extern /*@falsenull@*/ bool uentry_isAnyTag (/*@special@*/ uentry p_ue)
268 /*@uses p_ue->ukind@*/
269 /*@*/ ;
270extern /*@falsenull@*/ bool uentry_isDatatype (uentry p_e) /*@*/ ;
271
272extern /*@falsenull@*/ bool uentry_isCodeDefined (uentry p_e) /*@*/ ;
273
274extern /*@falsenull@*/ bool uentry_isDeclared (/*@special@*/ uentry p_e)
275 /*@uses p_e->whereDeclared@*/ /*@*/ ;
276
277extern /*@observer@*/ cstring uentry_ekindName (uentry p_ue) /*@*/ ;
278extern void uentry_showWhereDefined (uentry p_spec);
279extern /*@falsenull@*/ bool uentry_isEndIter (uentry p_e) /*@*/ ;
280extern /*@falsenull@*/ bool uentry_isEnumTag (/*@special@*/ uentry p_ue)
281 /*@uses p_ue->ukind@*/ /*@*/ ;
282extern /*@falsenull@*/ bool uentry_isFakeTag (uentry p_e) /*@*/ ;
283extern /*@falsenull@*/ bool uentry_isIter (uentry p_e) /*@*/ ;
284extern /*@falsenull@*/ bool uentry_isMutableDatatype (uentry p_e) /*@*/ ;
285extern /*@falsenull@*/ bool uentry_isParam (uentry p_u) /*@*/ ;
286extern /*@falsenull@*/ bool uentry_isExpandedMacro (uentry p_u) /*@*/ ;
287extern /*@falsenull@*/ bool uentry_isSefParam (uentry p_u) /*@*/ ;
288extern /*@falsenull@*/ bool uentry_isAnyParam (/*@special@*/ uentry p_u)
289 /*@uses p_u->ukind, p_u->info@*/
290 /*@*/ ;
291
292extern /*@falsenull@*/ bool uentry_isRealFunction (uentry p_e) /*@*/ ;
293extern /*@falsenull@*/ bool uentry_isSpecified (uentry p_e) /*@*/ ;
294
295extern /*@falsenull@*/ bool uentry_isStructTag (/*@special@*/ uentry p_ue)
296 /*@uses p_ue->ukind@*/ /*@*/ ;
297extern /*@falsenull@*/ bool uentry_isUnionTag (/*@special@*/ uentry p_ue)
298 /*@uses p_ue->ukind@*/ /*@*/ ;
299
300extern /*@falsenull@*/ bool uentry_isVar (/*@special@*/ uentry p_e)
301 /*@uses p_e->ukind@*/
302 /*@*/ ;
303
304extern /*@falsenull@*/ bool uentry_isVariable (/*@special@*/ uentry p_e)
305 /*@uses p_e->ukind@*/
306 /*@*/ ;
307
308extern cstring uentry_dump (uentry p_v) ;
309extern cstring uentry_dumpParam (uentry p_v);
310extern cstring uentry_getName (/*@special@*/ uentry p_e)
311 /*@uses p_e->ukind, p_e->info, p_e->uname@*/
312 /*@*/ ;
313
314extern cstring uentry_unparse (uentry p_v) /*@*/ ;
315extern cstring uentry_unparseAbbrev (uentry p_v) /*@*/ ;
316extern cstring uentry_unparseFull (uentry p_v) /*@*/ ;
317extern void uentry_setMutable (uentry p_e) /*@modifies p_e@*/ ;
318extern ctype uentry_getAbstractType (uentry p_e) /*@*/ ;
319extern ctype uentry_getRealType (uentry p_e) /*@globals internalState@*/ ;
320extern ctype uentry_getType (uentry p_e) /*@*/ ;
321extern ekind uentry_getKind (uentry p_e) /*@*/ ;
322extern /*@observer@*/ fileloc uentry_whereDefined (uentry p_e) /*@*/ ;
323extern /*@observer@*/ fileloc uentry_whereSpecified (uentry p_e) /*@*/ ;
324extern int uentry_compare (uentry p_u1, uentry p_u2);
325extern /*@exposed@*/ sRef uentry_getSref (/*@temp@*/ uentry p_e) /*@*/ ;
326extern /*@observer@*/ sRefSet uentry_getMods (uentry p_l) /*@*/ ;
327extern typeIdSet uentry_accessType (uentry p_e) /*@*/ ;
328extern /*@observer@*/ fileloc uentry_whereEither (uentry p_e) /*@*/ ;
329extern /*@notnull@*/ uentry uentry_makeExpandedMacro (cstring p_s,
330 /*@temp@*/ fileloc p_f)
331 /*@*/ ;
332
333extern void uentry_checkMatchParam (uentry p_u1, uentry p_u2, int p_paramno, exprNode p_e) /*@modifies g_msgstream@*/ ;
334
335extern /*@observer@*/ specialClauses uentry_getSpecialClauses (uentry p_ue) /*@*/ ;
336
337extern void uentry_showWhereLastExtra (uentry p_spec, /*@only@*/ cstring p_extra)
338 /*@modifies g_msgstream@*/ ;
339
340# ifndef NOLCL
341extern void uentry_setRefCounted (uentry p_e);
342
343extern /*@notnull@*/ /*@only@*/ uentry uentry_makeUnnamedVariable (ctype p_t);
344
345extern /*@notnull@*/ uentry
346 uentry_makeUnspecFunction (cstring p_n, ctype p_t, typeIdSet p_access,
347 /*@keep@*/ fileloc p_f);
348
349extern /*@notnull@*/ uentry
350 uentry_makePrivFunction2 (cstring p_n, ctype p_t,
351 typeIdSet p_access,
352 /*@only@*/ globSet p_globs,
353 /*@only@*/ sRefSet p_mods, /*@keep@*/ fileloc p_f);
354
355extern /*@notnull@*/ uentry
356 uentry_makeSpecEnumConstant (cstring p_n, ctype p_t, /*@keep@*/ fileloc p_loc) /*@*/ ;
357
358extern /*@notnull@*/ uentry
359 uentry_makeEnumTag (cstring p_n, ctype p_t, /*@only@*/ fileloc p_loc) /*@*/ ;
360
361extern /*@notnull@*/ uentry
362 uentry_makeTypeListFunction (cstring p_n, typeIdSet p_access, /*@only@*/ fileloc p_f)
363 /*@*/ ;
364
365extern /*@notnull@*/ uentry
366 uentry_makeSpecFunction (cstring p_n, ctype p_t,
367 typeIdSet p_access, /*@only@*/ globSet p_globs,
368 /*@only@*/ sRefSet p_mods, /*@keep@*/ fileloc p_f);
369# endif
370
371extern /*@notnull@*/ uentry
372 uentry_makeEnumConstant (cstring p_n, ctype p_t) /*@*/ ;
373
374extern /*@notnull@*/ uentry
375 uentry_makeEnumInitializedConstant (cstring p_n, ctype p_t, exprNode p_expr) /*@*/ ;
376
377extern /*@notnull@*/ /*@only@*/ uentry
378 uentry_makeConstant (/*@temp@*/ cstring p_n, ctype p_t, /*@keep@*/ fileloc p_f)
379 /*@*/ ;
380extern /*@notnull@*/ /*@only@*/ uentry
381 uentry_makeConstantAux (/*@temp@*/ cstring p_n, ctype p_t,
382 /*@keep@*/ fileloc p_f, bool p_priv,
383 /*@only@*/ multiVal p_m) /*@*/ ;
384extern /*@notnull@*/ /*@only@*/ uentry
385 uentry_makeDatatype (/*@temp@*/ cstring p_n, ctype p_t, ynm p_mut, ynm p_abs,
386 /*@only@*/ fileloc p_f) /*@*/ ;
387extern /*@notnull@*/ /*@only@*/ uentry
388 uentry_makeDatatypeAux (/*@temp@*/ cstring p_n, ctype p_t, ynm p_mut,
389 ynm p_abs, /*@keep@*/ fileloc p_f, bool p_priv) /*@*/ ;
390extern /*@notnull@*/ uentry uentry_makeElipsisMarker (void) /*@*/ ;
391
392extern void uentry_makeVarFunction (/*@temp@*/ uentry p_ue) /*@modifies p_ue@*/ ;
393
394extern bool uentry_isElipsisMarker (/*@sef@*/ uentry p_u) /*@*/ ;
395# define uentry_isElipsisMarker(u) \
396 (uentry_isValid(u) && ekind_isElipsis ((u)->ukind))
397
398extern /*@notnull@*/ uentry
399 uentry_makeEndIter (cstring p_n, /*@only@*/ fileloc p_f) /*@*/ ;
400extern /*@notnull@*/ uentry
401 uentry_makeEnumTagLoc (cstring p_n, ctype p_t) /*@*/ ;
402extern /*@notnull@*/ uentry
403 uentry_makeForwardFunction (cstring p_n, typeId p_access, /*@temp@*/ fileloc p_f) /*@*/ ;
404
405extern /*@notnull@*/ uentry
406 uentry_makeFunction (cstring p_n, ctype p_t,
407 typeId p_access,
408 /*@only@*/ globSet p_globs, /*@only@*/ sRefSet p_mods,
409 /*@only@*/ fileloc p_f);
410
411extern /*@notnull@*/ uentry
412 uentry_makeIter (cstring p_n, ctype p_ct, /*@only@*/ fileloc p_f) /*@*/ ;
413extern /*@notnull@*/ uentry
414 uentry_makeParam (idDecl p_t, int p_i) /*@*/ ;
415
416extern /*@notnull@*/ uentry
417 uentry_makeStructTag (cstring p_n, ctype p_t, /*@only@*/ fileloc p_loc);
418extern /*@notnull@*/ uentry
419 uentry_makeStructTagLoc (cstring p_n, ctype p_t);
420extern /*@notnull@*/ uentry
421 uentry_makeUnionTag (cstring p_n, ctype p_t, /*@only@*/ fileloc p_loc);
422extern /*@notnull@*/ uentry
423 uentry_makeUnionTagLoc (cstring p_n, ctype p_t);
424extern /*@notnull@*/ uentry
425 uentry_makeVariable (cstring p_n, ctype p_t, /*@keep@*/ fileloc p_f, bool p_isPriv);
426extern /*@notnull@*/ /*@only@*/ uentry
427 uentry_makeVariableLoc (cstring p_n, ctype p_t);
428
429# ifndef NOLCL
430extern /*@notnull@*/ /*@only@*/
431 uentry uentry_makeVariableParam (cstring p_n, ctype p_t);
432# endif
433
434extern /*@notnull@*/ /*@only@*/
435 uentry uentry_makeVariableSrefParam (cstring p_n, ctype p_t,
436 sRef p_s);
437extern /*@notnull@*/ /*@only@*/
438 uentry uentry_makeIdFunction (idDecl p_id);
439extern /*@notnull@*/ /*@only@*/
440 uentry uentry_makeIdDatatype (idDecl p_id);
441extern /*@notnull@*/ /*@only@*/
442 uentry uentry_makeBoolDatatype (ynm p_abs);
443extern void uentry_mergeDefinition (uentry p_old, /*@only@*/ uentry p_unew);
444extern void uentry_mergeEntries (uentry p_spec, /*@only@*/ uentry p_def);
445extern uentry uentry_nameCopy (/*@only@*/ cstring p_name, uentry p_e);
446extern uentry uentry_undump (ekind p_kind, fileloc p_loc, char **p_s);
447extern /*@observer@*/ uentryList uentry_getParams (uentry p_l) /*@*/ ;
448extern void uentry_resetParams (uentry p_ue, /*@only@*/ uentryList p_pn)
449 /*@modifies p_ue@*/ ;
450extern /*@observer@*/ globSet uentry_getGlobs (uentry p_l) /*@*/ ;
451extern qual uentry_nullPred (uentry p_u);
452extern void uentry_free (/*@only@*/ /*@only@*/ uentry p_e);
453extern void uentry_setDatatype (uentry p_e, usymId p_uid);
454
455extern void uentry_setDefined (/*@special@*/ uentry p_e, fileloc p_f)
456 /*@uses p_e->whereDefined, p_e->ukind, p_e->uname, p_e->info@*/
457 /*@modifies p_e@*/ ;
458
459extern void uentry_checkDecl (void);
460extern void uentry_clearDecl (void);
461extern void uentry_setDeclared (uentry p_e, fileloc p_f);
462extern void uentry_setDeclaredOnly (uentry p_e, /*@only@*/ fileloc p_f);
463extern void uentry_setDeclaredForceOnly (uentry p_e, /*@only@*/ fileloc p_f);
464extern void uentry_setFunctionDefined (uentry p_e, fileloc p_loc);
465extern void uentry_setName (uentry p_e, /*@only@*/ cstring p_n);
466extern void uentry_setParam (uentry p_e);
467extern void uentry_setSref (uentry p_e, /*@exposed@*/ sRef p_s);
468extern void uentry_setStatic (uentry p_c);
469
470extern void uentry_setModifies (uentry p_ue, /*@owned@*/ sRefSet p_sr)
471 /*@modifies p_ue, p_sr@*/;
472
473extern void uentry_setSpecialClauses (uentry p_ue, /*@only@*/ specialClauses p_clauses)
474 /*@modifies p_ue@*/ ;
475
476extern void uentry_setType (uentry p_e, ctype p_t);
477
478extern /*@unused@*/ /*@observer@*/ cstring uentry_checkedName (uentry p_ue);
479extern void uentry_showWhereLastPlain (uentry p_spec) /*@modifies g_msgstream@*/ ;
480
481extern void
482 uentry_showWhereSpecifiedExtra (uentry p_spec, /*@only@*/ cstring p_s)
483 /*@modifies g_msgstream@*/ ;
484
485extern void uentry_showWhereSpecified (uentry p_spec) /*@modifies g_msgstream@*/ ;
486extern void uentry_showWhereLast (uentry p_spec) /*@modifies g_msgstream@*/ ;
487extern void uentry_showWhereDeclared (uentry p_spec) /*@modifies g_msgstream@*/ ;
488
489extern /*@notnull@*/ /*@only@*/ uentry uentry_makeIdVariable (idDecl p_t) /*@*/ ;
490extern uentry uentry_copy (uentry p_e) /*@*/ ;
491extern void uentry_freeComplete (/*@only@*/ uentry p_e) ;
492extern void uentry_clearDefined (uentry p_e) /*@modifies p_e@*/;
493extern /*@observer@*/ cstring uentry_specDeclName (uentry p_u) /*@*/ ;
494
495extern void
496 uentry_mergeState (uentry p_res, uentry p_other, fileloc p_loc,
497 bool p_mustReturn, bool p_flip, bool p_opt,
498 clause p_cl) /*@modifies p_res, p_other@*/ ;
499
500extern void uentry_setState (uentry p_res, uentry p_other)
501 /*@modifies p_res, p_other@*/ ;
502
503extern void uentry_setRefParam (uentry p_e) /*@modifies p_e@*/ ;
504
505extern void uentry_setDeclaredForce (uentry p_e, fileloc p_f) /*@modifies p_e@*/;
506extern bool uentry_isNonLocal (uentry p_ue) /*@*/ ;
507extern bool uentry_isGlobal (uentry p_ue) /*@*/;
508extern bool uentry_isRefParam (uentry p_u) /*@*/ ;
509extern bool uentry_hasGlobs (uentry p_ue) /*@*/ ;
510extern bool uentry_hasMods (uentry p_ue) /*@*/ ;
511
512extern bool uentry_hasSpecialClauses (uentry p_ue) /*@*/ ;
513extern exitkind uentry_getExitCode (uentry p_ue) /*@*/ ;
514
515extern void uentry_checkYieldParam (uentry p_old, uentry p_unew);
516extern bool uentry_isOnly (uentry p_ue) /*@*/ ;
517extern bool uentry_isUnique (uentry p_ue) /*@*/ ;
518extern void uentry_reflectQualifiers (uentry p_ue, qualList p_q) /*@modifies p_ue@*/;
519extern bool uentry_isOut (uentry p_u) /*@*/ ;
520extern bool uentry_isPartial (uentry p_u) /*@*/ ;
521extern bool uentry_isStateSpecial (uentry p_u) /*@*/ ;
522extern bool uentry_possiblyNull (uentry p_u) /*@*/ ;
523extern ctype uentry_getForceRealType (uentry p_e) /*@globals internalState@*/ ;
524extern alkind uentry_getAliasKind (uentry p_u) /*@*/ ;
525extern exkind uentry_getExpKind (uentry p_u) /*@*/ ;
526extern /*@observer@*/ multiVal uentry_getConstantValue (uentry p_e) /*@*/ ;
527extern void uentry_fixupSref (uentry p_ue) /*@modifies p_ue@*/ ;
528extern void uentry_setGlobals (uentry p_ue, /*@owned@*/ globSet p_globs) /*@modifies p_ue@*/ ;
529extern bool uentry_isYield (uentry p_ue) /*@*/ ;
530extern /*@notnull@*/ uentry uentry_makeIdConstant (idDecl p_t) /*@*/ ;
531extern /*@observer@*/ cstring uentry_getRealName (uentry p_e) /*@*/ ;
532extern int uentry_xcomparealpha (uentry *p_p1, uentry *p_p2) /*@*/ ;
533extern int uentry_xcompareuses (uentry *p_p1, uentry *p_p2) /*@*/ ;
534extern /*@observer@*/ cstring uentry_specOrDefName (uentry p_u) /*@*/ ;
535extern void uentry_copyState (uentry p_res, uentry p_other);
536extern bool uentry_sameKind (uentry p_u1, uentry p_u2);
537extern /*@exposed@*/ sRef uentry_returnedRef (uentry p_u, exprNodeList p_args);
538extern bool uentry_isReturned (uentry p_u);
539extern bool uentry_isRefCountedDatatype (uentry p_e);
540extern sstate uentry_getDefState (uentry p_u);
541extern /*@unused@*/ void uentry_markFree (/*@owned@*/ uentry p_u);
542extern /*@dependent@*/ sRef uentry_getOrigSref (uentry p_e);
543extern void uentry_destroyMod (void) /*@modifies internalState@*/;
544extern void uentry_showDefSpecInfo (uentry p_ce, fileloc p_fwhere);
545extern void uentry_markOwned (/*@owned@*/ uentry p_u);
546
547extern /*@observer@*/ fileloc uentry_whereLast (uentry p_e) /*@*/ ;
548extern void uentry_setParamNo (uentry p_ue, int p_pno) /*@modifies p_ue@*/;
549
550extern /*@observer@*/ filelocList uentry_getUses (/*@sef@*/ uentry p_e) /*@*/ ;
551# define uentry_getUses(u) (uentry_isValid (u) ? (u)->uses : filelocList_undefined)
552
553extern bool uentry_isCheckedUnknown (uentry p_ue) /*@*/ ;
554extern bool uentry_isCheckedModify (uentry p_ue) /*@*/ ;
555extern bool uentry_isUnchecked (uentry p_ue) /*@*/ ;
556extern bool uentry_isChecked (uentry p_ue) /*@*/ ;
557extern bool uentry_isCheckMod (uentry p_ue) /*@*/ ;
558extern bool uentry_isCheckedStrict (uentry p_ue) /*@*/ ;
559extern void uentry_setUnchecked (uentry p_ue) /*@modifies p_ue@*/ ;
560extern void uentry_setChecked (uentry p_ue) /*@modifies p_ue@*/ ;
561extern void uentry_setCheckMod (uentry p_ue) /*@modifies p_ue@*/ ;
562extern void uentry_setCheckedStrict (uentry p_ue) /*@modifies p_ue@*/ ;
563
564extern bool uentry_hasAccessType (uentry p_e);
565
566extern /*@exposed@*/ uentry uentry_makeUnrecognized (cstring p_c, /*@keep@*/ fileloc p_loc);
567
568# ifdef DOANNOTS
569typedef enum { AN_UNKNOWN, AN_FCNRETURN, AN_FCNPARAM, AN_SUFIELD, AN_TDEFN, AN_GSVAR,
570 AN_CONST, AN_LAST
571 } ancontext;
572
573extern void initAnnots ();
574extern void printAnnots (void);
575extern void uentry_tallyAnnots (uentry u, ancontext kind);
576# endif /* DOANNOTS */
577
578# else
579# error "Multiple include"
580# endif
581
582
583
This page took 0.122507 seconds and 5 git commands to generate.