SS_LAST
} sstate;
+extern bool sstate_isValid (/*@sef@*/ sstate) /*@*/ ;
+# define sstate_isValid(s) ((s) >= SS_UNKNOWN && (s) <= SS_LAST)
+
typedef enum {
SCNONE,
SCEXTERN,
SCSTATIC
} storageClassCode ;
-typedef enum _nstate {
+typedef enum {
NS_ERROR = -1, /* error (suppress messages) */
NS_UNKNOWN = 0, /* no annotation */
NS_NOTNULL, /* definitely not null */
extern bool nstate_isKnown (nstate p_n) /*@*/ ;
# define nstate_isKnown(n) ((n) != NS_UNKNOWN)
+extern bool nstate_isValid (/*@sef@*/ nstate p_n) /*@*/ ;
+# define nstate_isValid(n) ((n) >= NS_ERROR && (n) <= NS_ABSNULL)
+
/*
** aliasing states
*/
AK_IMPONLY,
AK_KEEP,
AK_KEPT,
- AK_TEMP,
+ AK_TEMP, /* 6 */
AK_IMPTEMP,
AK_SHARED,
AK_UNIQUE,
- AK_RETURNED,
+ AK_RETURNED, /* 10 */
AK_FRESH, /* local only storage (may be shared) */
AK_STACK, /* allocated on local stack */
AK_REFCOUNTED,
AK_KILLREF,
AK_NEWREF,
AK_OWNED,
- AK_DEPENDENT,
+ AK_DEPENDENT, /* 18 */
AK_IMPDEPENDENT,
AK_STATIC,
AK_LOCAL /* AK_LOCAL must be last */
extern bool exkind_isKnown (/*@sef@*/ exkind p_e) /*@*/ ;
# define exkind_isKnown(e) ((e) != XO_UNKNOWN && (e) != XO_NORMAL)
+extern bool exkind_isValid (/*@sef@*/ exkind p_e) /*@*/ ;
+# define exkind_isValid(e) ((e) >= XO_UNKNOWN && (e) <= XO_OBSERVER)
+
+extern bool alkind_isValid (/*@sef@*/ alkind p_a) /*@*/ ;
+# define alkind_isValid(a) ((a) >= AK_UNKNOWN && (a) <= AK_LOCAL)
+
extern bool alkind_isImplicit (/*@sef@*/ alkind p_a) /*@*/ ;
extern bool alkind_isDependent (/*@sef@*/ alkind p_a) /*@*/ ;
extern bool alkind_isOnly (/*@sef@*/ alkind p_a) /*@*/ ;
extern bool alkind_isNewRef (alkind p_a) /*@*/ ;
extern bool alkind_isKillRef (alkind p_a) /*@*/ ;
+extern alkind alkind_resolve (alkind p_a1, alkind p_a2) /*@*/ ;
+
# define alkind_isOwned(a) ((a) == AK_OWNED)
# define alkind_isStack(a) ((a) == AK_STACK)
# define alkind_isStatic(a) ((a) == AK_STATIC)
extern bool alkind_compatible (alkind p_a1, alkind p_a2) /*@*/ ;
extern alkind alkind_fixImplicit (alkind p_a) /*@*/ ;
-typedef enum _exitkind
+typedef enum
{
XK_ERROR,
XK_UNKNOWN,