]> andersk Git - splint.git/blob - src/Headers/constraintTerm.h
673de12e0b3f0c45d4dbcff32a6e04c87260b9f3
[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   long 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 abst_typedef struct _constraintTerm *constraintTerm;
28
29 /*@i311 shouldn't need this...never null */
30 extern bool constraintTerm_isDefined (constraintTerm t) /*@*/ ;
31
32 extern constraintTermType constraintTerm_getKind (constraintTerm) ;
33 extern /*@exposed@*/ sRef constraintTerm_getSRef (constraintTerm) ;
34
35 void constraintTerm_free (/*@only@*/ constraintTerm term);
36
37 constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term) /*@modifies term@*/ ;
38
39 /*@only@*/ constraintTerm constraintTerm_makeExprNode (/*@dependent@*/ exprNode e) /*@*/;
40
41 constraintTerm constraintTerm_copy (constraintTerm term) /*@*/;
42
43 bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) /*@*/;
44
45 bool constraintTerm_canGetValue (constraintTerm term)/*@*/;
46 long constraintTerm_getValue (constraintTerm term) /*@*/;
47
48 fileloc constraintTerm_getFileloc (constraintTerm t) /*@*/;
49
50
51 bool constraintTerm_isIntLiteral (constraintTerm term) /*@*/;
52
53 cstring constraintTerm_print (constraintTerm term) /*@*/;
54
55 constraintTerm constraintTerm_makesRef  (/*@temp@*/ /*@observer@*/ sRef s) /*@*/;
56
57 /*@unused@*/ bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/;
58
59 constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm term, fileloc loc) /*@modifies term@*/;
60
61 constraintTerm constraintTerm_makeIntLiteral (long i) /*@*/;
62
63 bool constraintTerm_isStringLiteral (constraintTerm c) /*@*/;
64 cstring constraintTerm_getStringLiteral (constraintTerm c) /*@*/;
65
66
67 constraintTerm constraintTerm_doSRefFixBaseParam (/*@returned@*/ constraintTerm term, exprNodeList arglist) /*@modifies term@*/;
68
69 void constraintTerm_dump ( /*@observer@*/ constraintTerm t,  FILE *f);
70
71 /*@only@*/ constraintTerm constraintTerm_undump ( FILE *f);
72
73 bool constraintTerm_isInitBlock (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/;
74
75 int constraintTerm_getInitBlockLength (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/;
76
77 bool constraintTerm_isExprNode (/*@observer@*/ /*@temp@*/ constraintTerm c) /*@*/;
78
79
80 extern ctype constraintTerm_getCType (constraintTerm term);
81
82 /*@exposed@*/ exprNode constraintTerm_getExprNode (constraintTerm t);
83
84 /*@exposed@*/ sRef constraintTerm_getsRef (constraintTerm t);
85
86
87 /*@=namechecks@*/
88
89 /*drl added 12/19/2002*/
90 bool  constraintTerm_isConstantOnly ( constraintTerm p_term );
91      
92 #else
93
94 #error Multiple Include
95
96 #endif
This page took 0.029929 seconds and 3 git commands to generate.