]>
Commit | Line | Data |
---|---|---|
885824d3 | 1 | /* |
28bf4b0b | 2 | ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001. |
885824d3 | 3 | ** See ../LICENSE for license information. |
4 | ** | |
5 | */ | |
6 | /* | |
7 | ** paramNode.h | |
8 | */ | |
9 | ||
10 | # ifndef PARAMNODEH | |
11 | # define PARAMNODEH | |
12 | ||
28bf4b0b | 13 | typedef enum { PNORMAL, PYIELD, PELIPSIS } paramkind ; |
885824d3 | 14 | /* add PREF later? PYIELD is for iterators only (~ POUT) */ |
15 | ||
28bf4b0b | 16 | typedef struct { |
885824d3 | 17 | /*@null@*/ lclTypeSpecNode type; |
28bf4b0b | 18 | /*@null@*/ struct s_typeExpr *paramdecl; |
885824d3 | 19 | paramkind kind; |
20 | } *paramNode; | |
21 | ||
22 | extern void paramNode_free (/*@only@*/ /*@null@*/ paramNode p_x); | |
23 | ||
24 | extern /*@null@*/ paramNode paramNode_copy (/*@null@*/ paramNode p_p); | |
25 | extern /*@only@*/ cstring paramNode_unparse (paramNode p_x); | |
26 | extern /*@only@*/ cstring paramNode_unparseComments (paramNode p_x); | |
27 | ||
28 | extern bool paramNode_isElipsis (paramNode p_p); | |
29 | extern bool paramNode_isYield (paramNode p_p); | |
30 | ||
31 | # define paramNode_isElipsis(p) ((p)->kind == PELIPSIS) | |
32 | # define paramNode_isYield(p) ((p)->kind == PYIELD) | |
33 | ||
34 | # else | |
35 | # error "Multiple include" | |
36 | # endif | |
37 | ||
38 |