2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
3 ** See ../LICENSE for license information.
9 ** based on set_template.h
15 typedef /*@owned@*/ sigNode o_sigNode;
17 abst_typedef /*@null@*/ struct
21 /*@reldef@*/ /*@relnull@*/ o_sigNode *elements;
24 /*@iter sigNodeSet_elements (sef sigNodeSet s, yield exposed sigNode el); @*/
25 # define sigNodeSet_elements(x, m_el) \
26 { if (sigNodeSet_isDefined (x)) { \
28 for (m_ind = 0 ; m_ind < (x)->entries; m_ind++) \
29 { sigNode m_el = (x)->elements[m_ind];
31 # define end_sigNodeSet_elements }}}
33 /*@constant null sigNodeSet sigNodeSet_undefined; @*/
34 # define sigNodeSet_undefined ((sigNodeSet) 0)
36 extern /*@falsewhennull@*/ bool sigNodeSet_isDefined (sigNodeSet p_s) /*@*/ ;
37 # define sigNodeSet_isDefined(s) \
38 ((s) != sigNodeSet_undefined)
40 extern /*@nullwhentrue@*/ bool sigNodeSet_isUndefined (sigNodeSet p_s) /*@*/ ;
41 # define sigNodeSet_isUndefined(s) \
42 ((s) == sigNodeSet_undefined)
44 extern bool sigNodeSet_isEmpty (/*@sef@*/ sigNodeSet p_s) /*@*/ ;
45 # define sigNodeSet_isEmpty(s) \
46 (sigNodeSet_isUndefined(s) || (s)->entries == 0)
48 extern int sigNodeSet_size (/*@sef@*/ sigNodeSet p_s) /*@*/ ;
49 # define sigNodeSet_size(s) (sigNodeSet_isDefined (s) ? (s)->entries : 0)
51 extern /*@only@*/ sigNodeSet sigNodeSet_new(void) /*@*/ ;
52 extern /*@only@*/ sigNodeSet sigNodeSet_singleton (/*@owned@*/ sigNode p_el) /*@*/ ;
53 extern bool sigNodeSet_insert (sigNodeSet p_s, /*@owned@*/ sigNode p_el) /*@modifies p_s@*/ ;
54 extern /*@only@*/ cstring sigNodeSet_unparse (sigNodeSet p_s) /*@*/ ;
55 extern /*@only@*/ cstring sigNodeSet_unparsePossibleAritys (sigNodeSet p_s) /*@*/ ;
56 extern void sigNodeSet_free (/*@only@*/ sigNodeSet p_s);
57 extern /*@only@*/ cstring sigNodeSet_unparseSomeSigs (sigNodeSet p_s) /*@*/ ;
59 /*@constant int sigNodeSetBASESIZE;@*/
60 # define sigNodeSetBASESIZE MIDBASESIZE
63 # error "Multiple include"