/*
** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
** See ../LICENSE for license information.
**
*/
# ifndef EKIND_H
# define EKIND_H
/* need to maintain compatibility with libraries */
immut_typedef enum {
KINVALID = -1,
KDATATYPE = 0, /* must dump datatypes first, so ctypes are ok */
KCONST, KENUMCONST,
KVAR, KFCN, KITER, KENDITER,
KSTRUCTTAG, KUNIONTAG, KENUMTAG,
KELIPSMARKER
} ekind;
/*@constant ekind KELAST;@*/
# define KELAST KELIPSMARKER
/*@constant int KGLOBALMARKER;@*/
# define KGLOBALMARKER ((int) KELAST + 1)
extern bool ekind_equal (ekind, ekind) /*@*/ ;
# define ekind_equal(e1, e2) ((e1) == (e2))
extern ekind ekind_fromInt (int p_i) /*@*/ ;
extern int ekind_toInt (ekind p_k) /*@*/ ;
extern bool ekind_isFunction (ekind p_k) /*@*/ ;
# define ekind_isFunction(k) ((k) == KFCN)
extern /*@unused@*/ bool ekind_isVariable (ekind p_k) /*@*/ ;
# define ekind_isVariable(k) ((k) == KVAR)
extern bool ekind_isElipsis (ekind p_k) /*@*/ ;
# define ekind_isElipsis(k) ((k) == KELIPSMARKER)
extern bool ekind_isConst (ekind p_k) /*@*/ ;
# define ekind_isConst(k) ((k) == KCONST)
extern bool ekind_isEnumConst (ekind p_k) /*@*/ ;
# define ekind_isEnumConst(k) ((k) == KENUMCONST)
# define ekind_toInt(k) ((int)(k))
/*@constant ekind ekind_variable; @*/
# define ekind_variable ((ekind)KVAR)
/*@constant ekind ekind_function; @*/
# define ekind_function ((ekind)KFCN)
extern /*@observer@*/ cstring ekind_capName (ekind p_k) /*@*/ ;
extern /*@observer@*/ cstring ekind_unparse (ekind p_k) /*@*/ ;
extern /*@observer@*/ cstring ekind_unparseLong (ekind p_k) /*@*/ ;
# else
# error "Multiple include"
# endif
syntax highlighted by Code2HTML, v. 0.9.1