]> andersk Git - splint.git/blob - src/Headers/constraintTerm.h
90d6764308d3ae216d9810782683e8df819f74f6
[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 typedef enum
13 {
14   CTT_ERRORBADCONSTRAINTTERMTYPE,
15   CTT_EXPR, 
16   CTT_SREF,
17   CTT_INTLITERAL
18 } constraintTermType;
19
20 struct _constraintTerm {
21   /*@only@*/ fileloc loc;
22   constraintTermValue value;
23   constraintTermType kind;
24 } ;
25
26 abst_typedef struct _constraintTerm *constraintTerm;
27
28 /*@i311 shouldn't need this...never null */
29 extern bool constraintTerm_isDefined (constraintTerm t) /*@*/ ;
30
31 extern constraintTermType constraintTerm_getKind (constraintTerm) ;
32 extern /*@exposed@*/ sRef constraintTerm_getSRef (constraintTerm) ;
33
34 void constraintTerm_free (/*@only@*/ constraintTerm term);
35
36 constraintTerm constraintTerm_simplify (/*@returned@*/ constraintTerm term) /*@modifies term@*/ ;
37
38 /*@only@*/ constraintTerm constraintTerm_makeExprNode (/*@dependent@*/ exprNode e) /*@*/;
39
40 constraintTerm constraintTerm_copy (constraintTerm term) /*@*/;
41
42 bool constraintTerm_similar (constraintTerm term1, constraintTerm term2) /*@*/;
43
44 bool constraintTerm_canGetValue (constraintTerm term)/*@*/;
45 long constraintTerm_getValue (constraintTerm term) /*@*/;
46
47 fileloc constraintTerm_getFileloc (constraintTerm t) /*@*/;
48
49
50 bool constraintTerm_isIntLiteral (constraintTerm term) /*@*/;
51
52 constraintTerm constraintTerm_makesRef  (/*@temp@*/ /*@observer@*/ sRef s) /*@*/;
53
54 /*@unused@*/ bool constraintTerm_probSame (constraintTerm term1, constraintTerm term2) /*@*/;
55
56 constraintTerm constraintTerm_setFileloc (/*@returned@*/ constraintTerm term, fileloc loc) /*@modifies term@*/;
57
58 constraintTerm constraintTerm_makeIntLiteral (long i) /*@*/;
59
60 bool constraintTerm_isStringLiteral (constraintTerm c) /*@*/;
61 cstring constraintTerm_getStringLiteral (constraintTerm c) /*@*/;
62
63
64 constraintTerm constraintTerm_doSRefFixBaseParam (/*@returned@*/ constraintTerm term, exprNodeList arglist) /*@modifies term@*/;
65
66 extern cstring constraintTerm_unparse (constraintTerm)  /*@*/ ;
67
68 extern void constraintTerm_dump ( /*@observer@*/ constraintTerm t,  FILE *f);
69 extern /*@only@*/ constraintTerm constraintTerm_undump ( FILE *f);
70 extern bool constraintTerm_isInitBlock (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/;
71 extern int constraintTerm_getInitBlockLength (/*@observer@*/ /*@temp@*/ constraintTerm p_c) /*@*/;
72 extern bool constraintTerm_isExprNode (/*@observer@*/ /*@temp@*/ constraintTerm c) /*@*/;
73 extern ctype constraintTerm_getCType (constraintTerm term);
74
75 extern /*@exposed@*/ exprNode constraintTerm_getExprNode (constraintTerm t);
76 extern /*@exposed@*/ sRef constraintTerm_getsRef (constraintTerm t);
77
78 /*drl added 12/19/2002*/
79 extern bool constraintTerm_isConstantOnly (constraintTerm p_term);
80      
81 #else
82 #error "Multiple Include!"
83 #endif
This page took 0.031306 seconds and 3 git commands to generate.