]> andersk Git - splint.git/blob - src/Headers/mtMergeClauseList.h
65587b1e1ef8cffcb8cb1401b2fd95ab06cc7a7b
[splint.git] / src / Headers / mtMergeClauseList.h
1 /*
2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
3 ** See ../LICENSE for license information.
4 **
5 */
6
7 # ifndef MTMERGECLAUSELIST_H
8 # define MTMERGECLAUSELIST_H
9
10 /*@private@*/ typedef /*@only@*/ mtMergeClause o_mtMergeClause;
11
12 struct s_mtMergeClauseList
13 {
14   int      nelements;
15   int      nspace;
16   /*@reldef@*/ /*@relnull@*/ o_mtMergeClause *elements;
17 } ;
18
19 /*@constant null mtMergeClauseList mtMergeClauseList_undefined;@*/
20 # define mtMergeClauseList_undefined ((mtMergeClauseList) NULL)
21
22 extern /*@falsewhennull@*/ bool mtMergeClauseList_isDefined (mtMergeClauseList p_s) /*@*/ ;
23 # define mtMergeClauseList_isDefined(s)   ((s) != mtMergeClauseList_undefined)
24
25 extern int mtMergeClauseList_size (/*@sef@*/ mtMergeClauseList) /*@*/ ;
26 # define mtMergeClauseList_size(s) (mtMergeClauseList_isDefined (s) ? (s)->nelements : 0)
27
28 extern /*@unused@*/ /*@falsewhennull@*/ bool mtMergeClauseList_empty (/*@sef@*/ mtMergeClauseList) /*@*/ ;
29 # define mtMergeClauseList_empty(s) (mtMergeClauseList_size(s) == 0)
30
31 extern cstring mtMergeClauseList_unparseSep (mtMergeClauseList p_s, cstring p_sep) /*@*/ ;
32
33 extern /*@unused@*/ /*@only@*/ mtMergeClauseList mtMergeClauseList_new (void) /*@*/ ;
34
35 extern /*@only@*/ mtMergeClauseList mtMergeClauseList_single (/*@keep@*/ mtMergeClause p_el) /*@*/ ;
36
37 extern /*@unused@*/ mtMergeClauseList 
38   mtMergeClauseList_add (/*@returned@*/ mtMergeClauseList p_s, /*@keep@*/ mtMergeClause p_el) 
39   /*@modifies p_s@*/ ;
40
41 extern mtMergeClauseList 
42   mtMergeClauseList_prepend (/*@only@*/ mtMergeClauseList p_s, /*@only@*/ mtMergeClause p_el) 
43   /*@modifies p_s@*/ ;
44
45 extern /*@unused@*/ /*@only@*/ cstring mtMergeClauseList_unparse (mtMergeClauseList p_s) ;
46 extern void mtMergeClauseList_free (/*@only@*/ mtMergeClauseList p_s) ;
47
48 /*@constant int mtMergeClauseListBASESIZE;@*/
49 # define mtMergeClauseListBASESIZE MIDBASESIZE
50
51 /*@iter mtMergeClauseList_elements (sef mtMergeClauseList x, yield exposed mtMergeClause el); @*/
52 # define mtMergeClauseList_elements(x, m_el) \
53    { if (mtMergeClauseList_isDefined (x)) { \
54        int m_ind; mtMergeClause *m_elements = &((x)->elements[0]); \
55          for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
56            { mtMergeClause m_el = *(m_elements++); 
57
58 # define end_mtMergeClauseList_elements }}}
59
60 # else
61 # error "Multiple include"
62 # endif
63
64
65
66
This page took 0.028845 seconds and 3 git commands to generate.