|
0
|
1 |
#ifndef GEN_ALLOC_DEFS_H
|
|
|
2 |
#define GEN_ALLOC_DEFS_H
|
|
|
3 |
|
|
|
4 |
#define GEN_ALLOC_ready(ta,type,field,len,a,i,n,x,base,ta_ready) \
|
|
|
5 |
int ta_ready(x,n) register ta *x; register unsigned int n; \
|
|
|
6 |
{ register unsigned int i; \
|
|
|
7 |
if (x->field) { \
|
|
|
8 |
i = x->a; \
|
|
|
9 |
if (n > i) { \
|
|
|
10 |
x->a = base + n + (n >> 3); \
|
|
|
11 |
if (alloc_re(&x->field,i * sizeof(type),x->a * sizeof(type))) return 1; \
|
|
|
12 |
x->a = i; return 0; } \
|
|
|
13 |
return 1; } \
|
|
|
14 |
x->len = 0; \
|
|
|
15 |
return !!(x->field = (type *) alloc((x->a = n) * sizeof(type))); }
|
|
|
16 |
|
|
|
17 |
#define GEN_ALLOC_readyplus(ta,type,field,len,a,i,n,x,base,ta_rplus) \
|
|
|
18 |
int ta_rplus(x,n) register ta *x; register unsigned int n; \
|
|
|
19 |
{ register unsigned int i; \
|
|
|
20 |
if (x->field) { \
|
|
|
21 |
i = x->a; n += x->len; \
|
|
|
22 |
if (n > i) { \
|
|
|
23 |
x->a = base + n + (n >> 3); \
|
|
|
24 |
if (alloc_re(&x->field,i * sizeof(type),x->a * sizeof(type))) return 1; \
|
|
|
25 |
x->a = i; return 0; } \
|
|
|
26 |
return 1; } \
|
|
|
27 |
x->len = 0; \
|
|
|
28 |
return !!(x->field = (type *) alloc((x->a = n) * sizeof(type))); }
|
|
|
29 |
|
|
|
30 |
#define GEN_ALLOC_append(ta,type,field,len,a,i,n,x,base,ta_rplus,ta_append) \
|
|
|
31 |
int ta_append(x,i) register ta *x; register type *i; \
|
|
|
32 |
{ if (!ta_rplus(x,1)) return 0; x->field[x->len++] = *i; return 1; }
|
|
|
33 |
|
|
|
34 |
#endif
|