]>
Commit | Line | Data |
---|---|---|
1 | # ifndef ERC_H | |
2 | # define ERC_H | |
3 | ||
4 | # include "eref.h" | |
5 | ||
6 | typedef struct _elem { eref val; struct _elem *next; } ercElem; | |
7 | typedef ercElem *ercList; | |
8 | typedef struct { ercList vals; int size; } ercInfo; | |
9 | typedef ercInfo *erc; | |
10 | typedef ercList *ercIter; | |
11 | ||
12 | # include "erc.lh" | |
13 | ||
14 | # define erc_size(c) ((c)->size) | |
15 | # define erc_choose(c) ((c->vals)->val) | |
16 | # define erc_initMod() \ | |
17 | do { bool_initMod(); employee_initMod();\ | |
18 | eref_initMod(); } while (FALSE) | |
19 | ||
20 | # define erc_iterFinal(it) (free(it)) | |
21 | ||
22 | # define erc_iterReturn(it, result) \ | |
23 | do { erc_iterFinal(it); return result; } while (FALSE) | |
24 | ||
25 | # define for_ercElems(er, it, c)\ | |
26 | for (er = erc_yield (it = erc_iterStart (c)); \ | |
27 | !eref_equal (er, erefNIL); \ | |
28 | er = erc_yield (it)) | |
29 | ||
30 | # endif |