]>
Commit | Line | Data |
---|---|---|
885824d3 | 1 | /* |
c0de361f | 2 | ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003. |
885824d3 | 3 | ** See ../LICENSE for license information. |
4 | */ | |
5 | ||
6 | typedef enum { | |
7 | SRN_TERM, SRN_TYPE, SRN_OBJ, SRN_SPECIAL | |
8 | } storeRefNodeKind; | |
9 | ||
28bf4b0b | 10 | typedef struct { |
885824d3 | 11 | storeRefNodeKind kind; |
12 | union { | |
28bf4b0b | 13 | termNode term; /* for SRN_TERM */ |
14 | lclTypeSpecNode type; /* for SRN_OBJ and SRN_TYPE */ | |
15 | /*@dependent@*/ sRef ref; /* for SRN_SPECIAL */ | |
885824d3 | 16 | } content; |
17 | } *storeRefNode; | |
18 | ||
19 | extern storeRefNode storeRefNode_copy (storeRefNode p_x); | |
20 | ||
21 | extern bool storeRefNode_isTerm (storeRefNode p_x); | |
22 | # define storeRefNode_isTerm(x) ((x)->kind == SRN_TERM) | |
23 | ||
24 | extern bool storeRefNode_isObj (storeRefNode p_x); | |
25 | # define storeRefNode_isObj(x) ((x)->kind == SRN_OBJ) | |
26 | ||
27 | extern bool storeRefNode_isType (storeRefNode p_x); | |
28 | # define storeRefNode_isType(x) ((x)->kind == SRN_TYPE) | |
29 | ||
30 | extern bool storeRefNode_isSpecial (storeRefNode p_x); | |
31 | # define storeRefNode_isSpecial(x) ((x)->kind == SRN_SPECIAL) | |
32 | ||
33 | extern void storeRefNode_free (/*@only@*/ /*@null@*/ storeRefNode p_x); |