]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.compile/compile-cplus-method.cc
Update copyright year range in header of all files managed by GDB
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.compile / compile-cplus-method.cc
CommitLineData
1d506c26 1/* Copyright 2015-2024 Free Software Foundation, Inc.
078a0207
KS
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 3 of the License, or
6 (at your option) any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with this program. If not, see <http://www.gnu.org/licenses/>. */
15
16class A;
17static int get_value (const A* a);
18
19class A
20{
21public:
22 typedef int ATYPE;
23
24 A () : a_ (21) {}
25 ATYPE get_var () { return a_; }
26 ATYPE get_var (unsigned long a) { return 100; }
27 ATYPE get_var (ATYPE a) { return 101; }
28 ATYPE get_var (float a) { return 102; }
29 ATYPE get_var (void *a) { return 103;}
30 ATYPE get_var (A& lr) { return 104; }
31 ATYPE get_var (A const& lr) { return 105; }
32
33 ATYPE get_var1 (int n) { return a_ << n; }
34 ATYPE get_var2 (int incr, unsigned n) { return (a_ + incr) << n; }
35
36 static ATYPE get_1 (int a) { return a + 1; }
37 static ATYPE get_2 (int a, int b) { return a + b + 2; }
38
39 friend ATYPE get_value (const A*);
40
41private:
42 ATYPE a_;
43};
44
45static A::ATYPE
46get_value (A::ATYPE a)
47{
48 return a;
49}
50
51static A::ATYPE
52get_value (const A* a)
53{
54 return a->a_;
55}
56
57static A::ATYPE
58get_value ()
59{
60 return 200;
61}
62
63typedef int (A::*PMF) (A::ATYPE);
64
65int
66main ()
67{
68 A *a = new A ();
69 int var = 1234;
70 float f = 1.23;
71 unsigned long ul = 0xdeadbeef;
72 A const* ac = a;
73
74 PMF pmf = &A::get_var;
75 PMF *pmf_p = &pmf;
76
77 var -= a->get_var (); // break here
78 var -= a->get_var (1);
79 var -= a->get_var (ul);
80 var -= a->get_var (f);
81 var -= a->get_var (a);
82 var -= a->get_var (*a);
83 var -= a->get_var (*ac);
84 var -= a->get_var1 (1);
85 var -= a->get_var2 (1, 2);
86 var += (a->*pmf) (1);
87 var -= (a->**pmf_p) (1);
88
89 return var - A::get_1 (1) + A::get_2 (1, 2) + get_value ()
90 + get_value (get_value ()) + get_value (a);
91}