2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001.
3 ** See ../LICENSE for license information.
6 # ifndef exprNodeSList_H
7 # define exprNodeSList_H
10 ** like exprNodeList, except elements are dependent.
13 typedef /*@dependent@*/ exprNode d_exprNode;
19 /*@reldef@*/ /*@relnull@*/ d_exprNode *elements;
22 /*@iter exprNodeSList_elements (sef exprNodeSList x, yield exposed exprNode el); @*/
23 # define exprNodeSList_elements(x, m_el) \
24 { int m_ind; exprNode *m_elements = &((x)->elements[0]); \
25 for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
26 { exprNode m_el = *(m_elements++);
28 # define end_exprNodeSList_elements }}
30 extern /*@only@*/ exprNodeSList exprNodeSList_new(void);
32 extern /*@only@*/ exprNodeSList exprNodeSList_singleton (/*@exposed@*/ /*@dependent@*/ exprNode p_e) ;
34 extern /*@unused@*/ void
35 exprNodeSList_addh (exprNodeSList p_s, /*@exposed@*/ /*@dependent@*/ exprNode p_el);
37 extern /*@only@*/ /*@unused@*/ cstring exprNodeSList_unparse (exprNodeSList p_s);
38 extern void exprNodeSList_free (/*@only@*/ exprNodeSList p_s) ;
41 exprNodeSList_append (/*@returned@*/ exprNodeSList p_s1, /*@only@*/ exprNodeSList p_s2) ;
43 /*@constant int exprNodeSListBASESIZE;@*/
44 # define exprNodeSListBASESIZE SMALLBASESIZE