added printf for better debugging
[libfirm] / ir / be / test / Arrays.c
1 #include <stdio.h>
2
3 struct Arr2Object {
4     int a[10];
5     int inrom[10];
6     int b[10];
7 } arr_init = {
8   { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 },
9   { 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 },
10   { 1000, 1001 , 1002, 1003, 1004 , 1005, 1006, 1007, 1008, 1009}
11 };
12
13 struct ArrObject {
14   int num;
15 };
16
17 void ctorArrObject(struct ArrObject *pThis, int i) {
18   pThis->num = i;
19 }
20
21 void f(struct ArrObject *pThis) {
22   printf("num is %d\n", pThis->num);
23 }
24
25 static void pass_array_test(struct ArrObject *a, int a_len)
26 {
27   int i;
28
29   for(i = 0; i < a_len; i++) {
30     f(&a[i]);
31   }
32 }
33
34 #define length(a)       (sizeof(a)/sizeof((a)[0]))
35
36 int main(int argc, char *argv[]) {
37   int i, j, bi;
38   struct ArrObject ao[10];
39   struct ArrObject aob;
40   struct Arr2Object a2o[2];
41   struct Arr2Object a2;
42
43   for(i = 0; i < length(ao); i++)
44     ctorArrObject(&ao[i], i);
45
46   for(i = 0; i < 10; i++) {
47     f(&ao[i]);
48   }
49
50   pass_array_test(ao, length(ao));
51
52   for(i = 0; i < length(a2o); i++)
53     memcpy(&a2o[i], &arr_init, sizeof(arr_init));
54
55   for(i = 0; i < length(a2o[0].a); i++) {
56     memcpy(&a2, &a2o[0], sizeof(a2));
57     j = a2.a[i];
58     printf("%d\n", j);
59   }
60
61   a2o[0].a[5] = 4711;
62
63   printf("length(a2o[0].a) = %d\n", length(a2o[0].a));
64   for(i = 0; i < length(a2o[0].a); i++) {
65     printf("%d\n", a2o[0].a[i]);
66   }
67
68   printf("length(a2o[1].a) = %d\n", length(a2o[1].a));
69   for(i = 0; i < length(a2o[1].a); i++) {
70     printf("%d\n", a2o[1].a[i]);
71   }
72
73   printf("length(a2o[0].b) = %d\n", length(a2o[0].b));
74   for(i = 0; i < length(a2o[0].b); i++) {
75     memcpy(&a2, &a2o[0], sizeof(a2));
76     bi = a2.b[i];
77     printf("%d\n", bi);
78   }
79
80   printf("inrom 0 .. 9:\n");
81   for(i = 0; i < 10; i++) {
82     printf("%d\n", arr_init.inrom[i]);
83   }
84   return 0;
85 }