/*
-** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001.
+** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
** See ../LICENSE for license information.
*/
# ifndef UENTRY_H
typedef struct
{
- ynm abs;
+ qual abs; /* oneof QU_UNKNOWN, QU_ABSTRACT, QU_NUMABSTRACT, QU_CONCRETE */
ynm mut;
ctype type;
} *udinfo ;
typedef struct
{
- typeIdSet access;
+ typeIdSet access;
} *ueinfo ;
typedef union
extern void uentry_showWhereLastExtra (uentry p_spec, /*@only@*/ cstring p_extra)
/*@modifies g_warningstream@*/ ;
-# ifndef NOLCL
extern void uentry_setRefCounted (uentry p_e);
extern /*@notnull@*/ /*@only@*/ uentry uentry_makeUnnamedVariable (ctype p_t);
uentry_makeSpecFunction (cstring p_n, ctype p_t,
typeIdSet p_access, /*@only@*/ globSet p_globs,
/*@only@*/ sRefSet p_mods, /*@keep@*/ fileloc p_f);
-# endif
extern /*@notnull@*/ uentry
uentry_makeEnumConstant (cstring p_n, ctype p_t) /*@*/ ;
/*@*/ ;
extern /*@notnull@*/ /*@only@*/ uentry
- uentry_makeDatatype (/*@temp@*/ cstring p_n, ctype p_t, ynm p_mut, ynm p_abstract,
+ uentry_makeDatatype (/*@temp@*/ cstring p_n, ctype p_t, ynm p_mut, qual p_abstract,
/*@only@*/ fileloc p_f) /*@*/ ;
extern /*@notnull@*/ /*@only@*/ uentry
uentry_makeDatatypeAux (/*@temp@*/ cstring p_n, ctype p_t, ynm p_mut,
- ynm p_abstract, /*@keep@*/ fileloc p_f, bool p_priv) /*@*/ ;
+ qual p_abstract, /*@keep@*/ fileloc p_f, bool p_priv) /*@*/ ;
extern /*@notnull@*/ uentry uentry_makeElipsisMarker (void) /*@*/ ;
extern void uentry_makeVarFunction (/*@temp@*/ uentry p_ue) /*@modifies p_ue@*/ ;
extern /*@notnull@*/ /*@only@*/ uentry
uentry_makeVariableLoc (cstring p_n, ctype p_t);
-# ifndef NOLCL
extern /*@notnull@*/ /*@only@*/
uentry uentry_makeVariableParam (cstring p_n, ctype p_t, fileloc p_loc);
-# endif
extern /*@notnull@*/ /*@only@*/
uentry uentry_makeVariableSrefParam (cstring p_n, ctype p_t, /*@only@*/ fileloc p_loc,
extern /*@notnull@*/ /*@only@*/
uentry uentry_makeIdDatatype (idDecl p_id);
extern /*@notnull@*/ /*@only@*/
- uentry uentry_makeBoolDatatype (ynm p_abstract);
+ uentry uentry_makeBoolDatatype (qual p_abstract);
extern void uentry_mergeDefinition (uentry p_old, /*@only@*/ uentry p_unew);
extern void uentry_mergeEntries (uentry p_spec, /*@only@*/ uentry p_def);
extern uentry uentry_nameCopy (/*@only@*/ cstring p_name, uentry p_e);
extern /*@notnull@*/ /*@only@*/ uentry uentry_makeIdVariable (idDecl p_t) /*@*/ ;
extern uentry uentry_copy (uentry p_e) /*@*/ ;
+extern uentry uentry_copyNoSave (uentry p_e) /*@*/ ; /* for use for uentries that do not live beyond function exits */
extern void uentry_freeComplete (/*@only@*/ uentry p_e) ;
extern void uentry_clearDefined (uentry p_e) /*@modifies p_e@*/;
extern /*@observer@*/ cstring uentry_specDeclName (uentry p_u) /*@*/ ;
extern exkind uentry_getExpKind (uentry p_u) /*@*/ ;
extern /*@observer@*/ multiVal uentry_getConstantValue (uentry p_e) /*@*/ ;
extern void uentry_fixupSref (uentry p_ue) /*@modifies p_ue@*/ ;
-extern void uentry_setGlobals (uentry p_ue, /*@owned@*/ globSet p_globs) /*@modifies p_ue, p_globs@*/ ;
+extern void uentry_setGlobals (uentry p_ue, /*@only@*/ globSet p_globs) /*@modifies p_ue, p_globs@*/ ;
extern bool uentry_isYield (uentry p_ue) /*@*/ ;
extern /*@notnull@*/ uentry uentry_makeIdConstant (idDecl p_t) /*@*/ ;
extern /*@observer@*/ cstring uentry_getRealName (uentry p_e) /*@*/ ;
extern /*@observer@*/ cstring uentry_specOrDefName (uentry p_u) /*@*/ ;
extern void uentry_copyState (uentry p_res, uentry p_other);
extern bool uentry_sameKind (uentry p_u1, uentry p_u2);
-extern /*@exposed@*/ sRef uentry_returnedRef (uentry p_u, exprNodeList p_args);
+extern /*@exposed@*/ sRef uentry_returnedRef (uentry p_u, exprNodeList p_args, fileloc p_loc);
extern bool uentry_isReturned (uentry p_u);
extern bool uentry_isRefCountedDatatype (uentry p_e);
extern sstate uentry_getDefState (uentry p_u);