/*
** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001.
** See ../LICENSE for license information.
*/

# ifndef USYMTAB_INTERFACE_H
# define USYMTAB_INTERFACE_H

# ifdef NOLCL
# error "Bad include"
# endif

extern void doDeclareConstant (constDeclarationNode, bool);
extern void doDeclareVar      (varDeclarationNode, bool);
extern void doDeclareType     (typeNode, bool);
extern void doDeclareFcn      (fcnNode p_f, typeId p_tn, bool p_priv, bool p_spec);
extern void declareIter        (iterNode p_iter);

extern void declareConstant (constDeclarationNode);
extern void declareVar      (varDeclarationNode);
extern void declareType     (typeNode);
extern void declareFcn      (fcnNode p_f, typeId p_t);

extern void declarePrivConstant (constDeclarationNode);
extern void declarePrivVar      (varDeclarationNode);
extern void declarePrivType     (typeNode);
extern void declarePrivFcn      (fcnNode p_f, typeId p_t);

# define declareConstant(c)     doDeclareConstant(c, FALSE)
# define declareVar(c)          doDeclareVar(c, FALSE)
# define declareType(c)         doDeclareType(c, FALSE)
# define declareFcn(f, t)       doDeclareFcn(f, t, FALSE, TRUE)

# define declarePrivConstant(c) doDeclareConstant(c, TRUE)
# define declarePrivVar(c)      doDeclareVar(c, TRUE)
# define declarePrivType(c)     doDeclareType(c, TRUE)
# define declarePrivFcn(f, t)   doDeclareFcn(f, t, TRUE, TRUE)

# else
# error "Multiple include"
# endif




