]> andersk Git - splint.git/blob - src/Headers/exprNodeList.h
Initial revision
[splint.git] / src / Headers / exprNodeList.h
1 /*
2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2000.
3 ** See ../LICENSE for license information.
4 **
5 */
6 # ifndef exprNodeList_H
7 # define exprNodeList_H
8
9 typedef /*@only@*/ exprNode o_exprNode;
10
11 abst_typedef struct _exprNodeList
12 {
13   int nelements;
14   int nspace;
15   int current;
16   /*@reldef@*/ /*@relnull@*/ o_exprNode *elements;
17 } *exprNodeList;
18
19 /*@iter exprNodeList_elements (sef exprNodeList s, yield exposed exprNode el); @*/ 
20 # define exprNodeList_elements(x, m_el) \
21    { int m_ind; exprNode *m_elements = &((x)->elements[0]); \
22      for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
23        { exprNode m_el = *(m_elements++); 
24
25 # define end_exprNodeList_elements }}
26
27 extern int exprNodeList_size (exprNodeList p_s) /*@*/ ;
28 # define exprNodeList_size(s) ((s)->nelements)   
29
30 extern bool exprNodeList_isEmpty (exprNodeList p_s) /*@*/ ;
31 # define exprNodeList_isEmpty(s) (exprNodeList_size(s) == 0)
32
33 extern /*@only@*/ exprNodeList exprNodeList_new(void);
34 extern /*@exposed@*/  exprNode exprNodeList_nth (exprNodeList p_args, int p_n)  /*@*/ ;
35 extern exprNodeList exprNodeList_push (/*@returned@*/ exprNodeList p_args,
36                                        /*@only@*/ exprNode p_e) ;
37 extern /*@only@*/ exprNodeList exprNodeList_singleton (/*@only@*/ exprNode p_e) ;
38
39 extern void exprNodeList_addh (exprNodeList p_s, /*@only@*/ exprNode p_el) ;
40
41 extern void exprNodeList_reset (exprNodeList p_s) ;   
42 extern void exprNodeList_advance (exprNodeList p_s) ; /* was "list_pointToNext" */
43
44 extern /*@only@*/ cstring exprNodeList_unparse (exprNodeList p_s)  /*@*/ ;
45 extern void exprNodeList_free (/*@only@*/ exprNodeList p_s) ;
46 extern void exprNodeList_freeShallow (/*@only@*/ exprNodeList p_s);
47
48 extern /*@observer@*/ exprNode exprNodeList_head (exprNodeList p_s) ;
49 extern /*@observer@*/ exprNode exprNodeList_current (exprNodeList p_s) /*@*/ ;
50
51 extern /*@exposed@*/ exprNode exprNodeList_getN (exprNodeList p_s, int p_n) /*@*/ ;
52
53 /*@constant int exprNodeListBASESIZE;@*/
54 # define exprNodeListBASESIZE SMALLBASESIZE
55
56 # endif
57
58
59
60
This page took 0.042317 seconds and 5 git commands to generate.