/*
** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
** See ../LICENSE for license information.
**
*/
# ifndef cstringList_H
# define cstringList_H
abst_typedef /*@null@*/ struct s_cstringList
{
int nelements;
int nspace;
/*@reldef@*/ /*@relnull@*/ o_cstring *elements;
} *cstringList ;
/*@constant null cstringList cstringList_undefined;@*/
# define cstringList_undefined ((cstringList) NULL)
extern /*@falsewhennull@*/ bool cstringList_isDefined (cstringList p_s) /*@*/ ;
# define cstringList_isDefined(s) ((s) != cstringList_undefined)
extern int cstringList_size (/*@sef@*/ cstringList) /*@*/ ;
# define cstringList_size(s) (cstringList_isDefined (s) ? (s)->nelements : 0)
extern /*@unused@*/ /*@falsewhennull@*/ bool cstringList_empty (/*@sef@*/ cstringList) /*@*/ ;
# define cstringList_empty(s) (cstringList_size(s) == 0)
extern cstring cstringList_unparseSep (cstringList p_s, cstring p_sep) /*@*/ ;
extern /*@exposed@*/ /*@null@*/ ob_cstring *cstringList_getElements (cstringList) /*@*/ ;
extern /*@unused@*/ /*@only@*/ cstringList cstringList_new (void) /*@*/ ;
extern /*@only@*/ cstringList cstringList_single (/*@keep@*/ cstring p_el) /*@*/ ;
extern cstringList
cstringList_add (/*@returned@*/ cstringList p_s, /*@keep@*/ cstring p_el)
/*@modifies p_s@*/ ;
extern /*@only@*/ cstringList
cstringList_prepend (/*@only@*/ /*@returned@*/ cstringList p_s,
/*@keep@*/ cstring p_el)
/*@modifies p_s@*/ ;
extern bool cstringList_contains (cstringList p_s, cstring p_key) /*@*/ ;
extern int cstringList_getIndex (cstringList p_s, cstring p_key) /*@*/ ;
extern /*@observer@*/ cstring cstringList_get (cstringList p_s, int p_index) /*@*/ ;
extern /*@unused@*/ void cstringList_alphabetize (cstringList p_s);
extern /*@unused@*/ /*@only@*/ cstring cstringList_unparseAbbrev (cstringList p_s) /*@*/ ;
extern /*@unused@*/ /*@only@*/ cstring cstringList_unparse (cstringList p_s) ;
extern void cstringList_free (/*@only@*/ cstringList p_s) ;
extern /*@unused@*/ void cstringList_printSpaced (cstringList p_s, size_t p_indent, size_t p_gap, int p_linelen);
extern /*@only@*/ cstringList cstringList_copy (cstringList p_s) /*@*/ ;
/*@constant int cstringListBASESIZE;@*/
# define cstringListBASESIZE MIDBASESIZE
/*@iter cstringList_elements (sef cstringList x, yield exposed cstring el); @*/
# define cstringList_elements(x, m_el) \
{ if (cstringList_isDefined (x)) { \
int m_ind; cstring *m_elements = &((x)->elements[0]); \
for (m_ind = 0 ; m_ind < (x)->nelements; m_ind++) \
{ cstring m_el = *(m_elements++);
# define end_cstringList_elements }}}
# else
# error "Multiple include"
# endif
syntax highlighted by Code2HTML, v. 0.9.1