gdb/
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.cp / koenig.cc
CommitLineData
7322dca9
SW
1namespace A
2{
3 class C
4 {
5 public:
6 static const int x = 11;
7 };
8
9 int
10 first (C c)
11 {
12 return 11;
13 }
14
15 int
16 first (int a, C c)
17 {
18 return 22;
19 }
20
21 int
22 second (int a, int b, C cc, int c, int d)
23 {
24 return 33;
25 }
26
27}
28
29struct B
30{
31 A::C c;
32};
33
34//------------
35
36namespace E
37{
38 class O{};
39 int foo (O o){return 1; }
40 int foo (O o, O o2){return 2; }
41 int foo (O o, O o2, int i){return 3; }
42}
43
44namespace F
45{
46 class O{};
47 int foo ( O fo, ::E::O eo){ return 4;}
48 int foo (int i, O fo, ::E::O eo){ return 5;}
49}
50
51namespace G
52{
53 class O{};
54 int foo (O go, ::F::O fo, ::E::O eo){ return 6; }
55}
56
57//------------
58
59namespace H
60{
61 class O{};
62 int foo (O){ return 7;}
63}
64
65namespace I
66{
67 class O: public H::O {};
68 class X: H::O{};
69}
70
71//------------
72
73namespace J
74{
75 union U{};
76 struct S{};
77 enum E{};
78
79 class A{
80 public:
81 class B{};
82 };
83
84 class C{};
85
86 int foo (U){ return 8;}
87 int foo (S){ return 9;}
88 int foo (E){ return 10;}
89 int foo (A::B){ return 11;}
90 int foo (A*){ return 12;}
91 int foo (A**){ return 13;}
92 int foo (C[]){ return 14;}
93
94}
95//------------
96
97namespace K{
98 class O{};
99
100 int foo(O, int){
101 return 15;
102 }
103
104 int bar(O, int){
105 return 15;
106 }
107}
108
109int foo(K::O, float){
110 return 16;
111}
112
113int bar(K::O, int){
114 return 16;
115}
116//------------
117
118namespace L {
119 namespace A{
120 namespace B{
121 class O {};
122
123 int foo (O){
124 return 17;
125 }
126
127 }
128 }
129}
130
131//------------
132
133namespace M {
134 class A{
135 public:
136 int foo(char) {
137 return 18;
138 }
139 };
140
141 int foo(A,char){
142 return 19;
143 }
144
145 int foo(A *,char){
146 return 23;
147 }
148
149 int bar(char){
150 return 21;
151 }
152
153 namespace N {
154 int foo(::M::A,int){
155 return 20;
156 }
157
158 int bar(int){
159 return 22;
160 }
161 }
162}
163//------------
164
165namespace O {
166 class A{};
167
168 int foo(A,int){
169 return 23;
170 }
171
172}
173
174typedef O::A TOA;
175typedef TOA TTOA;
176
177//------------
4c3376c8 178
7d3fe98e
SW
179static union {
180 int a;
181 char b;
182}p_union;
183
184//------------
185
4c3376c8
SW
186namespace P {
187 class Q{
188 public:
189 int operator== (int)
190 {
191 return 24;
192 }
193
194 int operator== (float)
195 {
196 return 25;
197 }
198
199 int operator+ (float)
200 {
201 return 26;
202 }
203
204 };
205
206 int operator!= (Q, int)
207 {
208 return 27;
209 }
210
211 int operator!= (Q, double)
212 {
213 return 28;
214 }
215
216 int operator+ (Q, int)
217 {
218 return 29;
219 }
220
221 int operator++ (Q)
222 {
223 return 30;
224 }
225}
226
227//------------
228
450ca57c
SW
229class R {
230 public:
231 int rfoo(){ return 31; }
232 int rbar(){
233 return 1; // marker1
234 }
235};
236
237//------------
238
7322dca9
SW
239int
240main ()
241{
242 A::C c;
243 B b;
244
245 A::first (c);
246 first (0, c);
247 second (0, 0, c, 0, 0);
248 A::first (b.c);
249
250 E::O eo;
251 F::O fo;
252 G::O go;
253
254 foo (eo);
255 foo (eo, eo);
256 foo (eo, eo, 1);
257 foo (fo, eo);
258 foo (1 ,fo, eo);
259 foo (go, fo, eo);
260
261 I::O io;
262 I::X ix;
263
264 foo (io);
265//foo (ix);
266
267 J::U ju;
268 J::S js;
269 J::E je;
270 J::A::B jab;
271 J::A *jap;
272 J::A **japp;
273 J::C jca[3];
274
275 foo (ju);
276 foo (js);
277 foo (je);
278 foo (jab);
279 foo (jap);
280 foo (japp);
281 foo (jca);
282
283 K::O ko;
284 foo (ko, 1);
285 foo (ko, 1.0f);
286 //bar(ko,1);
287
288 L::A::B::O labo;
289 foo (labo);
290
291 M::A ma;
292 foo(ma,'a');
293 ma.foo('a');
294 M::N::foo(ma,'a');
295
296 M::bar('a');
297 M::N::bar('a');
298
299 TTOA ttoa;
300 foo (ttoa, 'a');
301
4c3376c8
SW
302 P::Q q;
303 q == 5;
304 q == 5.0f;
305 q != 5;
306 q != 5.0f;
307 q + 5;
308 q + 5.0f;
309
310 ++q;
311
450ca57c
SW
312 R r;
313 r.rbar();
314 r.rfoo();
315
7322dca9
SW
316 return first (0, c) + foo (eo) +
317 foo (eo, eo) + foo (eo, eo, 1) +
318 foo (fo, eo) + foo (1 ,fo, eo) +
319 foo (go, fo, eo);
320}
This page took 0.185686 seconds and 4 git commands to generate.