/* S C O P E   M E C H A N I S M */

struct scope {
	struct scope *next;
	struct def *sc_def;	/* list of definitions in this scope */
	int sc_level;		/* level of this scope */
	arith sc_off;		/* offsets of variables in this scope */
	struct node *sc_lablist;/* list of labels in this scope, to speed
				   up label handling
				*/
};

/* ALLOCDEF "scope" 10 */

struct scopelist {
	struct scopelist *next;
	struct scope *sc_scope;
	int sc_count;
};

/* ALLOCDEF "scopelist" 10 */

extern struct scope
	*GlobalScope,
	*PervasiveScope,
	*BlockScope;

extern struct scopelist
	*CurrVis;

#define	CurrentScope	(CurrVis->sc_scope)
#define	nextvisible(x)	((x)->next)		/* use with scopelists */