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 abst_typedef
/*@null@*/ struct
19 /*@reldef@*/ /*@relnull@*/ lsymbol
*elements
;
22 /*@constant null lsymbolSet lsymbolSet_undefined; @*/
23 # define lsymbolSet_undefined (NULL)
25 extern /*@falsewhennull@*/ bool lsymbolSet_isDefined (lsymbolSet p_l
) /*@*/ ;
26 # define lsymbolSet_isDefined(l) ((l) != lsymbolSet_undefined)
28 /*@iter lsymbolSet_elements (sef lsymbolSet s, yield lsymbol el); @*/
29 # define lsymbolSet_elements(x, m_el) \
30 if (lsymbolSet_isDefined (x)) \
32 for (m_ind = 0 ; m_ind < (x)->entries; m_ind++) \
33 { lsymbol m_el = (x)->elements[m_ind];
35 # define end_lsymbolSet_elements }}
37 extern /*@only@*/ lsymbolSet
lsymbolSet_new(void) /*@*/ ;
38 extern bool lsymbolSet_insert (lsymbolSet p_s
, lsymbol p_el
) /*@modifies p_s@*/ ;
39 extern bool lsymbolSet_member (lsymbolSet p_s
, lsymbol p_el
) /*@*/ ;
40 extern void lsymbolSet_free (/*@only@*/ lsymbolSet p_s
);
43 # error "Multiple include"