]> andersk Git - splint.git/blob - src/Headers/constraintTerm.h
updating to make tree consistent for start at cert
[splint.git] / src / Headers / constraintTerm.h
1 #ifndef __constraintTerm_h__
2
3 #define __constraintTerm_h__
4
5 typedef union
6 {
7   exprNode expr;
8   sRef     sref;
9   int      intlit;
10 } constraintTermValue;
11
12 void constraintTermValue_copy (/*@out@*/ constraintTermValue src, constraintTermValue dst);
13
14 #define constraintTermValue_copy(dst, src)     ((dst) = (src))
15
16 typedef enum
17 {
18   ERRORBADCONSTRAINTTERMTYPE,
19  EXPRNODE, SREF,
20  INTLITERAL
21 } constraintTermType;
22
23 struct _constraintTerm {
24   fileloc loc;
25   constraintTermValue value;
26   constraintTermType kind;
27 };
28
29
30 abst_typedef struct _constraintTerm * constraintTerm;
31
32
33
34 extern /*@falsenull@*/ bool constraintTerm_isDefined (constraintTerm p_e) /*@*/;
35 extern /*@unused@*/ /*@truenull@*/ bool constraintTerm_isUndefined (constraintTerm p_e) /*@*/ ;
36 extern /*@truenull@*/ bool constraintTerm_isError (constraintTerm p_e) /*@*/ ;
37
38
39 # define constraintTerm_undefined ((constraintTerm)NULL)
40
41 # define constraintTerm_isDefined(e)        ((e) != constraintTerm_undefined)
42 # define constraintTerm_isUndefined(e)      ((e) == constraintTerm_undefined)
43 # define constraintTerm_isError(e)          ((e) == constraintTerm_undefined)
44
45
46
47
48
49 constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term) /*@modifies term@*/ ;
50
51 constraintTerm constraintTerm_makeExprNode (/*@only@*/ exprNode e) /*@*/;
52
53 constraintTerm constraintTerm_copy (constraintTerm term) /*@*/;
54
55 constraintTerm exprNode_makeConstraintTerm ( exprNode e) /*@*/;
56
57 bool constraintTerm_same (constraintTerm term1, constraintTerm term2) /*@*/;
58
59 bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) /*@*/;
60
61 bool constraintTerm_canGetValue (constraintTerm term)/*@*/;
62 int constraintTerm_getValue (constraintTerm term) /*@*/;
63
64 fileloc constraintTerm_getFileloc (constraintTerm t) /*@*/;
65
66 constraintTerm constraintTerm_makeMaxSetexpr (exprNode e) /*@*/;
67
68 constraintTerm constraintTerm_makeMinSetexpr (exprNode e) /*@*/;
69
70 constraintTerm constraintTerm_makeMaxReadexpr (exprNode e) /*@*/;
71
72 constraintTerm constraintTerm_makeMinReadexpr (exprNode e) /*@*/;
73
74 constraintTerm constraintTerm_makeValueexpr (exprNode e) /*@*/;
75
76 constraintTerm intLit_makeConstraintTerm (int i) /*@*/;
77
78 constraintTerm constraintTerm_makeIntLitValue (int i) /*@*/;
79
80 bool constraintTerm_isIntLiteral (constraintTerm term) /*@*/;
81
82 cstring constraintTerm_print (constraintTerm term) /*@*/;
83
84 constraintTerm constraintTerm_makesRef  (/*@only@*/ sRef s) /*@*/;
85
86 bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/;
87
88 constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm term, fileloc loc) /*@modifies term@*/;
89
90 constraintTerm constraintTerm_makeIntLiteral (int i) /*@*/;
91
92 bool constraintTerm_isStringLiteral (constraintTerm c) /*@*/;
93 cstring constraintTerm_getStringLiteral (constraintTerm c) /*@*/;
94
95
96 constraintTerm 
97 constraintTerm_doSRefFixBaseParam (constraintTerm term, exprNodeList arglist) /*@modifies term@*/;
98
99 #else
100
101 #error Multiple Include
102
103 #endif
This page took 0.044079 seconds and 5 git commands to generate.