]>
Commit | Line | Data |
---|---|---|
1 | #ifndef __constraintExpr_h__ | |
2 | ||
3 | #define __constraintExpr_h__ | |
4 | ||
5 | typedef enum | |
6 | { | |
7 | binaryexpr, | |
8 | unaryExpr, | |
9 | term | |
10 | } | |
11 | constraintExprKind; | |
12 | ||
13 | struct s_constraintExpr { | |
14 | constraintExprKind kind; | |
15 | constraintExprData data; | |
16 | }; | |
17 | ||
18 | ||
19 | ||
20 | /*@constant null constraintExpr constraintExpr_undefined; @*/ | |
21 | # define constraintExpr_undefined ((constraintExpr)NULL) | |
22 | ||
23 | extern /*@falsenull@*/ bool constraintExpr_isDefined (constraintExpr p_e) /*@*/ ; | |
24 | extern /*@unused@*/ /*@truenull@*/ bool constraintExpr_isUndefined (constraintExpr p_e) /*@*/ ; | |
25 | extern /*@unused@*/ /*@truenull@*/ bool constraintExpr_isError (constraintExpr p_e) /*@*/ ; | |
26 | ||
27 | # define constraintExpr_isDefined(e) ((e) != constraintExpr_undefined) | |
28 | # define constraintExpr_isUndefined(e) ((e) == constraintExpr_undefined) | |
29 | # define constraintExpr_isError(e) ((e) == constraintExpr_undefined) | |
30 | ||
31 | ||
32 | void constraintExpr_free ( /*@only@*/ constraintExpr p_expr); | |
33 | ||
34 | int constraintExpr_getValue (constraintExpr p_expr) /*@*/; | |
35 | ||
36 | constraintExpr constraintExpr_setFileloc (/*@returned@*/ constraintExpr p_c, fileloc p_loc) /*@modifies p_c@*/; | |
37 | ||
38 | constraintExpr constraintExpr_copy (constraintExpr p_expr) /*@*/; | |
39 | ||
40 | /*@only@*/ cstring constraintExpr_unparse (/*@temp@*/ /*@observer@*/ constraintExpr p_ex) /*@*/; | |
41 | extern cstring constraintExpr_print (constraintExpr p_expr) /*@*/; | |
42 | ||
43 | ||
44 | bool constraintExpr_similar (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/; | |
45 | bool constraintExpr_same (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/; | |
46 | /*@only@*/ constraintExpr constraintExpr_searchandreplace (/*@only@*/ /*@unique@*/ constraintExpr p_c, /*@temp@*/ /*@observer@*/ constraintExpr p_old, /*@temp@*/ /*@observer@*/ constraintExpr p_newExpr ) /*@modifies p_c@*/; | |
47 | bool constraintExpr_canGetValue (constraintExpr p_expr) /*@*/; | |
48 | ||
49 | int constraintExpr_compare (constraintExpr p_expr1, constraintExpr p_expr2) /*@*/; | |
50 | ||
51 | //constraintExpr constraintExpr_makeValueInt (int i); | |
52 | ||
53 | /*@only@*/ constraintExpr constraintExpr_makeIntLiteral (int p_i); | |
54 | ||
55 | /*@only@*/ constraintExpr constraintExpr_makeValueExpr (/*@exposed@*/ exprNode p_expr); | |
56 | ||
57 | /*@only@*/ constraintExpr constraintExpr_makeMaxSetExpr (/*@exposed@*/ exprNode p_expr); | |
58 | ||
59 | /*@only@*/ constraintExpr constraintExpr_makeMaxReadExpr (/*@exposed@*/ exprNode p_expr); | |
60 | ||
61 | /*@only@*/ constraintExpr constraintExpr_makeIncConstraintExpr (/*@only@*/ constraintExpr p_expr); | |
62 | ||
63 | /*@only@*/ constraintExpr constraintExpr_makeDecConstraintExpr (/*@only@*/ constraintExpr p_expr); | |
64 | ||
65 | /*@only@*/ constraintExpr constraintExpr_simplify (/*@only@*/ constraintExpr p_c); | |
66 | ||
67 | /*@only@*/ constraintExpr constraintExpr_solveBinaryExpr (constraintExpr p_lexpr, /*@only@*/ constraintExpr p_expr) /*@modifies p_lexpr, p_expr @*/; | |
68 | ||
69 | bool constraintExpr_search (/*@observer@*/ /*@temp@*/ constraintExpr p_c, /*@observer@*/ /*@temp@*/ constraintExpr p_old); | |
70 | ||
71 | /*@only@*/ fileloc constraintExpr_getFileloc (constraintExpr p_expr); | |
72 | ||
73 | ||
74 | /*@only@*/ constraintExpr constraintExpr_makeSRefMaxset ( /*@temp@*/ /*@oberver@*/ sRef p_s); | |
75 | ||
76 | /*@only@*/ constraintExpr constraintExpr_makeSRefMaxRead(/*@temp@*/ /*@observer@*/ sRef p_s); | |
77 | ||
78 | /*@only@*/ constraintExpr constraintExpr_makeTermsRef (/*@temp@*/ sRef p_s); | |
79 | ||
80 | constraintExpr constraintExpr_doSRefFixBaseParam ( /*@returned@*/ constraintExpr p_expr, exprNodeList p_arglist); | |
81 | ||
82 | /*@only@*/ constraintExpr constraintExpr_makeExprNode (/*@dependent@*/ exprNode p_e); | |
83 | ||
84 | /*@only@*/ constraintExpr constraintExpr_doFixResult (/*@only@*/ constraintExpr p_expr, /*@observer@*/ exprNode p_fcnCall); | |
85 | ||
86 | bool constraintExpr_isLit (constraintExpr p_expr); | |
87 | ||
88 | /*@only@*/ constraintExpr constraintExpr_makeAddExpr (/*@only@*/ constraintExpr p_expr, /*@only@*/ constraintExpr p_addent); | |
89 | ||
90 | /*@only@*/ constraintExpr constraintExpr_makeSubtractExpr (/*@only@*/ constraintExpr p_expr, /*@only@*/ constraintExpr p_addent); | |
91 | ||
92 | /*@only@*/ constraintExpr constraintExpr_parseMakeUnaryOp (lltok p_op,/*@only@*/ constraintExpr p_cexpr); | |
93 | ||
94 | constraintExpr constraintExpr_parseMakeBinaryOp (/*@only@*/ constraintExpr p_expr1, lltok p_op, /*@only@*/ constraintExpr p_expr2); | |
95 | ||
96 | bool constraintExpr_hasMaxSet (/*@observer@*/ /*@temp@*/ constraintExpr p_expr); | |
97 | ||
98 | ||
99 | ||
100 | /*@only@*/ constraintExpr constraintExpr_doSRefFixConstraintParam (/*@returned@*/ /*@only@*/ constraintExpr p_expr, exprNodeList p_arglist) /*@modifies p_expr@*/; | |
101 | ||
102 | /*@only@*/ | |
103 | constraintExpr constraintExpr_propagateConstants (/*@only@*/ constraintExpr p_expr, | |
104 | /*@out@*/ bool * p_propagate, | |
105 | /*@out@*/ int *p_literal); | |
106 | ||
107 | bool constraintExpr_isBinaryExpr (/*@observer@*/ /*@temp@*/ constraintExpr p_c); | |
108 | ||
109 | extern void constraintExpr_dump (/*@observer@*/ /*@temp@*/ constraintExpr p_expr, FILE *p_f); | |
110 | ||
111 | extern /*@only@*/ constraintExpr constraintExpr_undump (FILE *p_f); | |
112 | ||
113 | #else | |
114 | ||
115 | ||
116 | # error "Multiple include" | |
117 | ||
118 | #endif |