]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/testsuite/gdb.cp/member-ptr.cc
2004-01-12 Michael Chastain <mec.gnu@mindspring.com>
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.cp / member-ptr.cc
CommitLineData
56c97c6e
MC
1/* This testcase is part of GDB, the GNU debugger.
2
3 Copyright 1998, 1999 Free Software Foundation, Inc.
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 Please email any bugs, comments, and/or additions to this file to:
20 bug-gdb@prep.ai.mit.edu */
21
c906108c
SS
22extern "C" {
23#include <stdio.h>
24}
25
26
27class A {
28public:
29 A();
30 int foo (int x);
31 int bar (int y);
32 virtual int baz (int z);
33 char c;
34 int j;
35 int jj;
36 static int s;
37};
38
39class B {
40public:
41 static int s;
42};
43
44int A::s = 10;
45int B::s = 20;
46
47A::A()
48{
49 c = 'x';
50 j = 5;
51}
52
53int A::foo (int dummy)
54{
55 j += 3;
56 return j + dummy;
57}
58
59int A::bar (int dummy)
60{
61 int r;
62 j += 13;
63 r = this->foo(15);
64 return r + j + 2 * dummy;
65}
66
67int A::baz (int dummy)
68{
69 int r;
70 j += 15;
71 r = this->foo(15);
72 return r + j + 12 * dummy;
73}
74
75int fum (int dummy)
76{
77 return 2 + 13 * dummy;
78}
79
80typedef int (A::*PMF)(int);
81
82typedef int A::*PMI;
83
84int main ()
85{
86 A a;
87 A * a_p;
88 PMF pmf;
89
90 PMF * pmf_p;
91 PMI pmi;
92
93 a.j = 121;
94 a.jj = 1331;
95
96 int k;
97
98 a_p = &a;
99
100 pmi = &A::j;
101 pmf = &A::bar;
102 pmf_p = &pmf;
103
104 pmi = NULL;
105
106 k = (a.*pmf)(3);
107
108 pmi = &A::jj;
109 pmf = &A::foo;
110 pmf_p = &pmf;
111
112 k = (a.*pmf)(4);
113
114 k = (a.**pmf_p)(5);
115
116 k = a.*pmi;
117
118
119 k = a.bar(2);
120
121 k += fum (4);
122
123 B b;
124
125 k += b.s;
126
127}