Handle void * conversions in FreeBSD/x86 native code to fix C++ build.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.cp / namespace.cc
1 namespace AAA {
2 char c;
3 int i;
4 int A_xyzq (int);
5 char xyzq (char);
6 class inA {
7 public:
8 int xx;
9 int fum (int);
10 };
11 enum SomeEnum {
12 ALPHA,
13 BETA,
14 DELTA
15 };
16 };
17
18 int AAA::inA::fum (int i)
19 {
20 return 10 + i;
21 }
22
23 namespace BBB {
24 char c;
25 int i;
26 int B_xyzq (int);
27 char xyzq (char);
28
29 namespace CCC {
30 char xyzq (char);
31 };
32
33 class Class {
34 public:
35 char xyzq (char);
36 int dummy;
37 };
38 };
39
40 int AAA::A_xyzq (int x)
41 {
42 return 2 * x;
43 }
44
45 char AAA::xyzq (char c)
46 {
47 return 'a';
48 }
49
50
51 int BBB::B_xyzq (int x)
52 {
53 return 3 * x;
54 }
55
56 char BBB::xyzq (char c)
57 {
58 return 'b';
59 }
60
61 char BBB::CCC::xyzq (char c)
62 {
63 return 'z';
64 }
65
66 char BBB::Class::xyzq (char c)
67 {
68 return 'o';
69 }
70
71 void marker1(void)
72 {
73 return;
74 }
75
76 namespace
77 {
78 int X = 9;
79
80 namespace G
81 {
82 int Xg = 10;
83
84 namespace
85 {
86 int XgX = 11;
87 }
88 }
89 }
90
91 namespace C
92 {
93 int c = 1;
94 int shadow = 12;
95
96 class CClass {
97 public:
98 int x;
99 class NestedClass {
100 public:
101 int y;
102 };
103 };
104
105 void ensureRefs () {
106 // NOTE (2004-04-23, carlton): This function is here only to make
107 // sure that GCC 3.4 outputs debug info for these classes.
108 static CClass *c = new CClass();
109 static CClass::NestedClass *n = new CClass::NestedClass();
110 }
111
112 namespace
113 {
114 int cX = 6;
115
116 namespace F
117 {
118 int cXf = 7;
119
120 namespace
121 {
122 int cXfX = 8;
123 }
124 }
125 }
126
127 namespace C
128 {
129 int cc = 2;
130 }
131
132 namespace E
133 {
134 int ce = 4;
135 }
136
137 namespace D
138 {
139 int cd = 3;
140 int shadow = 13;
141
142 namespace E
143 {
144 int cde = 5;
145 }
146
147 void marker2 (void)
148 {
149 // NOTE: carlton/2003-04-23: I'm listing the expressions that I
150 // plan to have GDB try to print out, just to make sure that the
151 // compiler and I agree which ones should be legal! It's easy
152 // to screw up when testing the boundaries of namespace stuff.
153 c;
154 //cc;
155 C::cc;
156 cd;
157 //C::D::cd;
158 E::cde;
159 shadow;
160 //E::ce;
161 cX;
162 F::cXf;
163 F::cXfX;
164 X;
165 G::Xg;
166 //cXOtherFile;
167 //XOtherFile;
168 G::XgX;
169
170 return;
171 }
172
173 }
174 }
175
176 extern int ensureOtherRefs ();
177
178 int main ()
179 {
180 using AAA::inA;
181 char c1;
182 AAA::SomeEnum var = AAA::ALPHA;
183
184 using namespace BBB;
185
186 c1 = xyzq ('x');
187 c1 = AAA::xyzq ('x');
188 c1 = BBB::CCC::xyzq ('m');
189
190 inA ina;
191
192 ina.xx = 33;
193
194 int y;
195
196 y = AAA::A_xyzq (33);
197 y += B_xyzq (44);
198
199 BBB::Class cl;
200
201 c1 = cl.xyzq('e');
202
203 marker1();
204
205 C::D::marker2 ();
206
207 C::ensureRefs ();
208 ensureOtherRefs ();
209 }
This page took 0.076038 seconds and 4 git commands to generate.