/*
** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
** See ../LICENSE for license information.
**
*/
/*
** flagSpec.h
*/
# ifndef flagSpec_H
# define flagSpec_H
/*:private:*/ typedef struct
{
cstring name;
flagcode code;
} *flagSpecItem;
abst_typedef /*@null@*/ struct s_flagSpec *flagSpec;
struct s_flagSpec
{
flagSpecItem tspec;
/* combination logic if necessary */
/*@null@*/ /*@only@*/ flagSpec trest;
} ;
/*@constant null flagSpec flagSpec_undefined; @*/
# define flagSpec_undefined ((flagSpec) NULL)
extern /*@falsewhennull@*/ bool flagSpec_isDefined (flagSpec p_e) /*@*/ ;
# define flagSpec_isDefined(e) ((e) != flagSpec_undefined)
extern /*@only@*/ flagSpec flagSpec_createPlain (/*@only@*/ cstring) ;
extern /*@only@*/ flagSpec
flagSpec_createOr (/*@only@*/ cstring, /*@only@*/ flagSpec) ;
extern /*@only@*/ flagSpec flagSpec_copy (flagSpec) /*@*/ ;
extern /*@unused@*/ /*@only@*/ cstring flagSpec_unparse (flagSpec) /*@*/ ;
extern void flagSpec_free (/*@only@*/ flagSpec) ;
extern /*@only@*/ cstring flagSpec_dump (flagSpec) /*@*/ ;
extern /*@only@*/ flagSpec flagSpec_undump (char **p_s) /*@modifies p_s@*/ ;
extern flagcode flagSpec_getDominant (flagSpec) /*@*/ ;
extern flagcode flagSpec_getFirstOn (flagSpec, fileloc) /*@*/ ;
extern bool flagSpec_isOn (flagSpec, fileloc) /*@*/ ;
# else
# error "Multiple include"
# endif
syntax highlighted by Code2HTML, v. 0.9.1