]>
Commit | Line | Data |
---|---|---|
1 | #ifndef __constraintTerm_h__ | |
2 | ||
3 | #define __constraintTerm_h__ | |
4 | ||
5 | typedef union | |
6 | { | |
7 | /*@exposed@*/ /*@dependent@*/ exprNode expr; | |
8 | /*@only@*/ sRef sref; | |
9 | long intlit; | |
10 | } constraintTermValue; | |
11 | ||
12 | typedef enum | |
13 | { | |
14 | CTT_ERRORBADCONSTRAINTTERMTYPE, | |
15 | CTT_EXPR, | |
16 | CTT_SREF, | |
17 | CTT_INTLITERAL | |
18 | } constraintTermType; | |
19 | ||
20 | struct s_constraintTerm { | |
21 | /*@only@*/ fileloc loc; | |
22 | constraintTermValue value; | |
23 | constraintTermType kind; | |
24 | } ; | |
25 | ||
26 | abst_typedef struct s_constraintTerm *constraintTerm; | |
27 | ||
28 | ||
29 | extern bool constraintTerm_isDefined (constraintTerm p_t) /*@*/ ; | |
30 | ||
31 | extern constraintTermType constraintTerm_getKind (constraintTerm) ; | |
32 | extern /*@exposed@*/ sRef constraintTerm_getSRef (constraintTerm) ; | |
33 | ||
34 | void constraintTerm_free (/*@only@*/ constraintTerm p_term); | |
35 | ||
36 | constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm p_term) /*@modifies p_term@*/ ; | |
37 | ||
38 | /*@only@*/ constraintTerm constraintTerm_makeExprNode (/*@dependent@*/ exprNode p_e) /*@*/; | |
39 | ||
40 | constraintTerm constraintTerm_copy (constraintTerm p_term) /*@*/; | |
41 | ||
42 | bool constraintTerm_similar (constraintTerm p_term1, constraintTerm p_term2) /*@*/; | |
43 | ||
44 | bool constraintTerm_canGetValue (constraintTerm p_term)/*@*/; | |
45 | long constraintTerm_getValue (constraintTerm p_term) /*@*/; | |
46 | ||
47 | fileloc constraintTerm_getFileloc (constraintTerm p_t) /*@*/; | |
48 | ||
49 | ||
50 | bool constraintTerm_isIntLiteral (constraintTerm p_term) /*@*/; | |
51 | ||
52 | constraintTerm constraintTerm_makesRef (/*@temp@*/ /*@observer@*/ sRef p_s) /*@*/; | |
53 | ||
54 | /*@unused@*/ bool constraintTerm_probSame (constraintTerm p_term1, constraintTerm p_term2) /*@*/; | |
55 | ||
56 | constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm p_term, fileloc p_loc) /*@modifies p_term@*/; | |
57 | ||
58 | constraintTerm constraintTerm_makeIntLiteral (long p_i) /*@*/; | |
59 | ||
60 | bool constraintTerm_isStringLiteral (constraintTerm p_c) /*@*/; | |
61 | cstring constraintTerm_getStringLiteral (constraintTerm p_c) /*@*/; | |
62 | ||
63 | ||
64 | constraintTerm constraintTerm_doSRefFixBaseParam (/*@returned@*/ constraintTerm p_term, exprNodeList p_arglist) /*@modifies p_term@*/; | |
65 | ||
66 | extern cstring constraintTerm_unparse (constraintTerm) /*@*/ ; | |
67 | ||
68 | extern void constraintTerm_dump ( /*@observer@*/ constraintTerm p_t, FILE * p_f); | |
69 | extern /*@only@*/ constraintTerm constraintTerm_undump ( FILE * p_f); | |
70 | extern bool constraintTerm_isInitBlock (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/; | |
71 | extern int constraintTerm_getInitBlockLength (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/; | |
72 | extern bool constraintTerm_isExprNode (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/; | |
73 | extern ctype constraintTerm_getCType (constraintTerm p_term); | |
74 | ||
75 | extern /*@exposed@*/ exprNode constraintTerm_getExprNode (constraintTerm p_t); | |
76 | extern /*@exposed@*/ sRef constraintTerm_getsRef (constraintTerm p_t); | |
77 | ||
78 | /*drl added 12/19/2002*/ | |
79 | extern bool constraintTerm_isConstantOnly (constraintTerm p_term); | |
80 | ||
81 | #else | |
82 | #error "Multiple Include!" | |
83 | #endif |