2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001.
3 ** See ../LICENSE for license information.
10 typedef /*@only@*/ fcnNode o_fcnNode;
12 abst_typedef /*@null@*/ struct
16 /*@reldef@*/ /*@relnull@*/ o_fcnNode *elements;
19 /*@iter fcnNodeList_elements (sef fcnNodeList x, yield exposed fcnNode el); @*/
20 # define fcnNodeList_elements(x, m_el) \
21 if (fcnNodeList_isDefined (x)) \
22 { int m_ind; fcnNode *m_elements = &((x)->elements[0]); \
23 for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
24 { fcnNode m_el = *(m_elements++);
26 # define end_fcnNodeList_elements }}
28 /*@constant null fcnNodeList fcnNodeList_undefined; @*/
29 # define fcnNodeList_undefined ((fcnNodeList)0)
31 extern /*@falsenull@*/ bool fcnNodeList_isDefined (fcnNodeList p_f);
32 # define fcnNodeList_isDefined(f) ((f) != fcnNodeList_undefined)
34 extern /*@unused@*/ /*@truenull@*/ bool
35 fcnNodeList_isUndefined (fcnNodeList p_f);
36 # define fcnNodeList_isUndefined(f) ((f) == fcnNodeList_undefined)
38 extern int fcnNodeList_size (/*@sef@*/ fcnNodeList p_f);
39 extern bool fcnNodeList_isEmpty (/*@sef@*/ fcnNodeList p_f);
41 # define fcnNodeList_size(s) (fcnNodeList_isDefined(s) ? (s)->nelements : 0)
42 # define fcnNodeList_isEmpty(s) (fcnNodeList_size(s) == 0)
44 extern /*@only@*/ fcnNodeList fcnNodeList_new(void);
45 extern fcnNodeList fcnNodeList_add (/*@returned@*/ fcnNodeList p_s, /*@keep@*/ fcnNode p_el) ;
48 extern /*@unused@*/ /*@only@*/ cstring fcnNodeList_unparse (fcnNodeList p_s) ;
49 extern void fcnNodeList_free (/*@null@*/ /*@only@*/ fcnNodeList p_s) ;
51 /*@constant int fcnNodeListBASESIZE;@*/
52 # define fcnNodeListBASESIZE SMALLBASESIZE
55 # error "Multiple include"