1 #undef F
2 #undef N
3 #undef B
4 #undef TX
5 
6 #ifdef SKIP_VA
7 const int test_va = 0;
8 #else
9 const int test_va = 1;
10 #endif
11 
12 #define F(n, x, v, w) 						\
13   if (p->x != arg.x) FAIL (n, 74);
14 #define N(n, x)
15 #define B(n, x, v, w) 						\
16   if (p->x != arg.x) FAIL (n, 74);
17 #define TX(n, type, attrs, fields, ops) 			\
18 void								\
19 check##n##va (int z, ...)					\
20 {								\
21   type S##n arg, *p;						\
22   va_list ap;							\
23   int i;							\
24 								\
25   if (test_va)							\
26     {								\
27       va_start (ap, z);						\
28       for (i = 0; i < 5; ++i)					\
29 	{							\
30 	  p = NULL;						\
31 	  switch ((z << 4) | i)					\
32 	    {							\
33 	    case 0x10:						\
34 	      if (va_arg (ap, double) != 1.0)			\
35 		FAIL (n, 70);					\
36 	      break;						\
37 	    case 0x12:						\
38 	      if (va_arg (ap, long long) != 2LL)		\
39 		FAIL (n, 71);					\
40 	      break;						\
41 	    case 0x22:						\
42 	      if (va_arg (ap, long double) != 2.0L)		\
43 		FAIL (n, 72);					\
44 	      break;						\
45 	    case 0x11:						\
46 	    case 0x20:						\
47 	    case 0x21:						\
48 	    case 0x24:						\
49 	      p = &s##n;					\
50 	      arg = va_arg (ap, type S##n);			\
51 	      break;						\
52 	    case 0x13:						\
53 	    case 0x14:						\
54 	    case 0x23:						\
55 	      p = &a##n[2];					\
56 	      arg = va_arg (ap, type S##n);			\
57 	      break;						\
58 	    default:						\
59 	      FAIL (n, 73);					\
60 	      break;						\
61 	    }							\
62 	  if (p)						\
63 	    {							\
64 	      ops						\
65 	    }							\
66 	}							\
67       va_end (ap);						\
68     }								\
69 }
70