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