| // This first batch of classes are for PR 11226. | |
| namespace mc { | |
| class Base { | |
| protected: | |
| int x; | |
| public: | |
| Base(void) { x = 2; }; | |
| }; | |
| } | |
| namespace ph { | |
| class Middle: public virtual mc::Base { | |
| protected: | |
| int y; | |
| public: | |
| Middle(void): mc::Base() { y = 3; }; | |
| int get_y(void) | |
| { | |
| return y; // breakpoint 1 | |
| }; | |
| }; | |
| class Derived: public virtual Middle { | |
| protected: | |
| int z; | |
| public: | |
| Derived(void): Middle() { z = 4; }; | |
| int get_z(void) | |
| { | |
| return z; // breakpoint 2 | |
| }; | |
| }; | |
| } | |
| // These classes are for PR 9629. | |
| struct A {}; | |
| struct B : virtual A {}; | |
| struct C {int v; C() {v=11;};}; | |
| struct D:virtual C{}; | |
| class E:B,D{}; | |
| // These classes are for another regression test, from | |
| // https://bugzilla.redhat.com/show_bug.cgi?id=560741 | |
| class RHA | |
| { | |
| public: | |
| RHA() : mA(0xaaaaaaaa) {} | |
| virtual void a() = 0; | |
| int mA; | |
| }; | |
| class RHB | |
| { | |
| public: | |
| RHB() : mB(0xbbbbbbbb) {} | |
| virtual void b() = 0; | |
| int mB; | |
| }; | |
| class RHC : public RHA, | |
| public RHB | |
| { | |
| public: | |
| RHC() : RHA(), RHB() {} | |
| virtual void a() {} | |
| virtual void b() {} | |
| }; | |
| class RTTI_base | |
| { | |
| public: | |
| virtual ~RTTI_base() {} | |
| }; | |
| class RTTI_data | |
| { | |
| public: | |
| RTTI_base base; | |
| int data; | |
| RTTI_data() : data(1) {} | |
| }; | |
| /* These classes are for testing pointer adjustment when printing a | |
| pointer into a virtual base, with print object on. */ | |
| struct VirtualBase { | |
| int x; | |
| virtual ~VirtualBase() {} | |
| }; | |
| struct VirtualMiddleA : public virtual VirtualBase { | |
| /* Make sure the vbase offset of Virtual::VirtualBaseB is larger | |
| than what fits in one byte. */ | |
| int y[300]; | |
| virtual ~VirtualMiddleA() {} | |
| }; | |
| struct VirtualMiddleB : public virtual VirtualBase { | |
| int y; | |
| virtual ~VirtualMiddleB() {} | |
| }; | |
| struct Virtual : public virtual VirtualMiddleA, public virtual VirtualMiddleB { | |
| int z; | |
| virtual ~Virtual() {} | |
| }; | |
| Virtual virtual_o; | |
| VirtualMiddleB *virtual_middle_b = &virtual_o; | |
| int main() { | |
| ph::Derived tst; | |
| tst.get_y(); | |
| tst.get_z(); | |
| E *e = new E; | |
| RHB *b = new RHC(); | |
| RTTI_data rtti_data; | |
| return 0; // breakpoint 3 | |
| } |