]> andersk Git - splint.git/blob - src/Headers/qtype.h
Initial revision
[splint.git] / src / Headers / qtype.h
1 /*
2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2000.
3 ** See ../LICENSE for license information.
4 **
5 */
6 /*
7 ** qtype.h
8 **
9 ** Qualified types: a type qualifier list, and a ctype.
10 */
11
12 # ifndef QTYPEH
13 # define QTYPEH
14
15 abst_typedef /*@null@*/ struct _qtype
16 {
17   ctype    type;
18   qualList quals;
19 } *qtype;
20
21 /*@constant null qtype qtype_undefined;@*/
22 # define qtype_undefined ((qtype) NULL)
23
24 extern /*@truenull@*/ bool qtype_isUndefined (qtype p_q);
25 # define qtype_isUndefined(q) ((q) == qtype_undefined)
26
27 extern /*@falsenull@*/ bool qtype_isDefined (qtype p_q);
28 # define qtype_isDefined(q)   ((q) != qtype_undefined)
29
30 extern ctype qtype_getType (/*@sef@*/ qtype p_q);
31 # define qtype_getType(q) \
32      (qtype_isDefined(q) ? (q)->type : ctype_unknown)
33
34 extern /*@exposed@*/ qualList qtype_getQuals (/*@sef@*/ qtype p_q);
35 # define qtype_getQuals(q) \
36   (qtype_isDefined(q) ? (q)->quals : qualList_undefined)
37
38 extern void qtype_setType (/*@sef@*/ qtype p_q, ctype p_c);
39 # define qtype_setType(q, c) (qtype_isDefined(q) ? (q)->type = (c) : (c))
40
41 # ifndef NOLCL
42 extern qtype qtype_addQualList (/*@returned@*/ qtype p_qt, qualList p_ql);
43 extern qtype qtype_mergeImplicitAlt (/*@returned@*/ qtype p_q1, /*@only@*/ qtype p_q2);
44 extern /*@only@*/ qtype qtype_copy (qtype p_q);
45 # endif
46
47 extern /*@notnull@*/ qtype qtype_create (ctype p_c) /*@*/ ;
48 extern /*@only@*/ qtype qtype_unknown(void) /*@*/ ;
49 extern qtype qtype_addQual (/*@returned@*/ qtype p_qt, qual p_q);
50 extern qtype qtype_combine (/*@returned@*/ qtype p_q1, ctype p_ct);
51 extern qtype qtype_mergeAlt (/*@returned@*/ qtype p_q1, /*@only@*/ qtype p_q2);
52
53 extern qtype qtype_resolve (/*@returned@*/ qtype p_q);
54 extern void qtype_adjustPointers (int p_n, /*@returned@*/ qtype p_q);
55 extern /*@only@*/ cstring qtype_unparse (qtype p_q) /*@*/ ;
56 extern qtype qtype_newBase (/*@returned@*/ qtype p_q, ctype p_ct);
57 extern qtype qtype_newQbase (/*@returned@*/ qtype p_q1, qtype p_q2);
58 extern void qtype_free (/*@only@*/ qtype p_q);
59
60 # else
61 # error "Multiple include"
62 # endif
This page took 0.073815 seconds and 5 git commands to generate.