]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/testsuite/gdb.cp/rtti1.cc
Update copyright year range in header of all files managed by GDB
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.cp / rtti1.cc
1 /* Code to go along with tests in rtti.exp.
2
3 Copyright 2003-2023 Free Software Foundation, Inc.
4
5 Contributed by David Carlton <carlton@bactrian.org> and by Kealia,
6 Inc.
7
8 This file is part of GDB.
9
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 3 of the License, or
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/>. */
22
23 #include "rtti.h"
24
25 namespace n1 {
26
27 class C1;
28
29 class Base1 {
30 public:
31 virtual ~Base1() { }
32 };
33
34
35 class C1: public Base1 {
36 public:
37 };
38
39 class D1 : public C1{
40 public:
41 D1(C1 *, C1 *);
42
43 C1* expr_1_;
44 C1* expr_2_;
45 };
46
47 D1::D1(C1 *expr_1, C1 *expr_2)
48 : expr_1_(expr_1), expr_2_(expr_2) { }
49
50 C1 *create1() {
51 return new D1(0, 0);
52 }
53
54 } // n1
55
56 // NOTE: carlton/2004-01-23: This call exists only to convince GCC to
57 // keep around a reference to 'obj' in n2::func - GCC 3.4 had been
58 // optimizing it away.
59 void refer_to (n2::C2 *obj)
60 {
61 // Do nothing.
62 }
63
64 void refer_to (n2::n3::C3 *obj)
65 {
66 // Do nothing.
67 }
68
69 namespace n2
70 {
71 void func ()
72 {
73 C2 *obj = create2 ();
74
75 refer_to (obj); // func-constructs-done
76
77 return;
78 }
79
80 namespace n3
81 {
82 void func3 ()
83 {
84 C3 *obj3 = create3 ();
85
86 refer_to (obj3); // func3-constructs-done
87
88 return;
89 }
90 }
91 }
92
93 int main()
94 {
95 using namespace n1;
96 using namespace n2;
97
98 C1 *e1 = create1();
99 C2 *e2 = create2();
100
101 n2::func(); // main-constructs-done
102 n2::n3::func3();
103
104 return 0;
105 }