version 1.2, 2007/09/17 09:44:20 |
version 1.3, 2007/09/17 10:12:35 |
|
|
#define MAY_INCREASE_STATS |
#define MAY_INCREASE_STATS |
#endif |
#endif |
|
|
#define Array_AtEnd(l, gn) \ |
#define Array_AtEnd(l, gn) \ |
do { \ |
do { \ |
if ((l)->n >= (l)->size) { \ |
if ((l)->n >= (l)->size) { \ |
(l)->size *= 2; \ |
(l)->size *= 2; \ |
(l)->a = erealloc((l)->a, sizeof(struct GNode *) * (l)->size); \ |
(l)->a = erealloc((l)->a, \ |
MAY_INCREASE_STATS; \ |
sizeof(struct GNode *) * (l)->size);\ |
} \ |
MAY_INCREASE_STATS; \ |
(l)->a[(l)->n++] = (gn); \ |
} \ |
|
(l)->a[(l)->n++] = (gn); \ |
} while (0) |
} while (0) |
|
|
#define Array_Find(l, func, v) \ |
#define Array_Find(l, func, v) \ |
|
|
for (i = 0; i < (l)->n; i++) \ |
for (i = 0; i < (l)->n; i++) \ |
if ((func)((l)->a[i], (v)) == 0)\ |
if ((func)((l)->a[i], (v)) == 0)\ |
break; \ |
break; \ |
|
} while (0) |
|
|
|
#define Array_FindP(l, func, v) \ |
|
do { \ |
|
unsigned int i; \ |
|
for (i = 0; i < (l)->n; i++) \ |
|
if ((func)(&((l)->a[i]), (v)) == 0) \ |
|
break; \ |
} while (0) |
} while (0) |
|
|
#define Array_ForEach(l, func, v) \ |
#define Array_ForEach(l, func, v) \ |