PIC Port - fixed pointer/array accesses. Stream line comparisons. Started function...
[fw/sdcc] / src / regression / pointer1.c
1 //#include "p16c84.h"
2 // Pointer tests
3
4 unsigned char success = 0;
5 unsigned char failures = 0;
6 unsigned char dummy = 0;
7
8 bit bit0 = 0;
9 unsigned int aint0 = 0;
10 unsigned int aint1 = 0;
11 unsigned char achar0 = 0;
12 unsigned char achar1 = 0;
13 unsigned char *acharP = 0;
14
15 char buff[10];
16
17 void
18 done ()
19 {
20
21   dummy++;
22
23 }
24
25 void
26 f1 (unsigned char *ucP)
27 {
28
29   if (ucP == 0)
30     {
31       failures++;
32       return;
33     }
34
35   if (*ucP)
36     failures++;
37 }
38
39 void
40 f2 (unsigned int *uiP)
41 {
42
43   if (uiP == 0)
44     {
45       failures++;
46       return;
47     }
48
49   if (*uiP)
50     failures++;
51
52 }
53
54 unsigned char *
55 f3 (void)
56 {
57
58   return &achar0;
59 }
60
61 void f4(unsigned char *ucP, unsigned char uc)
62 {
63
64   if(!ucP) {
65     failures++;
66     return;
67   }
68
69   if(*ucP != uc)
70     failures++;
71
72 }
73
74 void init_array(char start_value)
75 {
76   unsigned char c;
77
78   for(c=0; c<sizeof(buff); c++)
79     buff[c] = start_value++;
80
81 }
82
83 void check_array(char base_value)
84 {
85   unsigned char c;
86
87   for(c=0; c<sizeof(buff); c++)
88     if(buff[c] != (base_value+c))
89       failures++;
90
91 }
92
93 void index_by_pointer(unsigned char *index, unsigned char expected_value)
94 {
95
96   if(buff[*index] != expected_value)
97     failures++;
98
99 }
100
101 void
102 main (void)
103 {
104
105   init_array(4);
106   check_array(4);
107
108   if(buff[achar0 + 7] != 4+7)
109     failures++;
110
111   //  dummy = buff[5];
112   dummy = buff[achar0];
113
114   if(dummy != 4)
115     failures++;
116
117   if(dummy != (buff[achar0+1] -1)) 
118     failures++;
119
120   index_by_pointer(&dummy, 8);
121
122   f1 (&achar0);
123   f2 (&aint0);
124
125   acharP = f3 ();
126   if ((acharP == 0) || (*acharP))
127     failures++;
128
129   achar0 = 5;
130   f4(&achar0, achar0);
131
132   success = failures;
133   done ();
134 }