/*
** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
** See ../LICENSE for license information.
*/
/*
** sRefList.h (from slist_templace.h)
*/
# ifndef sRefLIST_H
# define sRefLIST_H
typedef /*@dependent@*/ sRef d_sRef ;
struct s_sRefList
{
int nelements;
int nspace;
/*@reldef@*/ /*@relnull@*/ d_sRef *elements;
} ;
/*@iter sRefList_elements (sef sRefList x, yield exposed sRef el); @*/
# define sRefList_elements(x, m_el) \
{ if (!sRefList_isUndefined(x)) \
{ int m_ind; sRef *m_elements = &((x)->elements[0]); \
for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
{ sRef m_el = *(m_elements++);
# define end_sRefList_elements }}}
extern int sRefList_size (sRefList p_s) /*@*/ ;
extern /*@nullwhentrue@*/ bool sRefList_isUndefined (sRefList p_s) /*@*/ ;
extern /*@unused@*/ /*@nullwhentrue@*/ bool sRefList_isEmpty (sRefList p_s) /*@*/ ;
extern /*@unused@*/ /*@falsewhennull@*/ bool sRefList_isDefined (sRefList p_s) /*@*/ ;
# define sRefList_isEmpty(s) (sRefList_size(s) == 0)
/*@constant null sRefList sRefList_undefined; @*/
# define sRefList_undefined ((sRefList)0)
# define sRefList_isUndefined(c) ((c) == sRefList_undefined)
# define sRefList_isDefined(c) ((c) != sRefList_undefined)
extern /*@only@*/ sRefList sRefList_new (void);
extern /*@only@*/ sRefList sRefList_single (/*@dependent@*/ sRef p_el);
extern /*@notnull@*/ sRefList
sRefList_add (/*@returned@*/ sRefList p_s, /*@exposed@*/ sRef p_el) /*@modifies p_s@*/ ;
extern cstring sRefList_unparse (sRefList p_s) /*@*/ ;
extern void sRefList_free (/*@only@*/ sRefList p_s) ;
extern /*@only@*/ sRefList sRefList_copy (sRefList p_s) /*@*/ ;
/*@constant int sRefListBASESIZE;@*/
# define sRefListBASESIZE MIDBASESIZE
# else
# error "Multiple include"
# endif
syntax highlighted by Code2HTML, v. 0.9.1