blob: 02a341e1ccf2436055adde289c1bc945dc7e170a [file] [log] [blame]
#undef F
#undef N
#undef B
#undef TX
#ifdef SKIP_VA
const int test_va = 0;
#else
const int test_va = 1;
#endif
#define F(n, x, v, w) \
if (p->x != arg.x) FAIL (n, 74);
#define N(n, x)
#define B(n, x, v, w) \
if (p->x != arg.x) FAIL (n, 74);
#define TX(n, type, attrs, fields, ops) \
void \
check##n##va (int z, ...) \
{ \
type S##n arg, *p; \
va_list ap; \
int i; \
\
if (test_va) \
{ \
va_start (ap, z); \
for (i = 0; i < 5; ++i) \
{ \
p = NULL; \
switch ((z << 4) | i) \
{ \
case 0x10: \
if (va_arg (ap, double) != 1.0) \
FAIL (n, 70); \
break; \
case 0x12: \
if (va_arg (ap, long long) != 2LL) \
FAIL (n, 71); \
break; \
case 0x22: \
if (va_arg (ap, long double) != 2.0L) \
FAIL (n, 72); \
break; \
case 0x11: \
case 0x20: \
case 0x21: \
case 0x24: \
p = &s##n; \
arg = va_arg (ap, type S##n); \
break; \
case 0x13: \
case 0x14: \
case 0x23: \
p = &a##n[2]; \
arg = va_arg (ap, type S##n); \
break; \
default: \
FAIL (n, 73); \
break; \
} \
if (p) \
{ \
ops \
} \
} \
va_end (ap); \
} \
}