]> andersk Git - splint.git/blob - src/Headers/constraintTerm.h
Fixed bug caused by free the null terminated stuff (bbufinfo) in uvinfo_free
[splint.git] / src / Headers / constraintTerm.h
1 #ifndef __constraintTerm_h__
2
3 #define __constraintTerm_h__
4
5 typedef union
6 {
7   /*@exposed@*/ /*@dependent@*/ exprNode expr;
8   /*@only@*/  sRef     sref;
9   int      intlit;
10 } constraintTermValue;
11
12 /*@-namechecks@*/
13
14 typedef enum
15 {
16   ERRORBADCONSTRAINTTERMTYPE,
17  EXPRNODE, SREF,
18  INTLITERAL
19 } constraintTermType;
20
21 struct _constraintTerm {
22   /*@only@*/ fileloc loc;
23   constraintTermValue value;
24   constraintTermType kind;
25 };
26
27
28 abst_typedef struct _constraintTerm * constraintTerm;
29
30 extern constraintTermType constraintTerm_getKind (constraintTerm) ;
31 extern /*@exposed@*/ sRef constraintTerm_getSRef (constraintTerm) ;
32
33 extern /*@falsenull@*/ bool constraintTerm_isDefined (constraintTerm p_e) /*@*/;
34 extern /*@unused@*/ /*@truenull@*/ bool constraintTerm_isUndefined (constraintTerm p_e) /*@*/ ;
35 extern /*@unused@*/ /*@truenull@*/ bool constraintTerm_isError (constraintTerm p_e) /*@*/ ;
36
37 /*@constant null constraintTerm constraintTerm_undefined; @*/
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 void constraintTerm_free (/*@only@*/ constraintTerm term);
48
49 constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term) /*@modifies term@*/ ;
50
51 /*@only@*/ constraintTerm constraintTerm_makeExprNode (/*@dependent@*/ exprNode e) /*@*/;
52
53 constraintTerm constraintTerm_copy (constraintTerm term) /*@*/;
54
55 bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) /*@*/;
56
57 bool constraintTerm_canGetValue (constraintTerm term)/*@*/;
58 int constraintTerm_getValue (constraintTerm term) /*@*/;
59
60 fileloc constraintTerm_getFileloc (constraintTerm t) /*@*/;
61
62
63 bool constraintTerm_isIntLiteral (constraintTerm term) /*@*/;
64
65 cstring constraintTerm_print (constraintTerm term) /*@*/;
66
67 constraintTerm constraintTerm_makesRef  (/*@temp@*/ /*@observer@*/ sRef s) /*@*/;
68
69 /*@unused@*/ bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/;
70
71 constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm term, fileloc loc) /*@modifies term@*/;
72
73 constraintTerm constraintTerm_makeIntLiteral (int i) /*@*/;
74
75 bool constraintTerm_isStringLiteral (constraintTerm c) /*@*/;
76 cstring constraintTerm_getStringLiteral (constraintTerm c) /*@*/;
77
78
79 constraintTerm constraintTerm_doSRefFixBaseParam (/*@returned@*/ constraintTerm term, exprNodeList arglist) /*@modifies term@*/;
80
81 void constraintTerm_dump ( /*@observer@*/ constraintTerm t,  FILE *f);
82
83 /*@only@*/ constraintTerm constraintTerm_undump ( FILE *f);
84
85 /*@=namechecks@*/
86
87 #else
88
89 #error Multiple Include
90
91 #endif
This page took 0.095547 seconds and 5 git commands to generate.