xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.base/call-ar-st.c (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1*b725ae77Skettenis 
2*b725ae77Skettenis #include <stdio.h>
3*b725ae77Skettenis #include <stdlib.h>
4*b725ae77Skettenis #include <string.h>
5*b725ae77Skettenis 
6*b725ae77Skettenis /**************************************************************************
7*b725ae77Skettenis  * TESTS :
8*b725ae77Skettenis  *   -- function arguments that are enumerated types
9*b725ae77Skettenis  *   -- small structure arguments ( <= 64 bits )
10*b725ae77Skettenis  *            -- stored in registers
11*b725ae77Skettenis  *            -- stored on the stack
12*b725ae77Skettenis  *   -- large structure arguments ( > 64 bits )
13*b725ae77Skettenis  *            -- stored in registers
14*b725ae77Skettenis  *            -- stored on the stack
15*b725ae77Skettenis  *   -- array arguments
16*b725ae77Skettenis  *   -- caller is a leaf routine :
17*b725ae77Skettenis  *            -- use the call command from within an init routine (i.e.
18*b725ae77Skettenis  *               init_bit_flags, init_bit_flags_combo, init_array_rep)
19*b725ae77Skettenis  *   -- caller doesn't have enough space for all the function arguments :
20*b725ae77Skettenis  *            -- call print_long_arg_list from inside print_small_structs
21*b725ae77Skettenis  ***************************************************************************/
22*b725ae77Skettenis 
23*b725ae77Skettenis /* Some enumerated types -- used to test that the structureal data type is
24*b725ae77Skettenis  * retrieved for function arguments with typedef data types.
25*b725ae77Skettenis  */
26*b725ae77Skettenis typedef int id_int;
27*b725ae77Skettenis 
28*b725ae77Skettenis typedef enum {
29*b725ae77Skettenis 	      BLACK,
30*b725ae77Skettenis 	      BLUE,
31*b725ae77Skettenis 	      BROWN,
32*b725ae77Skettenis 	      ECRUE,
33*b725ae77Skettenis 	      GOLD,
34*b725ae77Skettenis 	      GRAY,
35*b725ae77Skettenis 	      GREEN,
36*b725ae77Skettenis 	      IVORY,
37*b725ae77Skettenis 	      MAUVE,
38*b725ae77Skettenis 	      ORANGE,
39*b725ae77Skettenis 	      PINK,
40*b725ae77Skettenis 	      PURPLE,
41*b725ae77Skettenis 	      RED,
42*b725ae77Skettenis 	      SILVER,
43*b725ae77Skettenis 	      TAN,
44*b725ae77Skettenis 	      VIOLET,
45*b725ae77Skettenis 	      WHITE,
46*b725ae77Skettenis 	      YELLOW} colors;
47*b725ae77Skettenis 
48*b725ae77Skettenis /* A large structure (> 64 bits) used to test passing large structures as
49*b725ae77Skettenis  * parameters
50*b725ae77Skettenis  */
51*b725ae77Skettenis 
52*b725ae77Skettenis struct array_rep_info_t {
53*b725ae77Skettenis    int   next_index[10];
54*b725ae77Skettenis    int   values[10];
55*b725ae77Skettenis    int   head;
56*b725ae77Skettenis };
57*b725ae77Skettenis 
58*b725ae77Skettenis /*****************************************************************************
59*b725ae77Skettenis  * Small structures ( <= 64 bits). These are used to test passing small
60*b725ae77Skettenis  * structures as parameters and test argument size promotion.
61*b725ae77Skettenis  *****************************************************************************/
62*b725ae77Skettenis 
63*b725ae77Skettenis  /* 64 bits
64*b725ae77Skettenis   */
65*b725ae77Skettenis struct small_rep_info_t {
66*b725ae77Skettenis    int   value;
67*b725ae77Skettenis    int   head;
68*b725ae77Skettenis };
69*b725ae77Skettenis 
70*b725ae77Skettenis /* 6 bits : really fits in 8 bits and is promoted to 32 bits
71*b725ae77Skettenis  */
72*b725ae77Skettenis struct bit_flags_t {
73*b725ae77Skettenis        unsigned alpha   :1;
74*b725ae77Skettenis        unsigned beta    :1;
75*b725ae77Skettenis        unsigned gamma   :1;
76*b725ae77Skettenis        unsigned delta   :1;
77*b725ae77Skettenis        unsigned epsilon :1;
78*b725ae77Skettenis        unsigned omega   :1;
79*b725ae77Skettenis };
80*b725ae77Skettenis 
81*b725ae77Skettenis /* 22 bits : really fits in 40 bits and is promoted to 64 bits
82*b725ae77Skettenis  */
83*b725ae77Skettenis struct bit_flags_combo_t {
84*b725ae77Skettenis        unsigned alpha   :1;
85*b725ae77Skettenis        unsigned beta    :1;
86*b725ae77Skettenis        char     ch1;
87*b725ae77Skettenis        unsigned gamma   :1;
88*b725ae77Skettenis        unsigned delta   :1;
89*b725ae77Skettenis        char     ch2;
90*b725ae77Skettenis        unsigned epsilon :1;
91*b725ae77Skettenis        unsigned omega   :1;
92*b725ae77Skettenis };
93*b725ae77Skettenis 
94*b725ae77Skettenis /* 64 bits
95*b725ae77Skettenis  */
96*b725ae77Skettenis struct one_double_t {
97*b725ae77Skettenis        double double1;
98*b725ae77Skettenis };
99*b725ae77Skettenis 
100*b725ae77Skettenis /* 64 bits
101*b725ae77Skettenis  */
102*b725ae77Skettenis struct two_floats_t {
103*b725ae77Skettenis        float float1;
104*b725ae77Skettenis        float float2;
105*b725ae77Skettenis };
106*b725ae77Skettenis 
107*b725ae77Skettenis /* 16 bits : promoted to 32 bits
108*b725ae77Skettenis  */
109*b725ae77Skettenis struct two_char_t {
110*b725ae77Skettenis        char ch1;
111*b725ae77Skettenis        char ch2;
112*b725ae77Skettenis };
113*b725ae77Skettenis 
114*b725ae77Skettenis /* 24 bits : promoted to 32 bits
115*b725ae77Skettenis  */
116*b725ae77Skettenis struct three_char_t {
117*b725ae77Skettenis        char ch1;
118*b725ae77Skettenis        char ch2;
119*b725ae77Skettenis        char ch3;
120*b725ae77Skettenis };
121*b725ae77Skettenis 
122*b725ae77Skettenis /* 40 bits : promoted to 64 bits
123*b725ae77Skettenis  */
124*b725ae77Skettenis struct five_char_t {
125*b725ae77Skettenis        char ch1;
126*b725ae77Skettenis        char ch2;
127*b725ae77Skettenis        char ch3;
128*b725ae77Skettenis        char ch4;
129*b725ae77Skettenis        char ch5;
130*b725ae77Skettenis };
131*b725ae77Skettenis 
132*b725ae77Skettenis /* 40 bits : promoted to 64 bits
133*b725ae77Skettenis  */
134*b725ae77Skettenis struct int_char_combo_t {
135*b725ae77Skettenis        int  int1;
136*b725ae77Skettenis        char ch1;
137*b725ae77Skettenis };
138*b725ae77Skettenis 
139*b725ae77Skettenis /*****************************************************************
140*b725ae77Skettenis  * PRINT_STUDENT_ID_SHIRT_COLOR :
141*b725ae77Skettenis  * IN     id_int student       -- enumerated type
142*b725ae77Skettenis  * IN     colors shirt         -- enumerated type
143*b725ae77Skettenis  *****************************************************************/
144*b725ae77Skettenis #ifdef PROTOTYPES
print_student_id_shirt_color(id_int student,colors shirt)145*b725ae77Skettenis void print_student_id_shirt_color (id_int student, colors shirt)
146*b725ae77Skettenis #else
147*b725ae77Skettenis void print_student_id_shirt_color ( student, shirt )
148*b725ae77Skettenis  id_int student;
149*b725ae77Skettenis  colors shirt;
150*b725ae77Skettenis #endif
151*b725ae77Skettenis {
152*b725ae77Skettenis 
153*b725ae77Skettenis  printf("student id : %d\t", student);
154*b725ae77Skettenis  printf("shirt color : ");
155*b725ae77Skettenis  switch (shirt) {
156*b725ae77Skettenis    case BLACK :  printf("BLACK\n");
157*b725ae77Skettenis 		 break;
158*b725ae77Skettenis    case BLUE :   printf("BLUE\n");
159*b725ae77Skettenis 		 break;
160*b725ae77Skettenis    case BROWN :  printf("BROWN\n");
161*b725ae77Skettenis 		 break;
162*b725ae77Skettenis    case ECRUE :  printf("ECRUE\n");
163*b725ae77Skettenis 		 break;
164*b725ae77Skettenis    case GOLD :   printf("GOLD\n");
165*b725ae77Skettenis 		 break;
166*b725ae77Skettenis    case GRAY :   printf("GRAY\n");
167*b725ae77Skettenis 		 break;
168*b725ae77Skettenis    case GREEN :  printf("GREEN\n");
169*b725ae77Skettenis 		 break;
170*b725ae77Skettenis    case IVORY :  printf("IVORY\n");
171*b725ae77Skettenis 		 break;
172*b725ae77Skettenis    case MAUVE :  printf("MAUVE\n");
173*b725ae77Skettenis 		 break;
174*b725ae77Skettenis    case ORANGE : printf("ORANGE\n");
175*b725ae77Skettenis 		 break;
176*b725ae77Skettenis    case PINK :   printf("PINK\n");
177*b725ae77Skettenis 		 break;
178*b725ae77Skettenis    case PURPLE : printf("PURPLE\n");
179*b725ae77Skettenis 		 break;
180*b725ae77Skettenis    case RED :    printf("RED\n");
181*b725ae77Skettenis 		 break;
182*b725ae77Skettenis    case SILVER : printf("SILVER\n");
183*b725ae77Skettenis 		 break;
184*b725ae77Skettenis    case TAN :    printf("TAN\n");
185*b725ae77Skettenis 		 break;
186*b725ae77Skettenis    case VIOLET : printf("VIOLET\n");
187*b725ae77Skettenis 		 break;
188*b725ae77Skettenis    case WHITE :  printf("WHITE\n");
189*b725ae77Skettenis 		 break;
190*b725ae77Skettenis    case YELLOW : printf("YELLOW\n");
191*b725ae77Skettenis 		 break;
192*b725ae77Skettenis  }
193*b725ae77Skettenis }
194*b725ae77Skettenis 
195*b725ae77Skettenis /*****************************************************************
196*b725ae77Skettenis  * PRINT_CHAR_ARRAY :
197*b725ae77Skettenis  * IN     char  array_c[]      -- character array
198*b725ae77Skettenis  *****************************************************************/
199*b725ae77Skettenis #ifdef PROTOTYPES
print_char_array(char array_c[])200*b725ae77Skettenis void print_char_array (char array_c[])
201*b725ae77Skettenis #else
202*b725ae77Skettenis void print_char_array ( array_c )
203*b725ae77Skettenis      char    array_c[];
204*b725ae77Skettenis #endif
205*b725ae77Skettenis {
206*b725ae77Skettenis 
207*b725ae77Skettenis   int index;
208*b725ae77Skettenis 
209*b725ae77Skettenis   printf("array_c :\n");
210*b725ae77Skettenis   printf("=========\n\n");
211*b725ae77Skettenis   for (index = 0; index < 120; index++) {
212*b725ae77Skettenis       printf("%1c", array_c[index]);
213*b725ae77Skettenis       if ((index%50) == 0) printf("\n");
214*b725ae77Skettenis   }
215*b725ae77Skettenis   printf("\n\n");
216*b725ae77Skettenis }
217*b725ae77Skettenis 
218*b725ae77Skettenis /*****************************************************************
219*b725ae77Skettenis  * PRINT_DOUBLE_ARRAY :
220*b725ae77Skettenis  * IN     double array_d[]      -- array of doubles
221*b725ae77Skettenis  *****************************************************************/
222*b725ae77Skettenis #ifdef PROTOTYPES
print_double_array(double array_d[])223*b725ae77Skettenis void print_double_array (double  array_d[])
224*b725ae77Skettenis #else
225*b725ae77Skettenis void print_double_array (array_d)
226*b725ae77Skettenis      double  array_d[];
227*b725ae77Skettenis #endif
228*b725ae77Skettenis {
229*b725ae77Skettenis 
230*b725ae77Skettenis   int index;
231*b725ae77Skettenis 
232*b725ae77Skettenis   printf("array_d :\n");
233*b725ae77Skettenis   printf("=========\n\n");
234*b725ae77Skettenis   for (index = 0; index < 9; index++) {
235*b725ae77Skettenis       printf("%f  ", array_d[index]);
236*b725ae77Skettenis       if ((index%8) == 0) printf("\n");
237*b725ae77Skettenis   }
238*b725ae77Skettenis   printf("\n\n");
239*b725ae77Skettenis }
240*b725ae77Skettenis 
241*b725ae77Skettenis /*****************************************************************
242*b725ae77Skettenis  * PRINT_FLOAT_ARRAY:
243*b725ae77Skettenis  * IN     float array_f[]      -- array of floats
244*b725ae77Skettenis  *****************************************************************/
245*b725ae77Skettenis #ifdef PROTOTYPES
print_float_array(float array_f[])246*b725ae77Skettenis void print_float_array (float array_f[])
247*b725ae77Skettenis #else
248*b725ae77Skettenis void print_float_array ( array_f )
249*b725ae77Skettenis      float array_f[];
250*b725ae77Skettenis #endif
251*b725ae77Skettenis {
252*b725ae77Skettenis 
253*b725ae77Skettenis   int index;
254*b725ae77Skettenis 
255*b725ae77Skettenis   printf("array_f :\n");
256*b725ae77Skettenis   printf("=========\n\n");
257*b725ae77Skettenis   for (index = 0; index < 15; index++) {
258*b725ae77Skettenis       printf("%f  ", array_f[index]);
259*b725ae77Skettenis       if ((index%8) == 0) printf("\n");
260*b725ae77Skettenis 
261*b725ae77Skettenis   }
262*b725ae77Skettenis   printf("\n\n");
263*b725ae77Skettenis }
264*b725ae77Skettenis 
265*b725ae77Skettenis /*****************************************************************
266*b725ae77Skettenis  * PRINT_INT_ARRAY:
267*b725ae77Skettenis  * IN     int  array_i[]      -- array of integers
268*b725ae77Skettenis  *****************************************************************/
269*b725ae77Skettenis #ifdef PROTOTYPES
print_int_array(int array_i[])270*b725ae77Skettenis void print_int_array (int array_i[])
271*b725ae77Skettenis #else
272*b725ae77Skettenis void print_int_array ( array_i )
273*b725ae77Skettenis      int array_i[];
274*b725ae77Skettenis #endif
275*b725ae77Skettenis {
276*b725ae77Skettenis 
277*b725ae77Skettenis   int index;
278*b725ae77Skettenis 
279*b725ae77Skettenis   printf("array_i :\n");
280*b725ae77Skettenis   printf("=========\n\n");
281*b725ae77Skettenis   for (index = 0; index < 50; index++) {
282*b725ae77Skettenis       printf("%d  ", array_i[index]);
283*b725ae77Skettenis       if ((index%8) == 0) printf("\n");
284*b725ae77Skettenis   }
285*b725ae77Skettenis   printf("\n\n");
286*b725ae77Skettenis 
287*b725ae77Skettenis }
288*b725ae77Skettenis 
289*b725ae77Skettenis /*****************************************************************
290*b725ae77Skettenis  * PRINT_ALL_ARRAYS:
291*b725ae77Skettenis  * IN     int  array_i[]      -- array of integers
292*b725ae77Skettenis  * IN     char array_c[]      -- array of characters
293*b725ae77Skettenis  * IN     float array_f[]      -- array of floats
294*b725ae77Skettenis  * IN     double array_d[]      -- array of doubles
295*b725ae77Skettenis  *****************************************************************/
296*b725ae77Skettenis #ifdef PROTOTYPES
print_all_arrays(int array_i[],char array_c[],float array_f[],double array_d[])297*b725ae77Skettenis void print_all_arrays(int array_i[], char array_c[], float array_f[], double array_d[])
298*b725ae77Skettenis #else
299*b725ae77Skettenis void print_all_arrays( array_i, array_c, array_f, array_d )
300*b725ae77Skettenis      int array_i[];
301*b725ae77Skettenis      char array_c[];
302*b725ae77Skettenis      float array_f[];
303*b725ae77Skettenis      double array_d[];
304*b725ae77Skettenis #endif
305*b725ae77Skettenis {
306*b725ae77Skettenis   print_int_array(array_i);
307*b725ae77Skettenis   print_char_array(array_c);
308*b725ae77Skettenis   print_float_array(array_f);
309*b725ae77Skettenis   print_double_array(array_d);
310*b725ae77Skettenis }
311*b725ae77Skettenis 
312*b725ae77Skettenis /*****************************************************************
313*b725ae77Skettenis  * LOOP_COUNT :
314*b725ae77Skettenis  * A do nothing function. Used to provide a point at which calls can be made.
315*b725ae77Skettenis  *****************************************************************/
loop_count()316*b725ae77Skettenis void loop_count () {
317*b725ae77Skettenis 
318*b725ae77Skettenis      int index;
319*b725ae77Skettenis 
320*b725ae77Skettenis      for (index=0; index<4; index++);
321*b725ae77Skettenis }
322*b725ae77Skettenis 
323*b725ae77Skettenis /*****************************************************************
324*b725ae77Skettenis  * COMPUTE_WITH_SMALL_STRUCTS :
325*b725ae77Skettenis  * A do nothing function. Used to provide a point at which calls can be made.
326*b725ae77Skettenis  * IN  int seed
327*b725ae77Skettenis  *****************************************************************/
328*b725ae77Skettenis #ifdef PROTOTYPES
compute_with_small_structs(int seed)329*b725ae77Skettenis void compute_with_small_structs (int seed)
330*b725ae77Skettenis #else
331*b725ae77Skettenis void compute_with_small_structs ( seed )
332*b725ae77Skettenis  int seed;
333*b725ae77Skettenis #endif
334*b725ae77Skettenis {
335*b725ae77Skettenis 
336*b725ae77Skettenis      struct small_rep_info_t array[4];
337*b725ae77Skettenis      int index;
338*b725ae77Skettenis 
339*b725ae77Skettenis      for (index = 0; index < 4; index++) {
340*b725ae77Skettenis          array[index].value = index*seed;
341*b725ae77Skettenis 	 array[index].head = (index+1)*seed;
342*b725ae77Skettenis      }
343*b725ae77Skettenis 
344*b725ae77Skettenis      for (index = 1; index < 4; index++) {
345*b725ae77Skettenis 	 array[index].value = array[index].value + array[index-1].value;
346*b725ae77Skettenis 	 array[index].head = array[index].head + array[index-1].head;
347*b725ae77Skettenis      }
348*b725ae77Skettenis }
349*b725ae77Skettenis 
350*b725ae77Skettenis /*****************************************************************
351*b725ae77Skettenis  * INIT_BIT_FLAGS :
352*b725ae77Skettenis  * Initializes a bit_flags_t structure. Can call this function see
353*b725ae77Skettenis  * the call command behavior when integer arguments do not fit into
354*b725ae77Skettenis  * registers and must be placed on the stack.
355*b725ae77Skettenis  * OUT struct bit_flags_t *bit_flags -- structure to be filled
356*b725ae77Skettenis  * IN  unsigned a  -- 0 or 1
357*b725ae77Skettenis  * IN  unsigned b  -- 0 or 1
358*b725ae77Skettenis  * IN  unsigned g  -- 0 or 1
359*b725ae77Skettenis  * IN  unsigned d  -- 0 or 1
360*b725ae77Skettenis  * IN  unsigned e  -- 0 or 1
361*b725ae77Skettenis  * IN  unsigned o  -- 0 or 1
362*b725ae77Skettenis  *****************************************************************/
363*b725ae77Skettenis #ifdef PROTOTYPES
init_bit_flags(struct bit_flags_t * bit_flags,unsigned a,unsigned b,unsigned g,unsigned d,unsigned e,unsigned o)364*b725ae77Skettenis void init_bit_flags (struct bit_flags_t *bit_flags, unsigned a, unsigned b, unsigned g, unsigned d, unsigned e, unsigned o)
365*b725ae77Skettenis #else
366*b725ae77Skettenis void init_bit_flags ( bit_flags, a, b, g, d, e, o )
367*b725ae77Skettenis struct bit_flags_t *bit_flags;
368*b725ae77Skettenis unsigned a;
369*b725ae77Skettenis unsigned b;
370*b725ae77Skettenis unsigned g;
371*b725ae77Skettenis unsigned d;
372*b725ae77Skettenis unsigned e;
373*b725ae77Skettenis unsigned o;
374*b725ae77Skettenis #endif
375*b725ae77Skettenis {
376*b725ae77Skettenis 
377*b725ae77Skettenis    bit_flags->alpha = a;
378*b725ae77Skettenis    bit_flags->beta = b;
379*b725ae77Skettenis    bit_flags->gamma = g;
380*b725ae77Skettenis    bit_flags->delta = d;
381*b725ae77Skettenis    bit_flags->epsilon = e;
382*b725ae77Skettenis    bit_flags->omega = o;
383*b725ae77Skettenis }
384*b725ae77Skettenis 
385*b725ae77Skettenis /*****************************************************************
386*b725ae77Skettenis  * INIT_BIT_FLAGS_COMBO :
387*b725ae77Skettenis  * Initializes a bit_flags_combo_t structure. Can call this function
388*b725ae77Skettenis  * to see the call command behavior when integer and character arguments
389*b725ae77Skettenis  * do not fit into registers and must be placed on the stack.
390*b725ae77Skettenis  * OUT struct bit_flags_combo_t *bit_flags_combo -- structure to fill
391*b725ae77Skettenis  * IN  unsigned a  -- 0 or 1
392*b725ae77Skettenis  * IN  unsigned b  -- 0 or 1
393*b725ae77Skettenis  * IN  char     ch1
394*b725ae77Skettenis  * IN  unsigned g  -- 0 or 1
395*b725ae77Skettenis  * IN  unsigned d  -- 0 or 1
396*b725ae77Skettenis  * IN  char     ch2
397*b725ae77Skettenis  * IN  unsigned e  -- 0 or 1
398*b725ae77Skettenis  * IN  unsigned o  -- 0 or 1
399*b725ae77Skettenis  *****************************************************************/
400*b725ae77Skettenis #ifdef PROTOTYPES
init_bit_flags_combo(struct bit_flags_combo_t * bit_flags_combo,unsigned a,unsigned b,char ch1,unsigned g,unsigned d,char ch2,unsigned e,unsigned o)401*b725ae77Skettenis void init_bit_flags_combo (struct bit_flags_combo_t *bit_flags_combo, unsigned a, unsigned b, char ch1, unsigned g, unsigned d, char ch2, unsigned e, unsigned o)
402*b725ae77Skettenis #else
403*b725ae77Skettenis void init_bit_flags_combo ( bit_flags_combo, a, b, ch1, g, d, ch2, e, o )
404*b725ae77Skettenis      struct bit_flags_combo_t *bit_flags_combo;
405*b725ae77Skettenis      unsigned a;
406*b725ae77Skettenis      unsigned b;
407*b725ae77Skettenis      char     ch1;
408*b725ae77Skettenis      unsigned g;
409*b725ae77Skettenis      unsigned d;
410*b725ae77Skettenis      char     ch2;
411*b725ae77Skettenis      unsigned e;
412*b725ae77Skettenis      unsigned o;
413*b725ae77Skettenis #endif
414*b725ae77Skettenis {
415*b725ae77Skettenis 
416*b725ae77Skettenis    bit_flags_combo->alpha = a;
417*b725ae77Skettenis    bit_flags_combo->beta = b;
418*b725ae77Skettenis    bit_flags_combo->ch1 = ch1;
419*b725ae77Skettenis    bit_flags_combo->gamma = g;
420*b725ae77Skettenis    bit_flags_combo->delta = d;
421*b725ae77Skettenis    bit_flags_combo->ch2 = ch2;
422*b725ae77Skettenis    bit_flags_combo->epsilon = e;
423*b725ae77Skettenis    bit_flags_combo->omega = o;
424*b725ae77Skettenis }
425*b725ae77Skettenis 
426*b725ae77Skettenis 
427*b725ae77Skettenis /*****************************************************************
428*b725ae77Skettenis  * INIT_ONE_DOUBLE :
429*b725ae77Skettenis  * OUT  struct one_double_t *one_double  -- structure to fill
430*b725ae77Skettenis  * IN   double init_val
431*b725ae77Skettenis  *****************************************************************/
432*b725ae77Skettenis #ifdef PROTOTYPES
init_one_double(struct one_double_t * one_double,double init_val)433*b725ae77Skettenis void init_one_double (struct one_double_t *one_double, double init_val)
434*b725ae77Skettenis #else
435*b725ae77Skettenis void init_one_double ( one_double, init_val )
436*b725ae77Skettenis      struct one_double_t *one_double;
437*b725ae77Skettenis      double init_val;
438*b725ae77Skettenis #endif
439*b725ae77Skettenis {
440*b725ae77Skettenis 
441*b725ae77Skettenis      one_double->double1  = init_val;
442*b725ae77Skettenis }
443*b725ae77Skettenis 
444*b725ae77Skettenis /*****************************************************************
445*b725ae77Skettenis  * INIT_TWO_FLOATS :
446*b725ae77Skettenis  * OUT struct two_floats_t *two_floats -- structure to be filled
447*b725ae77Skettenis  * IN  float init_val1
448*b725ae77Skettenis  * IN  float init_val2
449*b725ae77Skettenis  *****************************************************************/
450*b725ae77Skettenis #ifdef PROTOTYPES
init_two_floats(struct two_floats_t * two_floats,float init_val1,float init_val2)451*b725ae77Skettenis void init_two_floats (struct two_floats_t *two_floats, float init_val1, float init_val2)
452*b725ae77Skettenis #else
453*b725ae77Skettenis void init_two_floats ( two_floats, init_val1, init_val2 )
454*b725ae77Skettenis      struct two_floats_t *two_floats;
455*b725ae77Skettenis      float init_val1;
456*b725ae77Skettenis      float init_val2;
457*b725ae77Skettenis #endif
458*b725ae77Skettenis {
459*b725ae77Skettenis      two_floats->float1 = init_val1;
460*b725ae77Skettenis      two_floats->float2 = init_val2;
461*b725ae77Skettenis }
462*b725ae77Skettenis 
463*b725ae77Skettenis /*****************************************************************
464*b725ae77Skettenis  * INIT_TWO_CHARS :
465*b725ae77Skettenis  * OUT struct two_char_t *two_char -- structure to be filled
466*b725ae77Skettenis  * IN  char init_val1
467*b725ae77Skettenis  * IN  char init_val2
468*b725ae77Skettenis  *****************************************************************/
469*b725ae77Skettenis #ifdef PROTOTYPES
init_two_chars(struct two_char_t * two_char,char init_val1,char init_val2)470*b725ae77Skettenis void init_two_chars (struct two_char_t *two_char, char init_val1, char init_val2)
471*b725ae77Skettenis #else
472*b725ae77Skettenis void init_two_chars ( two_char, init_val1, init_val2 )
473*b725ae77Skettenis      struct two_char_t *two_char;
474*b725ae77Skettenis      char init_val1;
475*b725ae77Skettenis      char init_val2;
476*b725ae77Skettenis #endif
477*b725ae77Skettenis {
478*b725ae77Skettenis 
479*b725ae77Skettenis      two_char->ch1 = init_val1;
480*b725ae77Skettenis      two_char->ch2 = init_val2;
481*b725ae77Skettenis }
482*b725ae77Skettenis 
483*b725ae77Skettenis /*****************************************************************
484*b725ae77Skettenis  * INIT_THREE_CHARS :
485*b725ae77Skettenis  * OUT struct three_char_t *three_char -- structure to be filled
486*b725ae77Skettenis  * IN  char init_val1
487*b725ae77Skettenis  * IN  char init_val2
488*b725ae77Skettenis  * IN  char init_val3
489*b725ae77Skettenis  *****************************************************************/
490*b725ae77Skettenis #ifdef PROTOTYPES
init_three_chars(struct three_char_t * three_char,char init_val1,char init_val2,char init_val3)491*b725ae77Skettenis void init_three_chars (struct three_char_t *three_char, char init_val1, char init_val2, char init_val3)
492*b725ae77Skettenis #else
493*b725ae77Skettenis void init_three_chars ( three_char, init_val1, init_val2, init_val3 )
494*b725ae77Skettenis      struct three_char_t *three_char;
495*b725ae77Skettenis      char init_val1;
496*b725ae77Skettenis      char init_val2;
497*b725ae77Skettenis      char init_val3;
498*b725ae77Skettenis #endif
499*b725ae77Skettenis {
500*b725ae77Skettenis 
501*b725ae77Skettenis      three_char->ch1 = init_val1;
502*b725ae77Skettenis      three_char->ch2 = init_val2;
503*b725ae77Skettenis      three_char->ch3 = init_val3;
504*b725ae77Skettenis }
505*b725ae77Skettenis 
506*b725ae77Skettenis /*****************************************************************
507*b725ae77Skettenis  * INIT_FIVE_CHARS :
508*b725ae77Skettenis  * OUT struct five_char_t *five_char -- structure to be filled
509*b725ae77Skettenis  * IN  char init_val1
510*b725ae77Skettenis  * IN  char init_val2
511*b725ae77Skettenis  * IN  char init_val3
512*b725ae77Skettenis  * IN  char init_val4
513*b725ae77Skettenis  * IN  char init_val5
514*b725ae77Skettenis  *****************************************************************/
515*b725ae77Skettenis #ifdef PROTOTYPES
init_five_chars(struct five_char_t * five_char,char init_val1,char init_val2,char init_val3,char init_val4,char init_val5)516*b725ae77Skettenis void init_five_chars (struct five_char_t *five_char, char init_val1, char init_val2, char init_val3, char init_val4, char init_val5)
517*b725ae77Skettenis #else
518*b725ae77Skettenis void init_five_chars ( five_char, init_val1, init_val2, init_val3,init_val4,init_val5 )
519*b725ae77Skettenis      struct five_char_t *five_char;
520*b725ae77Skettenis      char init_val1;
521*b725ae77Skettenis      char init_val2;
522*b725ae77Skettenis      char init_val3;
523*b725ae77Skettenis      char init_val4;
524*b725ae77Skettenis      char init_val5;
525*b725ae77Skettenis #endif
526*b725ae77Skettenis {
527*b725ae77Skettenis      five_char->ch1 = init_val1;
528*b725ae77Skettenis      five_char->ch2 = init_val2;
529*b725ae77Skettenis      five_char->ch3 = init_val3;
530*b725ae77Skettenis      five_char->ch4 = init_val4;
531*b725ae77Skettenis      five_char->ch5 = init_val5;
532*b725ae77Skettenis }
533*b725ae77Skettenis 
534*b725ae77Skettenis /*****************************************************************
535*b725ae77Skettenis  * INIT_INT_CHAR_COMBO :
536*b725ae77Skettenis  * OUT struct int_char_combo_t *combo -- structure to be filled
537*b725ae77Skettenis  * IN  int  init_val1
538*b725ae77Skettenis  * IN  char init_val2
539*b725ae77Skettenis  *****************************************************************/
540*b725ae77Skettenis #ifdef PROTOTYPES
init_int_char_combo(struct int_char_combo_t * combo,int init_val1,char init_val2)541*b725ae77Skettenis void init_int_char_combo (struct int_char_combo_t *combo, int init_val1, char init_val2)
542*b725ae77Skettenis #else
543*b725ae77Skettenis void init_int_char_combo ( combo, init_val1, init_val2 )
544*b725ae77Skettenis      struct int_char_combo_t *combo;
545*b725ae77Skettenis      int init_val1;
546*b725ae77Skettenis      char init_val2;
547*b725ae77Skettenis #endif
548*b725ae77Skettenis {
549*b725ae77Skettenis 
550*b725ae77Skettenis      combo->int1 = init_val1;
551*b725ae77Skettenis      combo->ch1 = init_val2;
552*b725ae77Skettenis }
553*b725ae77Skettenis 
554*b725ae77Skettenis /*****************************************************************
555*b725ae77Skettenis  * INIT_STRUCT_REP :
556*b725ae77Skettenis  * OUT struct small_rep_into_t *small_struct -- structure to be filled
557*b725ae77Skettenis  * IN  int  seed
558*b725ae77Skettenis  *****************************************************************/
559*b725ae77Skettenis #ifdef PROTOTYPES
init_struct_rep(struct small_rep_info_t * small_struct,int seed)560*b725ae77Skettenis void init_struct_rep(struct small_rep_info_t *small_struct, int seed)
561*b725ae77Skettenis #else
562*b725ae77Skettenis void init_struct_rep( small_struct, seed )
563*b725ae77Skettenis      struct small_rep_info_t *small_struct;
564*b725ae77Skettenis      int    seed;
565*b725ae77Skettenis #endif
566*b725ae77Skettenis {
567*b725ae77Skettenis 
568*b725ae77Skettenis       small_struct->value = 2 + (seed*2);
569*b725ae77Skettenis       small_struct->head = 0;
570*b725ae77Skettenis }
571*b725ae77Skettenis 
572*b725ae77Skettenis /*****************************************************************
573*b725ae77Skettenis  * INIT_SMALL_STRUCTS :
574*b725ae77Skettenis  * Takes all the small structures as input and calls the appropriate
575*b725ae77Skettenis  * initialization routine for each structure
576*b725ae77Skettenis  *****************************************************************/
577*b725ae77Skettenis #ifdef PROTOTYPES
init_small_structs(struct small_rep_info_t * struct1,struct small_rep_info_t * struct2,struct small_rep_info_t * struct3,struct small_rep_info_t * struct4,struct bit_flags_t * flags,struct bit_flags_combo_t * flags_combo,struct three_char_t * three_char,struct five_char_t * five_char,struct int_char_combo_t * int_char_combo,struct one_double_t * d1,struct one_double_t * d2,struct one_double_t * d3,struct two_floats_t * f1,struct two_floats_t * f2,struct two_floats_t * f3)578*b725ae77Skettenis void init_small_structs (
579*b725ae77Skettenis      struct small_rep_info_t  *struct1,
580*b725ae77Skettenis      struct small_rep_info_t  *struct2,
581*b725ae77Skettenis      struct small_rep_info_t  *struct3,
582*b725ae77Skettenis      struct small_rep_info_t  *struct4,
583*b725ae77Skettenis      struct bit_flags_t       *flags,
584*b725ae77Skettenis      struct bit_flags_combo_t *flags_combo,
585*b725ae77Skettenis      struct three_char_t      *three_char,
586*b725ae77Skettenis      struct five_char_t       *five_char,
587*b725ae77Skettenis      struct int_char_combo_t  *int_char_combo,
588*b725ae77Skettenis      struct one_double_t      *d1,
589*b725ae77Skettenis      struct one_double_t      *d2,
590*b725ae77Skettenis      struct one_double_t      *d3,
591*b725ae77Skettenis      struct two_floats_t      *f1,
592*b725ae77Skettenis      struct two_floats_t      *f2,
593*b725ae77Skettenis      struct two_floats_t      *f3)
594*b725ae77Skettenis #else
595*b725ae77Skettenis void init_small_structs (struct1, struct2, struct3,struct4,flags,flags_combo,
596*b725ae77Skettenis three_char, five_char,int_char_combo, d1, d2,d3,f1,f2,f3)
597*b725ae77Skettenis      struct small_rep_info_t  *struct1;
598*b725ae77Skettenis      struct small_rep_info_t  *struct2;
599*b725ae77Skettenis      struct small_rep_info_t  *struct3;
600*b725ae77Skettenis      struct small_rep_info_t  *struct4;
601*b725ae77Skettenis      struct bit_flags_t       *flags;
602*b725ae77Skettenis      struct bit_flags_combo_t *flags_combo;
603*b725ae77Skettenis      struct three_char_t      *three_char;
604*b725ae77Skettenis      struct five_char_t       *five_char;
605*b725ae77Skettenis      struct int_char_combo_t  *int_char_combo;
606*b725ae77Skettenis      struct one_double_t      *d1;
607*b725ae77Skettenis      struct one_double_t      *d2;
608*b725ae77Skettenis      struct one_double_t      *d3;
609*b725ae77Skettenis      struct two_floats_t      *f1;
610*b725ae77Skettenis      struct two_floats_t      *f2;
611*b725ae77Skettenis      struct two_floats_t      *f3;
612*b725ae77Skettenis #endif
613*b725ae77Skettenis {
614*b725ae77Skettenis 
615*b725ae77Skettenis      init_bit_flags(flags, (unsigned)1, (unsigned)0, (unsigned)1,
616*b725ae77Skettenis 		           (unsigned)0, (unsigned)1, (unsigned)0 );
617*b725ae77Skettenis      init_bit_flags_combo(flags_combo, (unsigned)1, (unsigned)0, 'y',
618*b725ae77Skettenis 				       (unsigned)1, (unsigned)0, 'n',
619*b725ae77Skettenis                     		       (unsigned)1, (unsigned)0 );
620*b725ae77Skettenis      init_three_chars(three_char, 'a', 'b', 'c');
621*b725ae77Skettenis      init_five_chars(five_char, 'l', 'm', 'n', 'o', 'p');
622*b725ae77Skettenis      init_int_char_combo(int_char_combo, 123, 'z');
623*b725ae77Skettenis      init_struct_rep(struct1, 2);
624*b725ae77Skettenis      init_struct_rep(struct2, 4);
625*b725ae77Skettenis      init_struct_rep(struct3, 5);
626*b725ae77Skettenis      init_struct_rep(struct4, 6);
627*b725ae77Skettenis      init_one_double ( d1, 10.5);
628*b725ae77Skettenis      init_one_double ( d2, -3.375);
629*b725ae77Skettenis      init_one_double ( d3, 675.09375);
630*b725ae77Skettenis      init_two_floats ( f1, 45.234, 43.6);
631*b725ae77Skettenis      init_two_floats ( f2, 78.01, 122.10);
632*b725ae77Skettenis      init_two_floats ( f3, -1232.345, -199.21);
633*b725ae77Skettenis }
634*b725ae77Skettenis 
635*b725ae77Skettenis /*****************************************************************
636*b725ae77Skettenis  * PRINT_TEN_DOUBLES :
637*b725ae77Skettenis  * ?????????????????????????????
638*b725ae77Skettenis  ****************************************************************/
639*b725ae77Skettenis #ifdef PROTOTYPES
print_ten_doubles(double d1,double d2,double d3,double d4,double d5,double d6,double d7,double d8,double d9,double d10)640*b725ae77Skettenis void print_ten_doubles (
641*b725ae77Skettenis      double d1,
642*b725ae77Skettenis      double d2,
643*b725ae77Skettenis      double d3,
644*b725ae77Skettenis      double d4,
645*b725ae77Skettenis      double d5,
646*b725ae77Skettenis      double d6,
647*b725ae77Skettenis      double d7,
648*b725ae77Skettenis      double d8,
649*b725ae77Skettenis      double d9,
650*b725ae77Skettenis      double d10)
651*b725ae77Skettenis #else
652*b725ae77Skettenis void print_ten_doubles ( d1, d2, d3, d4, d5, d6, d7, d8, d9, d10 )
653*b725ae77Skettenis      double d1;
654*b725ae77Skettenis      double d2;
655*b725ae77Skettenis      double d3;
656*b725ae77Skettenis      double d4;
657*b725ae77Skettenis      double d5;
658*b725ae77Skettenis      double d6;
659*b725ae77Skettenis      double d7;
660*b725ae77Skettenis      double d8;
661*b725ae77Skettenis      double d9;
662*b725ae77Skettenis      double d10;
663*b725ae77Skettenis #endif
664*b725ae77Skettenis {
665*b725ae77Skettenis 
666*b725ae77Skettenis   printf("Two Doubles : %f\t%f\n", d1, d2);
667*b725ae77Skettenis   printf("Two Doubles : %f\t%f\n", d3, d4);
668*b725ae77Skettenis   printf("Two Doubles : %f\t%f\n", d5, d6);
669*b725ae77Skettenis   printf("Two Doubles : %f\t%f\n", d7, d8);
670*b725ae77Skettenis   printf("Two Doubles : %f\t%f\n", d9, d10);
671*b725ae77Skettenis }
672*b725ae77Skettenis 
673*b725ae77Skettenis /*****************************************************************
674*b725ae77Skettenis  * PRINT_BIT_FLAGS :
675*b725ae77Skettenis  * IN struct bit_flags_t bit_flags
676*b725ae77Skettenis  ****************************************************************/
677*b725ae77Skettenis #ifdef PROTOTYPES
print_bit_flags(struct bit_flags_t bit_flags)678*b725ae77Skettenis void print_bit_flags (struct bit_flags_t bit_flags)
679*b725ae77Skettenis #else
680*b725ae77Skettenis void print_bit_flags ( bit_flags )
681*b725ae77Skettenis struct bit_flags_t bit_flags;
682*b725ae77Skettenis #endif
683*b725ae77Skettenis {
684*b725ae77Skettenis 
685*b725ae77Skettenis      if (bit_flags.alpha) printf("alpha\n");
686*b725ae77Skettenis      if (bit_flags.beta) printf("beta\n");
687*b725ae77Skettenis      if (bit_flags.gamma) printf("gamma\n");
688*b725ae77Skettenis      if (bit_flags.delta) printf("delta\n");
689*b725ae77Skettenis      if (bit_flags.epsilon) printf("epsilon\n");
690*b725ae77Skettenis      if (bit_flags.omega) printf("omega\n");
691*b725ae77Skettenis }
692*b725ae77Skettenis 
693*b725ae77Skettenis /*****************************************************************
694*b725ae77Skettenis  * PRINT_BIT_FLAGS_COMBO :
695*b725ae77Skettenis  * IN struct bit_flags_combo_t bit_flags_combo
696*b725ae77Skettenis  ****************************************************************/
697*b725ae77Skettenis #ifdef PROTOTYPES
print_bit_flags_combo(struct bit_flags_combo_t bit_flags_combo)698*b725ae77Skettenis void print_bit_flags_combo (struct bit_flags_combo_t bit_flags_combo)
699*b725ae77Skettenis #else
700*b725ae77Skettenis void print_bit_flags_combo ( bit_flags_combo )
701*b725ae77Skettenis      struct bit_flags_combo_t bit_flags_combo;
702*b725ae77Skettenis #endif
703*b725ae77Skettenis {
704*b725ae77Skettenis 
705*b725ae77Skettenis      if (bit_flags_combo.alpha) printf("alpha\n");
706*b725ae77Skettenis      if (bit_flags_combo.beta) printf("beta\n");
707*b725ae77Skettenis      if (bit_flags_combo.gamma) printf("gamma\n");
708*b725ae77Skettenis      if (bit_flags_combo.delta) printf("delta\n");
709*b725ae77Skettenis      if (bit_flags_combo.epsilon) printf("epsilon\n");
710*b725ae77Skettenis      if (bit_flags_combo.omega) printf("omega\n");
711*b725ae77Skettenis      printf("ch1: %c\tch2: %c\n", bit_flags_combo.ch1, bit_flags_combo.ch2);
712*b725ae77Skettenis }
713*b725ae77Skettenis 
714*b725ae77Skettenis /*****************************************************************
715*b725ae77Skettenis  * PRINT_ONE_DOUBLE :
716*b725ae77Skettenis  * IN struct one_double_t one_double
717*b725ae77Skettenis  ****************************************************************/
718*b725ae77Skettenis #ifdef PROTOTYPES
print_one_double(struct one_double_t one_double)719*b725ae77Skettenis void print_one_double (struct one_double_t one_double)
720*b725ae77Skettenis #else
721*b725ae77Skettenis void print_one_double ( one_double )
722*b725ae77Skettenis struct one_double_t one_double;
723*b725ae77Skettenis #endif
724*b725ae77Skettenis {
725*b725ae77Skettenis 
726*b725ae77Skettenis      printf("Contents of one_double_t: \n\n");
727*b725ae77Skettenis      printf("%f\n", one_double.double1);
728*b725ae77Skettenis }
729*b725ae77Skettenis 
730*b725ae77Skettenis /*****************************************************************
731*b725ae77Skettenis  * PRINT_TWO_FLOATS :
732*b725ae77Skettenis  * IN struct two_floats_t two_floats
733*b725ae77Skettenis  ****************************************************************/
734*b725ae77Skettenis #ifdef PROTOTYPES
print_two_floats(struct two_floats_t two_floats)735*b725ae77Skettenis void print_two_floats (struct two_floats_t two_floats)
736*b725ae77Skettenis #else
737*b725ae77Skettenis void print_two_floats ( two_floats )
738*b725ae77Skettenis struct two_floats_t two_floats;
739*b725ae77Skettenis #endif
740*b725ae77Skettenis {
741*b725ae77Skettenis 
742*b725ae77Skettenis      printf("Contents of two_floats_t: \n\n");
743*b725ae77Skettenis      printf("%f\t%f\n", two_floats.float1, two_floats.float2);
744*b725ae77Skettenis }
745*b725ae77Skettenis 
746*b725ae77Skettenis /*****************************************************************
747*b725ae77Skettenis  * PRINT_TWO_CHARS :
748*b725ae77Skettenis  * IN struct two_char_t two_char
749*b725ae77Skettenis  ****************************************************************/
750*b725ae77Skettenis #ifdef PROTOTYPES
print_two_chars(struct two_char_t two_char)751*b725ae77Skettenis void print_two_chars (struct two_char_t two_char)
752*b725ae77Skettenis #else
753*b725ae77Skettenis void print_two_chars ( two_char )
754*b725ae77Skettenis struct two_char_t two_char;
755*b725ae77Skettenis #endif
756*b725ae77Skettenis {
757*b725ae77Skettenis 
758*b725ae77Skettenis      printf("Contents of two_char_t: \n\n");
759*b725ae77Skettenis      printf("%c\t%c\n", two_char.ch1, two_char.ch2);
760*b725ae77Skettenis }
761*b725ae77Skettenis 
762*b725ae77Skettenis /*****************************************************************
763*b725ae77Skettenis  * PRINT_THREE_CHARS :
764*b725ae77Skettenis  * IN struct three_char_t three_char
765*b725ae77Skettenis  ****************************************************************/
766*b725ae77Skettenis #ifdef PROTOTYPES
print_three_chars(struct three_char_t three_char)767*b725ae77Skettenis void print_three_chars (struct three_char_t three_char)
768*b725ae77Skettenis #else
769*b725ae77Skettenis void print_three_chars ( three_char )
770*b725ae77Skettenis struct three_char_t three_char;
771*b725ae77Skettenis #endif
772*b725ae77Skettenis {
773*b725ae77Skettenis 
774*b725ae77Skettenis      printf("Contents of three_char_t: \n\n");
775*b725ae77Skettenis      printf("%c\t%c\t%c\n", three_char.ch1, three_char.ch2, three_char.ch3);
776*b725ae77Skettenis }
777*b725ae77Skettenis 
778*b725ae77Skettenis /*****************************************************************
779*b725ae77Skettenis  * PRINT_FIVE_CHARS :
780*b725ae77Skettenis  * IN struct five_char_t five_char
781*b725ae77Skettenis  ****************************************************************/
782*b725ae77Skettenis #ifdef PROTOTYPES
print_five_chars(struct five_char_t five_char)783*b725ae77Skettenis void print_five_chars (struct five_char_t five_char)
784*b725ae77Skettenis #else
785*b725ae77Skettenis void print_five_chars ( five_char )
786*b725ae77Skettenis struct five_char_t five_char;
787*b725ae77Skettenis #endif
788*b725ae77Skettenis {
789*b725ae77Skettenis 
790*b725ae77Skettenis      printf("Contents of five_char_t: \n\n");
791*b725ae77Skettenis      printf("%c\t%c\t%c\t%c\t%c\n", five_char.ch1, five_char.ch2,
792*b725ae77Skettenis 				    five_char.ch3, five_char.ch4,
793*b725ae77Skettenis 				    five_char.ch5);
794*b725ae77Skettenis }
795*b725ae77Skettenis 
796*b725ae77Skettenis /*****************************************************************
797*b725ae77Skettenis  * PRINT_INT_CHAR_COMBO :
798*b725ae77Skettenis  * IN struct int_char_combo_t int_char_combo
799*b725ae77Skettenis  ****************************************************************/
800*b725ae77Skettenis #ifdef PROTOTYPES
print_int_char_combo(struct int_char_combo_t int_char_combo)801*b725ae77Skettenis void print_int_char_combo (struct int_char_combo_t int_char_combo)
802*b725ae77Skettenis #else
803*b725ae77Skettenis void print_int_char_combo ( int_char_combo )
804*b725ae77Skettenis struct int_char_combo_t int_char_combo;
805*b725ae77Skettenis #endif
806*b725ae77Skettenis {
807*b725ae77Skettenis 
808*b725ae77Skettenis      printf("Contents of int_char_combo_t: \n\n");
809*b725ae77Skettenis      printf("%d\t%c\n", int_char_combo.int1, int_char_combo.ch1);
810*b725ae77Skettenis }
811*b725ae77Skettenis 
812*b725ae77Skettenis /*****************************************************************
813*b725ae77Skettenis  * PRINT_STRUCT_REP :
814*b725ae77Skettenis  * The last parameter must go onto the stack rather than into a register.
815*b725ae77Skettenis  * This is a good function to call to test small structures.
816*b725ae77Skettenis  * IN struct small_rep_info_t  struct1
817*b725ae77Skettenis  * IN struct small_rep_info_t  struct2
818*b725ae77Skettenis  * IN struct small_rep_info_t  struct3
819*b725ae77Skettenis  ****************************************************************/
820*b725ae77Skettenis #ifdef PROTOTYPES
print_struct_rep(struct small_rep_info_t struct1,struct small_rep_info_t struct2,struct small_rep_info_t struct3)821*b725ae77Skettenis void print_struct_rep(
822*b725ae77Skettenis      struct small_rep_info_t struct1,
823*b725ae77Skettenis      struct small_rep_info_t struct2,
824*b725ae77Skettenis      struct small_rep_info_t struct3)
825*b725ae77Skettenis #else
826*b725ae77Skettenis void print_struct_rep( struct1, struct2, struct3)
827*b725ae77Skettenis      struct small_rep_info_t struct1;
828*b725ae77Skettenis      struct small_rep_info_t struct2;
829*b725ae77Skettenis      struct small_rep_info_t struct3;
830*b725ae77Skettenis #endif
831*b725ae77Skettenis {
832*b725ae77Skettenis 
833*b725ae77Skettenis 
834*b725ae77Skettenis   printf("Contents of struct1: \n\n");
835*b725ae77Skettenis   printf("%10d%10d\n", struct1.value, struct1.head);
836*b725ae77Skettenis   printf("Contents of struct2: \n\n");
837*b725ae77Skettenis   printf("%10d%10d\n", struct2.value, struct2.head);
838*b725ae77Skettenis   printf("Contents of struct3: \n\n");
839*b725ae77Skettenis   printf("%10d%10d\n", struct3.value, struct3.head);
840*b725ae77Skettenis 
841*b725ae77Skettenis }
842*b725ae77Skettenis 
843*b725ae77Skettenis /*****************************************************************
844*b725ae77Skettenis  * SUM_STRUCT_PRINT :
845*b725ae77Skettenis  * The last two parameters must go onto the stack rather than into a register.
846*b725ae77Skettenis  * This is a good function to call to test small structures.
847*b725ae77Skettenis  * IN struct small_rep_info_t  struct1
848*b725ae77Skettenis  * IN struct small_rep_info_t  struct2
849*b725ae77Skettenis  * IN struct small_rep_info_t  struct3
850*b725ae77Skettenis  * IN struct small_rep_info_t  struct4
851*b725ae77Skettenis  ****************************************************************/
852*b725ae77Skettenis #ifdef PROTOTYPES
sum_struct_print(int seed,struct small_rep_info_t struct1,struct small_rep_info_t struct2,struct small_rep_info_t struct3,struct small_rep_info_t struct4)853*b725ae77Skettenis void sum_struct_print (
854*b725ae77Skettenis      int seed,
855*b725ae77Skettenis      struct small_rep_info_t struct1,
856*b725ae77Skettenis      struct small_rep_info_t struct2,
857*b725ae77Skettenis      struct small_rep_info_t struct3,
858*b725ae77Skettenis      struct small_rep_info_t struct4)
859*b725ae77Skettenis #else
860*b725ae77Skettenis void sum_struct_print ( seed, struct1, struct2, struct3, struct4)
861*b725ae77Skettenis      int seed;
862*b725ae77Skettenis      struct small_rep_info_t struct1;
863*b725ae77Skettenis      struct small_rep_info_t struct2;
864*b725ae77Skettenis      struct small_rep_info_t struct3;
865*b725ae77Skettenis      struct small_rep_info_t struct4;
866*b725ae77Skettenis #endif
867*b725ae77Skettenis {
868*b725ae77Skettenis      int sum;
869*b725ae77Skettenis 
870*b725ae77Skettenis      printf("Sum of the 4 struct values and seed : \n\n");
871*b725ae77Skettenis      sum = seed + struct1.value + struct2.value + struct3.value + struct4.value;
872*b725ae77Skettenis      printf("%10d\n", sum);
873*b725ae77Skettenis }
874*b725ae77Skettenis 
875*b725ae77Skettenis /*****************************************************************
876*b725ae77Skettenis  * PRINT_SMALL_STRUCTS :
877*b725ae77Skettenis  * This is a good function to call to test small structures.
878*b725ae77Skettenis  * All of the small structures of odd sizes (40 bits, 8bits, etc.)
879*b725ae77Skettenis  * are pushed onto the stack.
880*b725ae77Skettenis  ****************************************************************/
881*b725ae77Skettenis #ifdef PROTOTYPES
print_small_structs(struct small_rep_info_t struct1,struct small_rep_info_t struct2,struct small_rep_info_t struct3,struct small_rep_info_t struct4,struct bit_flags_t flags,struct bit_flags_combo_t flags_combo,struct three_char_t three_char,struct five_char_t five_char,struct int_char_combo_t int_char_combo,struct one_double_t d1,struct one_double_t d2,struct one_double_t d3,struct two_floats_t f1,struct two_floats_t f2,struct two_floats_t f3)882*b725ae77Skettenis void print_small_structs (
883*b725ae77Skettenis      struct small_rep_info_t  struct1,
884*b725ae77Skettenis      struct small_rep_info_t  struct2,
885*b725ae77Skettenis      struct small_rep_info_t  struct3,
886*b725ae77Skettenis      struct small_rep_info_t  struct4,
887*b725ae77Skettenis      struct bit_flags_t       flags,
888*b725ae77Skettenis      struct bit_flags_combo_t flags_combo,
889*b725ae77Skettenis      struct three_char_t      three_char,
890*b725ae77Skettenis      struct five_char_t       five_char,
891*b725ae77Skettenis      struct int_char_combo_t  int_char_combo,
892*b725ae77Skettenis      struct one_double_t      d1,
893*b725ae77Skettenis      struct one_double_t      d2,
894*b725ae77Skettenis      struct one_double_t      d3,
895*b725ae77Skettenis      struct two_floats_t      f1,
896*b725ae77Skettenis      struct two_floats_t      f2,
897*b725ae77Skettenis      struct two_floats_t      f3)
898*b725ae77Skettenis #else
899*b725ae77Skettenis void print_small_structs ( struct1, struct2, struct3,  struct4, flags,
900*b725ae77Skettenis flags_combo, three_char, five_char, int_char_combo, d1, d2,d3,f1,f2,f3)
901*b725ae77Skettenis      struct small_rep_info_t  struct1;
902*b725ae77Skettenis      struct small_rep_info_t  struct2;
903*b725ae77Skettenis      struct small_rep_info_t  struct3;
904*b725ae77Skettenis      struct small_rep_info_t  struct4;
905*b725ae77Skettenis      struct bit_flags_t       flags;
906*b725ae77Skettenis      struct bit_flags_combo_t flags_combo;
907*b725ae77Skettenis      struct three_char_t      three_char;
908*b725ae77Skettenis      struct five_char_t       five_char;
909*b725ae77Skettenis      struct int_char_combo_t  int_char_combo;
910*b725ae77Skettenis      struct one_double_t      d1;
911*b725ae77Skettenis      struct one_double_t      d2;
912*b725ae77Skettenis      struct one_double_t      d3;
913*b725ae77Skettenis      struct two_floats_t      f1;
914*b725ae77Skettenis      struct two_floats_t      f2;
915*b725ae77Skettenis      struct two_floats_t      f3;
916*b725ae77Skettenis #endif
917*b725ae77Skettenis {
918*b725ae77Skettenis    print_bit_flags(flags);
919*b725ae77Skettenis    print_bit_flags_combo(flags_combo);
920*b725ae77Skettenis    print_three_chars(three_char);
921*b725ae77Skettenis    print_five_chars(five_char);
922*b725ae77Skettenis    print_int_char_combo(int_char_combo);
923*b725ae77Skettenis    sum_struct_print(10, struct1, struct2, struct3, struct4);
924*b725ae77Skettenis    print_struct_rep(struct1, struct2, struct3);
925*b725ae77Skettenis    print_one_double(d1);
926*b725ae77Skettenis    print_one_double(d2);
927*b725ae77Skettenis    print_one_double(d3);
928*b725ae77Skettenis    print_two_floats(f1);
929*b725ae77Skettenis    print_two_floats(f2);
930*b725ae77Skettenis    print_two_floats(f3);
931*b725ae77Skettenis }
932*b725ae77Skettenis 
933*b725ae77Skettenis /*****************************************************************
934*b725ae77Skettenis  * PRINT_LONG_ARG_LIST :
935*b725ae77Skettenis  * This is a good function to call to test small structures.
936*b725ae77Skettenis  * The first two parameters ( the doubles ) go into registers. The
937*b725ae77Skettenis  * remaining arguments are pushed onto the stack. Depending on where
938*b725ae77Skettenis  * print_long_arg_list is called from, the size of the argument list
939*b725ae77Skettenis  * may force more space to be pushed onto the stack as part of the callers
940*b725ae77Skettenis  * frame.
941*b725ae77Skettenis  ****************************************************************/
942*b725ae77Skettenis #ifdef PROTOTYPES
print_long_arg_list(double a,double b,int c,int d,int e,int f,struct small_rep_info_t struct1,struct small_rep_info_t struct2,struct small_rep_info_t struct3,struct small_rep_info_t struct4,struct bit_flags_t flags,struct bit_flags_combo_t flags_combo,struct three_char_t three_char,struct five_char_t five_char,struct int_char_combo_t int_char_combo,struct one_double_t d1,struct one_double_t d2,struct one_double_t d3,struct two_floats_t f1,struct two_floats_t f2,struct two_floats_t f3)943*b725ae77Skettenis void print_long_arg_list (
944*b725ae77Skettenis      double a,
945*b725ae77Skettenis      double b,
946*b725ae77Skettenis      int c,
947*b725ae77Skettenis      int d,
948*b725ae77Skettenis      int e,
949*b725ae77Skettenis      int f,
950*b725ae77Skettenis      struct small_rep_info_t  struct1,
951*b725ae77Skettenis      struct small_rep_info_t  struct2,
952*b725ae77Skettenis      struct small_rep_info_t  struct3,
953*b725ae77Skettenis      struct small_rep_info_t  struct4,
954*b725ae77Skettenis      struct bit_flags_t       flags,
955*b725ae77Skettenis      struct bit_flags_combo_t flags_combo,
956*b725ae77Skettenis      struct three_char_t      three_char,
957*b725ae77Skettenis      struct five_char_t       five_char,
958*b725ae77Skettenis      struct int_char_combo_t  int_char_combo,
959*b725ae77Skettenis      struct one_double_t      d1,
960*b725ae77Skettenis      struct one_double_t      d2,
961*b725ae77Skettenis      struct one_double_t      d3,
962*b725ae77Skettenis      struct two_floats_t      f1,
963*b725ae77Skettenis      struct two_floats_t      f2,
964*b725ae77Skettenis      struct two_floats_t      f3)
965*b725ae77Skettenis #else
966*b725ae77Skettenis void print_long_arg_list ( a, b, c, d, e, f, struct1, struct2, struct3,
967*b725ae77Skettenis struct4, flags, flags_combo, three_char, five_char, int_char_combo, d1,d2,d3,
968*b725ae77Skettenis f1, f2, f3 )
969*b725ae77Skettenis      double a;
970*b725ae77Skettenis      double b;
971*b725ae77Skettenis      int c;
972*b725ae77Skettenis      int d;
973*b725ae77Skettenis      int e;
974*b725ae77Skettenis      int f;
975*b725ae77Skettenis      struct small_rep_info_t  struct1;
976*b725ae77Skettenis      struct small_rep_info_t  struct2;
977*b725ae77Skettenis      struct small_rep_info_t  struct3;
978*b725ae77Skettenis      struct small_rep_info_t  struct4;
979*b725ae77Skettenis      struct bit_flags_t       flags;
980*b725ae77Skettenis      struct bit_flags_combo_t flags_combo;
981*b725ae77Skettenis      struct three_char_t      three_char;
982*b725ae77Skettenis      struct five_char_t       five_char;
983*b725ae77Skettenis      struct int_char_combo_t  int_char_combo;
984*b725ae77Skettenis      struct one_double_t      d1;
985*b725ae77Skettenis      struct one_double_t      d2;
986*b725ae77Skettenis      struct one_double_t      d3;
987*b725ae77Skettenis      struct two_floats_t      f1;
988*b725ae77Skettenis      struct two_floats_t      f2;
989*b725ae77Skettenis      struct two_floats_t      f3;
990*b725ae77Skettenis #endif
991*b725ae77Skettenis {
992*b725ae77Skettenis     printf("double : %f\n", a);
993*b725ae77Skettenis     printf("double : %f\n", b);
994*b725ae77Skettenis     printf("int : %d\n", c);
995*b725ae77Skettenis     printf("int : %d\n", d);
996*b725ae77Skettenis     printf("int : %d\n", e);
997*b725ae77Skettenis     printf("int : %d\n", f);
998*b725ae77Skettenis     print_small_structs( struct1, struct2, struct3, struct4, flags, flags_combo,
999*b725ae77Skettenis 			 three_char, five_char, int_char_combo, d1, d2, d3,
1000*b725ae77Skettenis 			 f1, f2, f3);
1001*b725ae77Skettenis }
1002*b725ae77Skettenis 
1003*b725ae77Skettenis 
1004*b725ae77Skettenis #ifdef PROTOTYPES
print_one_large_struct(struct array_rep_info_t linked_list1)1005*b725ae77Skettenis void print_one_large_struct (struct array_rep_info_t linked_list1)
1006*b725ae77Skettenis #else
1007*b725ae77Skettenis void print_one_large_struct( linked_list1 )
1008*b725ae77Skettenis      struct array_rep_info_t linked_list1;
1009*b725ae77Skettenis #endif
1010*b725ae77Skettenis {
1011*b725ae77Skettenis 
1012*b725ae77Skettenis  /* printf("Contents of linked list1: \n\n");
1013*b725ae77Skettenis   printf("Element Value | Index of Next Element\n");
1014*b725ae77Skettenis   printf("-------------------------------------\n");
1015*b725ae77Skettenis   printf("              |                      \n");*/
1016*b725ae77Skettenis   /*for (index = 0; index < 10; index++) {*/
1017*b725ae77Skettenis 
1018*b725ae77Skettenis       printf("%10d%10d\n", linked_list1.values[0],
1019*b725ae77Skettenis 			   linked_list1.next_index[0]);
1020*b725ae77Skettenis   /*}*/
1021*b725ae77Skettenis }
1022*b725ae77Skettenis 
1023*b725ae77Skettenis /*****************************************************************
1024*b725ae77Skettenis  * PRINT_ARRAY_REP :
1025*b725ae77Skettenis  * The three structure parameters should fit into registers.
1026*b725ae77Skettenis  * IN struct array_rep_info_t linked_list1
1027*b725ae77Skettenis  * IN struct array_rep_info_t linked_list2
1028*b725ae77Skettenis  * IN struct array_rep_info_t linked_list3
1029*b725ae77Skettenis  ****************************************************************/
1030*b725ae77Skettenis #ifdef PROTOTYPES
print_array_rep(struct array_rep_info_t linked_list1,struct array_rep_info_t linked_list2,struct array_rep_info_t linked_list3)1031*b725ae77Skettenis void print_array_rep(
1032*b725ae77Skettenis      struct array_rep_info_t linked_list1,
1033*b725ae77Skettenis      struct array_rep_info_t linked_list2,
1034*b725ae77Skettenis      struct array_rep_info_t linked_list3)
1035*b725ae77Skettenis #else
1036*b725ae77Skettenis void print_array_rep( linked_list1, linked_list2, linked_list3 )
1037*b725ae77Skettenis      struct array_rep_info_t linked_list1;
1038*b725ae77Skettenis      struct array_rep_info_t linked_list2;
1039*b725ae77Skettenis      struct array_rep_info_t linked_list3;
1040*b725ae77Skettenis #endif
1041*b725ae77Skettenis {
1042*b725ae77Skettenis 
1043*b725ae77Skettenis   int index;
1044*b725ae77Skettenis 
1045*b725ae77Skettenis   printf("Contents of linked list1: \n\n");
1046*b725ae77Skettenis   printf("Element Value | Index of Next Element\n");
1047*b725ae77Skettenis   printf("-------------------------------------\n");
1048*b725ae77Skettenis   printf("              |                      \n");
1049*b725ae77Skettenis   for (index = 0; index < 10; index++) {
1050*b725ae77Skettenis 
1051*b725ae77Skettenis       printf("%10d%10d\n", linked_list1.values[index],
1052*b725ae77Skettenis 			   linked_list1.next_index[index]);
1053*b725ae77Skettenis   }
1054*b725ae77Skettenis 
1055*b725ae77Skettenis   printf("Contents of linked list2: \n\n");
1056*b725ae77Skettenis   printf("Element Value | Index of Next Element\n");
1057*b725ae77Skettenis   printf("-------------------------------------\n");
1058*b725ae77Skettenis   printf("              |                      \n");
1059*b725ae77Skettenis   for (index = 0; index < 10; index++) {
1060*b725ae77Skettenis 
1061*b725ae77Skettenis       printf("%10d%10d\n", linked_list2.values[index],
1062*b725ae77Skettenis 			   linked_list2.next_index[index]);
1063*b725ae77Skettenis   }
1064*b725ae77Skettenis 
1065*b725ae77Skettenis   printf("Contents of linked list3: \n\n");
1066*b725ae77Skettenis   printf("Element Value | Index of Next Element\n");
1067*b725ae77Skettenis   printf("-------------------------------------\n");
1068*b725ae77Skettenis   printf("              |                      \n");
1069*b725ae77Skettenis   for (index = 0; index < 10; index++) {
1070*b725ae77Skettenis 
1071*b725ae77Skettenis       printf("%10d%10d\n", linked_list3.values[index],
1072*b725ae77Skettenis 			   linked_list3.next_index[index]);
1073*b725ae77Skettenis   }
1074*b725ae77Skettenis 
1075*b725ae77Skettenis }
1076*b725ae77Skettenis 
1077*b725ae77Skettenis /*****************************************************************
1078*b725ae77Skettenis  * SUM_ARRAY_PRINT :
1079*b725ae77Skettenis  * The last structure parameter must be pushed onto the stack
1080*b725ae77Skettenis  * IN int    seed
1081*b725ae77Skettenis  * IN struct array_rep_info_t linked_list1
1082*b725ae77Skettenis  * IN struct array_rep_info_t linked_list2
1083*b725ae77Skettenis  * IN struct array_rep_info_t linked_list3
1084*b725ae77Skettenis  * IN struct array_rep_info_t linked_list4
1085*b725ae77Skettenis  ****************************************************************/
1086*b725ae77Skettenis #ifdef PROTOTYPES
sum_array_print(int seed,struct array_rep_info_t linked_list1,struct array_rep_info_t linked_list2,struct array_rep_info_t linked_list3,struct array_rep_info_t linked_list4)1087*b725ae77Skettenis void sum_array_print (
1088*b725ae77Skettenis      int seed,
1089*b725ae77Skettenis      struct array_rep_info_t linked_list1,
1090*b725ae77Skettenis      struct array_rep_info_t linked_list2,
1091*b725ae77Skettenis      struct array_rep_info_t linked_list3,
1092*b725ae77Skettenis      struct array_rep_info_t linked_list4)
1093*b725ae77Skettenis #else
1094*b725ae77Skettenis void sum_array_print ( seed, linked_list1, linked_list2, linked_list3,linked_list4)
1095*b725ae77Skettenis      int seed;
1096*b725ae77Skettenis      struct array_rep_info_t linked_list1;
1097*b725ae77Skettenis      struct array_rep_info_t linked_list2;
1098*b725ae77Skettenis      struct array_rep_info_t linked_list3;
1099*b725ae77Skettenis      struct array_rep_info_t linked_list4;
1100*b725ae77Skettenis #endif
1101*b725ae77Skettenis {
1102*b725ae77Skettenis      int index;
1103*b725ae77Skettenis      int sum;
1104*b725ae77Skettenis 
1105*b725ae77Skettenis      printf("Sum of 4 arrays, by element (add in seed as well): \n\n");
1106*b725ae77Skettenis      printf("Seed: %d\n", seed);
1107*b725ae77Skettenis      printf("Element Index | Sum \n");
1108*b725ae77Skettenis      printf("-------------------------\n");
1109*b725ae77Skettenis      printf("              |          \n");
1110*b725ae77Skettenis 
1111*b725ae77Skettenis      for (index = 0; index < 10; index++) {
1112*b725ae77Skettenis 
1113*b725ae77Skettenis          sum = seed + linked_list1.values[index] + linked_list2.values[index] +
1114*b725ae77Skettenis 	       linked_list3.values[index] + linked_list4.values[index];
1115*b725ae77Skettenis          printf("%10d%10d\n", index, sum);
1116*b725ae77Skettenis      }
1117*b725ae77Skettenis }
1118*b725ae77Skettenis 
1119*b725ae77Skettenis /*****************************************************************
1120*b725ae77Skettenis  * INIT_ARRAY_REP :
1121*b725ae77Skettenis  * IN struct array_rep_info_t *linked_list
1122*b725ae77Skettenis  * IN int    seed
1123*b725ae77Skettenis  ****************************************************************/
1124*b725ae77Skettenis #ifdef PROTOTYPES
init_array_rep(struct array_rep_info_t * linked_list,int seed)1125*b725ae77Skettenis void init_array_rep(
1126*b725ae77Skettenis      struct array_rep_info_t *linked_list,
1127*b725ae77Skettenis      int    seed)
1128*b725ae77Skettenis #else
1129*b725ae77Skettenis void init_array_rep( linked_list, seed )
1130*b725ae77Skettenis      struct array_rep_info_t *linked_list;
1131*b725ae77Skettenis      int    seed;
1132*b725ae77Skettenis #endif
1133*b725ae77Skettenis {
1134*b725ae77Skettenis 
1135*b725ae77Skettenis   int index;
1136*b725ae77Skettenis 
1137*b725ae77Skettenis   for (index = 0; index < 10; index++) {
1138*b725ae77Skettenis 
1139*b725ae77Skettenis       linked_list->values[index] = (2*index) + (seed*2);
1140*b725ae77Skettenis       linked_list->next_index[index] = index + 1;
1141*b725ae77Skettenis   }
1142*b725ae77Skettenis   linked_list->head = 0;
1143*b725ae77Skettenis }
1144*b725ae77Skettenis 
1145*b725ae77Skettenis 
main()1146*b725ae77Skettenis int main ()  {
1147*b725ae77Skettenis 
1148*b725ae77Skettenis   /* variables for array and enumerated type testing
1149*b725ae77Skettenis    */
1150*b725ae77Skettenis   static char     char_array[121];
1151*b725ae77Skettenis   static double   double_array[9];
1152*b725ae77Skettenis   static float    float_array[15];
1153*b725ae77Skettenis   static int      integer_array[50];
1154*b725ae77Skettenis   static int      index;
1155*b725ae77Skettenis   static id_int   student_id = 23;
1156*b725ae77Skettenis   static colors   my_shirt = YELLOW;
1157*b725ae77Skettenis 
1158*b725ae77Skettenis   /* variables for large structure testing
1159*b725ae77Skettenis    */
1160*b725ae77Skettenis   static int number = 10;
1161*b725ae77Skettenis   static struct array_rep_info_t *list1;
1162*b725ae77Skettenis   static struct array_rep_info_t *list2;
1163*b725ae77Skettenis   static struct array_rep_info_t *list3;
1164*b725ae77Skettenis   static struct array_rep_info_t *list4;
1165*b725ae77Skettenis 
1166*b725ae77Skettenis   /* variables for testing a very long argument list
1167*b725ae77Skettenis    */
1168*b725ae77Skettenis    static double                    a;
1169*b725ae77Skettenis    static double                    b;
1170*b725ae77Skettenis    static int                       c;
1171*b725ae77Skettenis    static int                       d;
1172*b725ae77Skettenis    static int                       e;
1173*b725ae77Skettenis    static int                       f;
1174*b725ae77Skettenis 
1175*b725ae77Skettenis   /* variables for testing a small structures and a very long argument list
1176*b725ae77Skettenis    */
1177*b725ae77Skettenis    static struct small_rep_info_t  *struct1;
1178*b725ae77Skettenis    static struct small_rep_info_t  *struct2;
1179*b725ae77Skettenis    static struct small_rep_info_t  *struct3;
1180*b725ae77Skettenis    static struct small_rep_info_t  *struct4;
1181*b725ae77Skettenis    static struct bit_flags_t       *flags;
1182*b725ae77Skettenis    static struct bit_flags_combo_t *flags_combo;
1183*b725ae77Skettenis    static struct three_char_t      *three_char;
1184*b725ae77Skettenis    static struct five_char_t       *five_char;
1185*b725ae77Skettenis    static struct int_char_combo_t  *int_char_combo;
1186*b725ae77Skettenis    static struct one_double_t      *d1;
1187*b725ae77Skettenis    static struct one_double_t      *d2;
1188*b725ae77Skettenis    static struct one_double_t      *d3;
1189*b725ae77Skettenis    static struct two_floats_t      *f1;
1190*b725ae77Skettenis    static struct two_floats_t      *f2;
1191*b725ae77Skettenis    static struct two_floats_t      *f3;
1192*b725ae77Skettenis 
1193*b725ae77Skettenis   /* Initialize arrays
1194*b725ae77Skettenis    */
1195*b725ae77Skettenis   for (index = 0; index < 120; index++) {
1196*b725ae77Skettenis       if ((index%2) == 0) char_array[index] = 'Z';
1197*b725ae77Skettenis 	 else char_array[index] = 'a';
1198*b725ae77Skettenis   }
1199*b725ae77Skettenis   char_array[120] = '\0';
1200*b725ae77Skettenis 
1201*b725ae77Skettenis   for (index = 0; index < 9; index++) {
1202*b725ae77Skettenis       double_array[index] = index*23.4567;
1203*b725ae77Skettenis   }
1204*b725ae77Skettenis 
1205*b725ae77Skettenis   for (index = 0; index < 15; index++) {
1206*b725ae77Skettenis       float_array[index] = index/7.02;
1207*b725ae77Skettenis   }
1208*b725ae77Skettenis 
1209*b725ae77Skettenis   for (index = 0; index < 50; index++) {
1210*b725ae77Skettenis       integer_array[index] = -index;
1211*b725ae77Skettenis   }
1212*b725ae77Skettenis 
1213*b725ae77Skettenis   /* Print arrays
1214*b725ae77Skettenis    */
1215*b725ae77Skettenis   print_char_array(char_array);
1216*b725ae77Skettenis   print_double_array(double_array);
1217*b725ae77Skettenis   print_float_array(float_array);
1218*b725ae77Skettenis   print_student_id_shirt_color(student_id, my_shirt);
1219*b725ae77Skettenis   print_int_array(integer_array);
1220*b725ae77Skettenis   print_all_arrays(integer_array, char_array, float_array, double_array);
1221*b725ae77Skettenis 
1222*b725ae77Skettenis   /* Allocate space for large structures
1223*b725ae77Skettenis    */
1224*b725ae77Skettenis   list1 = (struct array_rep_info_t *)malloc(sizeof(struct array_rep_info_t));
1225*b725ae77Skettenis   list2 = (struct array_rep_info_t *)malloc(sizeof(struct array_rep_info_t));
1226*b725ae77Skettenis   list3 = (struct array_rep_info_t *)malloc(sizeof(struct array_rep_info_t));
1227*b725ae77Skettenis   list4 = (struct array_rep_info_t *)malloc(sizeof(struct array_rep_info_t));
1228*b725ae77Skettenis 
1229*b725ae77Skettenis   /* Initialize large structures
1230*b725ae77Skettenis    */
1231*b725ae77Skettenis   init_array_rep(list1, 2);
1232*b725ae77Skettenis   init_array_rep(list2, 4);
1233*b725ae77Skettenis   init_array_rep(list3, 5);
1234*b725ae77Skettenis   init_array_rep(list4, 10);
1235*b725ae77Skettenis   printf("HELLO WORLD\n");
1236*b725ae77Skettenis   printf("BYE BYE FOR NOW\n");
1237*b725ae77Skettenis   printf("VERY GREEN GRASS\n");
1238*b725ae77Skettenis 
1239*b725ae77Skettenis   /* Print large structures
1240*b725ae77Skettenis    */
1241*b725ae77Skettenis   sum_array_print(10, *list1, *list2, *list3, *list4);
1242*b725ae77Skettenis   print_array_rep(*list1, *list2, *list3);
1243*b725ae77Skettenis   print_one_large_struct(*list1);
1244*b725ae77Skettenis 
1245*b725ae77Skettenis   /* Allocate space for small structures
1246*b725ae77Skettenis    */
1247*b725ae77Skettenis   struct1     = (struct small_rep_info_t  *)malloc(sizeof(struct small_rep_info_t));
1248*b725ae77Skettenis   struct2     = (struct small_rep_info_t  *)malloc(sizeof(struct small_rep_info_t));
1249*b725ae77Skettenis   struct3     = (struct small_rep_info_t  *)malloc(sizeof(struct small_rep_info_t));
1250*b725ae77Skettenis   struct4     = (struct small_rep_info_t  *)malloc(sizeof(struct small_rep_info_t));
1251*b725ae77Skettenis   flags       = (struct bit_flags_t *)malloc(sizeof(struct bit_flags_t));
1252*b725ae77Skettenis   flags_combo = (struct bit_flags_combo_t *)malloc(sizeof(struct bit_flags_combo_t));
1253*b725ae77Skettenis   three_char  = (struct three_char_t *)malloc(sizeof(struct three_char_t));
1254*b725ae77Skettenis   five_char   = (struct five_char_t *)malloc(sizeof(struct five_char_t));
1255*b725ae77Skettenis   int_char_combo = (struct int_char_combo_t *)malloc(sizeof(struct int_char_combo_t));
1256*b725ae77Skettenis 
1257*b725ae77Skettenis   d1 = (struct one_double_t *)malloc(sizeof(struct one_double_t));
1258*b725ae77Skettenis   d2 = (struct one_double_t *)malloc(sizeof(struct one_double_t));
1259*b725ae77Skettenis   d3 = (struct one_double_t *)malloc(sizeof(struct one_double_t));
1260*b725ae77Skettenis 
1261*b725ae77Skettenis   f1 = (struct two_floats_t *)malloc(sizeof(struct two_floats_t));
1262*b725ae77Skettenis   f2 = (struct two_floats_t *)malloc(sizeof(struct two_floats_t));
1263*b725ae77Skettenis   f3 = (struct two_floats_t *)malloc(sizeof(struct two_floats_t));
1264*b725ae77Skettenis 
1265*b725ae77Skettenis   /* Initialize small structures
1266*b725ae77Skettenis    */
1267*b725ae77Skettenis   init_small_structs ( struct1, struct2, struct3, struct4, flags,
1268*b725ae77Skettenis 		       flags_combo, three_char, five_char, int_char_combo,
1269*b725ae77Skettenis 		       d1, d2, d3, f1, f2, f3);
1270*b725ae77Skettenis 
1271*b725ae77Skettenis   /* Print small structures
1272*b725ae77Skettenis    */
1273*b725ae77Skettenis   print_small_structs ( *struct1, *struct2, *struct3, *struct4, *flags,
1274*b725ae77Skettenis 			*flags_combo, *three_char, *five_char, *int_char_combo,
1275*b725ae77Skettenis 			*d1, *d2, *d3, *f1, *f2, *f3);
1276*b725ae77Skettenis 
1277*b725ae77Skettenis   /* Print a very long arg list
1278*b725ae77Skettenis    */
1279*b725ae77Skettenis   a = 22.25;
1280*b725ae77Skettenis   b = 33.375;
1281*b725ae77Skettenis   c = 0;
1282*b725ae77Skettenis   d = -25;
1283*b725ae77Skettenis   e = 100;
1284*b725ae77Skettenis   f = 2345;
1285*b725ae77Skettenis 
1286*b725ae77Skettenis   print_long_arg_list ( a, b, c, d, e, f, *struct1, *struct2, *struct3, *struct4,
1287*b725ae77Skettenis 			*flags, *flags_combo, *three_char, *five_char, *int_char_combo,
1288*b725ae77Skettenis 			*d1, *d2, *d3, *f1, *f2, *f3);
1289*b725ae77Skettenis 
1290*b725ae77Skettenis   /* Initialize small structures
1291*b725ae77Skettenis    */
1292*b725ae77Skettenis   init_one_double ( d1, 1.11111);
1293*b725ae77Skettenis   init_one_double ( d2, -345.34);
1294*b725ae77Skettenis   init_one_double ( d3, 546464.2);
1295*b725ae77Skettenis   init_two_floats ( f1, 0.234, 453.1);
1296*b725ae77Skettenis   init_two_floats ( f2, 78.345, 23.09);
1297*b725ae77Skettenis   init_two_floats ( f3, -2.345, 1.0);
1298*b725ae77Skettenis   init_bit_flags(flags, (unsigned)1, (unsigned)0, (unsigned)1,
1299*b725ae77Skettenis 		 (unsigned)0, (unsigned)1, (unsigned)0 );
1300*b725ae77Skettenis   init_bit_flags_combo(flags_combo, (unsigned)1, (unsigned)0, 'y',
1301*b725ae77Skettenis 				     (unsigned)1, (unsigned)0, 'n',
1302*b725ae77Skettenis 				     (unsigned)1, (unsigned)0 );
1303*b725ae77Skettenis   init_three_chars(three_char, 'x', 'y', 'z');
1304*b725ae77Skettenis   init_five_chars(five_char, 'h', 'e', 'l', 'l', 'o');
1305*b725ae77Skettenis   init_int_char_combo(int_char_combo, 13, '!');
1306*b725ae77Skettenis   init_struct_rep(struct1, 10);
1307*b725ae77Skettenis   init_struct_rep(struct2, 20);
1308*b725ae77Skettenis   init_struct_rep(struct3, 30);
1309*b725ae77Skettenis   init_struct_rep(struct4, 40);
1310*b725ae77Skettenis 
1311*b725ae77Skettenis   compute_with_small_structs(35);
1312*b725ae77Skettenis   loop_count();
1313*b725ae77Skettenis   printf("HELLO WORLD\n");
1314*b725ae77Skettenis   printf("BYE BYE FOR NOW\n");
1315*b725ae77Skettenis   printf("VERY GREEN GRASS\n");
1316*b725ae77Skettenis 
1317*b725ae77Skettenis   /* Print small structures
1318*b725ae77Skettenis    */
1319*b725ae77Skettenis   print_one_double(*d1);
1320*b725ae77Skettenis   print_one_double(*d2);
1321*b725ae77Skettenis   print_one_double(*d3);
1322*b725ae77Skettenis   print_two_floats(*f1);
1323*b725ae77Skettenis   print_two_floats(*f2);
1324*b725ae77Skettenis   print_two_floats(*f3);
1325*b725ae77Skettenis   print_bit_flags(*flags);
1326*b725ae77Skettenis   print_bit_flags_combo(*flags_combo);
1327*b725ae77Skettenis   print_three_chars(*three_char);
1328*b725ae77Skettenis   print_five_chars(*five_char);
1329*b725ae77Skettenis   print_int_char_combo(*int_char_combo);
1330*b725ae77Skettenis   sum_struct_print(10, *struct1, *struct2, *struct3, *struct4);
1331*b725ae77Skettenis   print_struct_rep(*struct1, *struct2, *struct3);
1332*b725ae77Skettenis 
1333*b725ae77Skettenis   return 0;
1334*b725ae77Skettenis }
1335*b725ae77Skettenis 
1336*b725ae77Skettenis 
1337*b725ae77Skettenis 
1338*b725ae77Skettenis 
1339*b725ae77Skettenis 
1340