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