xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.cp/method.cc (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1*b725ae77Skettenis // Class funk has a constructor and an ordinary method
2*b725ae77Skettenis // Test for CHFts23426
3*b725ae77Skettenis 
4*b725ae77Skettenis class funk
5*b725ae77Skettenis {
6*b725ae77Skettenis public:
7*b725ae77Skettenis   funk();
8*b725ae77Skettenis   void getFunky(int a, int b);
9*b725ae77Skettenis   int data_;
10*b725ae77Skettenis };
11*b725ae77Skettenis 
funk()12*b725ae77Skettenis funk::funk()
13*b725ae77Skettenis   : data_(33)
14*b725ae77Skettenis {
15*b725ae77Skettenis }
16*b725ae77Skettenis 
getFunky(int a,int b)17*b725ae77Skettenis void funk::getFunky(int a, int b)
18*b725ae77Skettenis {
19*b725ae77Skettenis   int res;
20*b725ae77Skettenis   res = a + b - data_;
21*b725ae77Skettenis   data_ = res;
22*b725ae77Skettenis }
23*b725ae77Skettenis 
24*b725ae77Skettenis // Class A has const and volatile methods
25*b725ae77Skettenis 
26*b725ae77Skettenis class A {
27*b725ae77Skettenis public:
28*b725ae77Skettenis   int x;
29*b725ae77Skettenis   int y;
30*b725ae77Skettenis   int foo (int arg);
31*b725ae77Skettenis   int bar (int arg) const;
32*b725ae77Skettenis   int baz (int arg, char c) volatile;
33*b725ae77Skettenis   int qux (int arg, float f) const volatile;
34*b725ae77Skettenis };
35*b725ae77Skettenis 
foo(int arg)36*b725ae77Skettenis int A::foo (int arg)
37*b725ae77Skettenis {
38*b725ae77Skettenis   x += arg;
39*b725ae77Skettenis   return arg *2;
40*b725ae77Skettenis }
41*b725ae77Skettenis 
bar(int arg) const42*b725ae77Skettenis int A::bar (int arg) const
43*b725ae77Skettenis {
44*b725ae77Skettenis   return arg + 2 * x;
45*b725ae77Skettenis }
46*b725ae77Skettenis 
baz(int arg,char c)47*b725ae77Skettenis int A::baz (int arg, char c) volatile
48*b725ae77Skettenis {
49*b725ae77Skettenis   return arg - 2 * x + c;
50*b725ae77Skettenis }
51*b725ae77Skettenis 
qux(int arg,float f) const52*b725ae77Skettenis int A::qux (int arg, float f) const volatile
53*b725ae77Skettenis {
54*b725ae77Skettenis   if (f > 0)
55*b725ae77Skettenis     return 2 * arg - x;
56*b725ae77Skettenis   else
57*b725ae77Skettenis     return 2 * arg + x;
58*b725ae77Skettenis }
59*b725ae77Skettenis 
60*b725ae77Skettenis 
main()61*b725ae77Skettenis int main()
62*b725ae77Skettenis {
63*b725ae77Skettenis   A a;
64*b725ae77Skettenis   int k;
65*b725ae77Skettenis 
66*b725ae77Skettenis   k = 10;
67*b725ae77Skettenis   a.x = k * 2;
68*b725ae77Skettenis 
69*b725ae77Skettenis   k = a.foo(13);
70*b725ae77Skettenis 
71*b725ae77Skettenis   k += a.bar(15);
72*b725ae77Skettenis 
73*b725ae77Skettenis   // Test for CHFts23426 follows
74*b725ae77Skettenis   funk f;
75*b725ae77Skettenis   f.getFunky(1, 2);
76*b725ae77Skettenis   return 0;
77*b725ae77Skettenis }
78*b725ae77Skettenis 
79*b725ae77Skettenis 
80*b725ae77Skettenis 
81