/*
** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
** See ../LICENSE for license information.
**
*/
/*
** paramNode.h
*/
# ifndef PARAMNODEH
# define PARAMNODEH
typedef enum { PNORMAL, PYIELD, PELIPSIS } paramkind ;
/* add PREF later? PYIELD is for iterators only (~ POUT) */
typedef struct {
/*@null@*/ lclTypeSpecNode type;
/*@null@*/ struct s_typeExpr *paramdecl;
paramkind kind;
} *paramNode;
extern void paramNode_free (/*@only@*/ /*@null@*/ paramNode p_x);
extern /*@null@*/ paramNode paramNode_copy (/*@null@*/ paramNode p_p);
extern /*@only@*/ cstring paramNode_unparse (paramNode p_x);
extern /*@only@*/ cstring paramNode_unparseComments (paramNode p_x);
extern bool paramNode_isElipsis (paramNode p_p);
extern bool paramNode_isYield (paramNode p_p);
# define paramNode_isElipsis(p) ((p)->kind == PELIPSIS)
# define paramNode_isYield(p) ((p)->kind == PYIELD)
# else
# error "Multiple include"
# endif
syntax highlighted by Code2HTML, v. 0.9.1