]>
Commit | Line | Data |
---|---|---|
885824d3 | 1 | /* |
28bf4b0b | 2 | ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001. |
885824d3 | 3 | ** See ../LICENSE for license information. |
4 | ** | |
5 | */ | |
6 | /* | |
7 | ** lsymbolSet.h | |
8 | ** | |
9 | ** based on set_template.h | |
10 | */ | |
11 | ||
12 | # ifndef LSYMBOLSET_H | |
13 | # define LSYMBOLSET_H | |
14 | ||
28bf4b0b | 15 | abst_typedef /*@null@*/ struct |
885824d3 | 16 | { |
17 | int entries; | |
18 | int nspace; | |
19 | /*@reldef@*/ /*@relnull@*/ lsymbol *elements; | |
20 | } *lsymbolSet ; | |
21 | ||
22 | /*@constant null lsymbolSet lsymbolSet_undefined; @*/ | |
23 | # define lsymbolSet_undefined (NULL) | |
24 | ||
25 | extern /*@falsenull@*/ bool lsymbolSet_isDefined (lsymbolSet p_l) /*@*/ ; | |
26 | # define lsymbolSet_isDefined(l) ((l) != lsymbolSet_undefined) | |
27 | ||
28 | /*@iter lsymbolSet_elements (sef lsymbolSet s, yield lsymbol el); @*/ | |
29 | # define lsymbolSet_elements(x, m_el) \ | |
30 | if (lsymbolSet_isDefined (x)) \ | |
31 | { int m_ind; \ | |
32 | for (m_ind = 0 ; m_ind < (x)->entries; m_ind++) \ | |
33 | { lsymbol m_el = (x)->elements[m_ind]; | |
34 | ||
35 | # define end_lsymbolSet_elements }} | |
36 | ||
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 /*@unused@*/ /*@only@*/ cstring lsymbolSet_unparse (lsymbolSet p_s) /*@*/ ; | |
41 | extern void lsymbolSet_free (/*@only@*/ lsymbolSet p_s); | |
42 | ||
43 | /*@constant int lsymbolSetBASESIZE;@*/ | |
44 | # define lsymbolSetBASESIZE MIDBASESIZE | |
45 | ||
46 | # else | |
47 | # error "Multiple include" | |
48 | # endif |