/*
** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
** See ../LICENSE for license information.
**
*/
/*
** sRefTable.h
**
** based on sRefSet.h
*/
# ifndef sRefTABLE_H
# define sRefTABLE_H
typedef /*@owned@*/ sRef ow_sRef;
abst_typedef /*@null@*/ struct
{
int entries;
int nspace;
/*@reldef@*/ /*@relnull@*/ ow_sRef *elements;
} *sRefTable;
/*@constant int sRefTableBASESIZE; @*/
# define sRefTableBASESIZE HUGEBASESIZE
/*@constant null sRefTable sRefTable_undefined; @*/
# define sRefTable_undefined ((sRefTable) NULL)
extern /*@nullwhentrue@*/ bool sRefTable_isNull (sRefTable p_s) /*@*/ ;
extern /*@nullwhentrue@*/ bool sRefTable_isEmpty (/*@sef@*/ sRefTable p_s) /*@*/ ;
extern /*@unused@*/ /*@falsewhennull@*/ bool
sRefTable_isDefined (sRefTable p_s) /*@*/ ;
# define sRefTable_isNull(s) ((s) == sRefTable_undefined)
# define sRefTable_isDefined(s) ((!sRefTable_isNull(s)))
# define sRefTable_isEmpty(s) ((s) == sRefTable_undefined || ((s)->entries == 0))
extern /*@unused@*/ /*@only@*/ cstring sRefTable_unparse (sRefTable p_s) /*@*/ ;
extern void sRefTable_free (/*@only@*/ sRefTable p_s) /*@modifies p_s@*/;
extern void sRefTable_clear (sRefTable p_s) /*@modifies p_s@*/ ;
extern sRefTable
sRefTable_add (/*@returned@*/ sRefTable p_s,
/*@special@*/ /*@owned@*/ sRef p_el)
/*@modifies p_s@*/ ;
# else
# error "Multiple include"
# endif
syntax highlighted by Code2HTML, v. 0.9.1