2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2000.
3 ** See ../LICENSE for license information.
6 # ifndef interfaceNodeLIST_H
7 # define interfaceNodeLIST_H
9 typedef /*@only@*/ interfaceNode o_interfaceNode;
11 abst_typedef struct _interfaceNodeList
16 /*@dependent@*/ /*@reldef@*/ /*@relnull@*/ o_interfaceNode *elements;
17 /*@only@*/ /*@reldef@*/ /*@relnull@*/ o_interfaceNode *elementsroot;
18 } *interfaceNodeList ;
20 /*@iter interfaceNodeList_elements (sef interfaceNodeList x, yield exposed interfaceNode el); @*/
21 # define interfaceNodeList_elements(x, m_el) \
22 { int m_ind; interfaceNode *m_elements = &((x)->elements[0]); \
23 for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
24 { interfaceNode m_el = *(m_elements++);
26 # define end_interfaceNodeList_elements }}
28 extern /*@only@*/ interfaceNodeList interfaceNodeList_new(void);
30 extern interfaceNodeList
31 interfaceNodeList_addh (/*@returned@*/ interfaceNodeList p_s, /*@only@*/ interfaceNode p_el);
32 extern void interfaceNodeList_addl (interfaceNodeList p_s, /*@keep@*/ interfaceNode p_el) ;
34 extern void interfaceNodeList_free (/*@only@*/ interfaceNodeList p_s) ;
36 /*@constant int interfaceNodeListGROWLOW;@*/
37 # define interfaceNodeListGROWLOW 4 /* addl used in abstract.c */
39 /*@constant int interfaceNodeListGROWHI;@*/
40 # define interfaceNodeListGROWHI 4
42 /*@constant int interfaceNodeListBASESIZE;@*/
43 # define interfaceNodeListBASESIZE \
44 (interfaceNodeListGROWLOW + interfaceNodeListGROWHI)
47 # error "Multiple include"