/*
** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
** See ../LICENSE for license information.
**
*/
/*
** sRefSetStack.h
*/
# ifndef sRefSetStack_H
# define sRefSetStack_H
typedef struct _sRefSetStack *sRefSetStack ;
typedef struct _sRefSetStack
{
sRefSet elements;
sRefSet allElements;
sRefSetStack thisbranch;
sRefSetStack lastbranch;
sRefSetStack parent;
int lexlevel;
} _sRefSetStack ;
extern sRefSetStack sRefSetStack_new(void);
extern void sRefSetStack_push (sRefSetStack s, sRef el) ;
extern sRefSetStack sRefSetStack_pop (sRefSetStack s) ;
extern sRefSet sRefSetStack_top (sRefSetStack s) ;
extern cstring sRefSetStack_unparse (sRefSetStack s) ;
extern void sRefSetStack_free (/*@only@*/ sRefSetStack s) ;
extern sRefSetStack sRefSetStack_init (void);
extern sRefSetStack sRefSetStack_branch (sRefSetStack s);
extern sRefSetStack sRefSetStack_trueBranch (sRefSetStack s);
extern sRefSetStack sRefSetStack_altBranch (sRefSetStack s);
extern sRefSetStack sRefSetStack_popBranches (sRefSetStack alt);
extern sRefSetStack sRefSetStack_popTrueBranch (sRefSetStack s);
# define sRefSetStackBASESIZE MIDBASESIZE
# define sRefSetStackNULL ((sRefSetStack)0)
# define sRefSetStack_undefined (sRefSetStackNULL)
# else
# error "Multiple include"
# endif
syntax highlighted by Code2HTML, v. 0.9.1