]>
Commit | Line | Data |
---|---|---|
885824d3 | 1 | # ifndef F_ERC_H |
2 | # define F_ERC_H | |
3 | ||
4 | # include <assert.h> | |
5 | # include "eref.h" | |
6 | ||
7 | /*@-exporttype@*/ /* These types should not be exported, but are used in macros. */ | |
8 | typedef struct _elem { eref val; /*@null@*/ struct _elem *next; } ercElem; | |
9 | typedef ercElem *ercList; | |
10 | typedef struct { /*@null@*/ ercList vals; int size; } ercInfo; | |
11 | /*@=exporttype@*/ | |
12 | ||
13 | typedef ercInfo *erc; | |
14 | ||
15 | # include "erc.lh" | |
16 | ||
17 | # define erc_size(c) ((c)->size) | |
18 | ||
19 | # define erc_initMod() \ | |
20 | do { bool_initMod(); employee_initMod();\ | |
cc78dedd | 21 | eref_initMod(); } while (FALSE) |
885824d3 | 22 | |
23 | # define erc_elements(c, m_x) \ | |
24 | { erc m_c = (c); ercElem *m_ec = (m_c)->vals; int m_i = 0; \ | |
25 | while (m_i < (m_c)->size) { \ | |
26 | eref m_x; assert (m_ec != NULL); m_x = m_ec->val; m_ec = m_ec->next; m_i++; | |
27 | ||
28 | # define end_erc_elements }} | |
29 | ||
30 | # endif |