]>
Commit | Line | Data |
---|---|---|
28bf4b0b | 1 | /* |
2 | ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001. | |
3 | ** See ../LICENSE for license information. | |
4 | ** | |
5 | */ | |
6 | /* | |
7 | ** flagSpec.h | |
8 | */ | |
9 | ||
10 | # ifndef flagSpec_H | |
11 | # define flagSpec_H | |
12 | ||
13 | /*@private@*/ typedef struct | |
14 | { | |
15 | cstring name; | |
16 | flagcode code; | |
17 | } *flagSpecItem; | |
18 | ||
19 | abst_typedef /*@null@*/ struct s_flagSpec *flagSpec; | |
20 | ||
21 | struct s_flagSpec | |
22 | { | |
23 | flagSpecItem tspec; | |
24 | /* combination logic if necessary */ | |
25 | /*@null@*/ /*@only@*/ flagSpec trest; | |
26 | } ; | |
27 | ||
28 | /*@constant null flagSpec flagSpec_undefined; @*/ | |
29 | # define flagSpec_undefined ((flagSpec) NULL) | |
30 | ||
31 | extern /*@falsenull@*/ bool flagSpec_isDefined (flagSpec p_e) /*@*/ ; | |
32 | # define flagSpec_isDefined(e) ((e) != flagSpec_undefined) | |
33 | ||
34 | extern /*@only@*/ flagSpec flagSpec_createPlain (/*@only@*/ cstring) ; | |
35 | extern /*@only@*/ flagSpec | |
36 | flagSpec_createOr (/*@only@*/ cstring, /*@only@*/ flagSpec) ; | |
37 | ||
efd360a3 | 38 | extern /*@only@*/ flagSpec flagSpec_copy (flagSpec) /*@*/ ; |
28bf4b0b | 39 | extern /*@unused@*/ /*@only@*/ cstring flagSpec_unparse (flagSpec) /*@*/ ; |
40 | extern void flagSpec_free (/*@only@*/ flagSpec) ; | |
41 | ||
42 | extern /*@only@*/ cstring flagSpec_dump (flagSpec) /*@*/ ; | |
43 | extern /*@only@*/ flagSpec flagSpec_undump (char **p_s) /*@modifies p_s@*/ ; | |
44 | ||
45 | extern flagcode flagSpec_getDominant (flagSpec) /*@*/ ; | |
46 | extern flagcode flagSpec_getFirstOn (flagSpec, fileloc) /*@*/ ; | |
47 | ||
48 | extern bool flagSpec_isOn (flagSpec, fileloc) /*@*/ ; | |
49 | ||
50 | # else | |
51 | # error "Multiple include" | |
52 | # endif | |
53 | ||
54 | ||
55 | ||
56 |