]>
Commit | Line | Data |
---|---|---|
92c4a786 | 1 | #ifndef __constraintTerm_h__ |
2 | ||
3 | #define __constraintTerm_h__ | |
4 | ||
6e88de2d | 5 | typedef union |
6 | { | |
7 | exprNode expr; | |
8 | sRef sref; | |
9 | int intlit; | |
10 | } constraintTermValue; | |
dc92450f | 11 | |
6e88de2d | 12 | void constraintTermValue_copy (/*@out@*/ constraintTermValue src, constraintTermValue dst); |
92c4a786 | 13 | |
6e88de2d | 14 | #define constraintTermValue_copy(dst, src) ((dst) = (src)) |
92c4a786 | 15 | |
6e88de2d | 16 | typedef enum |
17 | { | |
18 | ERRORBADCONSTRAINTTERMTYPE, | |
19 | EXPRNODE, SREF, | |
20 | INTLITERAL | |
21 | } constraintTermType; | |
361091cc | 22 | |
6e88de2d | 23 | struct _constraintTerm { |
24 | fileloc loc; | |
25 | constraintTermValue value; | |
26 | constraintTermType kind; | |
27 | }; | |
92c4a786 | 28 | |
29 | ||
6e88de2d | 30 | abst_typedef struct _constraintTerm * constraintTerm; |
92c4a786 | 31 | |
92c4a786 | 32 | |
92c4a786 | 33 | |
6e88de2d | 34 | constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term) /*@modifies term@*/ ; |
361091cc | 35 | |
6e88de2d | 36 | constraintTerm constraintTerm_makeExprNode (/*@only@*/ exprNode e) /*@*/; |
361091cc | 37 | |
6e88de2d | 38 | constraintTerm constraintTerm_copy (constraintTerm term) /*@*/; |
361091cc | 39 | |
6e88de2d | 40 | constraintTerm exprNode_makeConstraintTerm ( exprNode e) /*@*/; |
361091cc | 41 | |
6e88de2d | 42 | bool constraintTerm_same (constraintTerm term1, constraintTerm term2) /*@*/; |
361091cc | 43 | |
6e88de2d | 44 | bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) /*@*/; |
361091cc | 45 | |
6e88de2d | 46 | bool constraintTerm_canGetValue (constraintTerm term)/*@*/; |
47 | int constraintTerm_getValue (constraintTerm term) /*@*/; | |
361091cc | 48 | |
6e88de2d | 49 | fileloc constraintTerm_getFileloc (constraintTerm t) /*@*/; |
361091cc | 50 | |
6e88de2d | 51 | constraintTerm constraintTerm_makeMaxSetexpr (exprNode e) /*@*/; |
361091cc | 52 | |
6e88de2d | 53 | constraintTerm constraintTerm_makeMinSetexpr (exprNode e) /*@*/; |
361091cc | 54 | |
6e88de2d | 55 | constraintTerm constraintTerm_makeMaxReadexpr (exprNode e) /*@*/; |
93307a76 | 56 | |
6e88de2d | 57 | constraintTerm constraintTerm_makeMinReadexpr (exprNode e) /*@*/; |
93307a76 | 58 | |
6e88de2d | 59 | constraintTerm constraintTerm_makeValueexpr (exprNode e) /*@*/; |
93307a76 | 60 | |
6e88de2d | 61 | constraintTerm intLit_makeConstraintTerm (int i) /*@*/; |
ef2aa32a | 62 | |
6e88de2d | 63 | constraintTerm constraintTerm_makeIntLitValue (int i) /*@*/; |
ef2aa32a | 64 | |
6e88de2d | 65 | bool constraintTerm_isIntLiteral (constraintTerm term) /*@*/; |
dc92450f | 66 | |
6e88de2d | 67 | cstring constraintTerm_print (constraintTerm term) /*@*/; |
ef2aa32a | 68 | |
6e88de2d | 69 | constraintTerm constraintTerm_makesRef (/*@only@*/ sRef s) /*@*/; |
ef2aa32a | 70 | |
6e88de2d | 71 | bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/; |
ef2aa32a | 72 | |
6e88de2d | 73 | constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm term, fileloc loc) /*@modifies term@*/; |
92c4a786 | 74 | |
6e88de2d | 75 | constraintTerm constraintTerm_makeIntLiteral (int i) /*@*/; |
92c4a786 | 76 | |
6e88de2d | 77 | bool constraintTerm_isStringLiteral (constraintTerm c) /*@*/; |
78 | cstring constraintTerm_getStringLiteral (constraintTerm c) /*@*/; | |
92c4a786 | 79 | |
6e88de2d | 80 | constraintExpr |
81 | constraintExpr_doFixResult (constraintExpr e, exprNode fcnCall) /*@modifies e @*/; | |
92c4a786 | 82 | |
6e88de2d | 83 | #else |
92c4a786 | 84 | |
6e88de2d | 85 | #error Multiple Include |
361091cc | 86 | |
6e88de2d | 87 | #endif |