xref: /llvm-project/lldb/test/API/lang/cpp/multiple-inheritance/main.cpp (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1 struct CommonBase {
2   int m_base;
3   int virt_base_val;
4   int func_base_val;
virt_baseCommonBase5   virtual int virt_base() { return virt_base_val; }
virt_commonCommonBase6   virtual int virt_common() { return 555; }
func_baseCommonBase7   int func_base() { return func_base_val; }
func_commonCommonBase8   int func_common() { return 777; }
9 };
10 
11 struct Base1 : CommonBase {
12   int m1 = 22;
Base1Base113   Base1() {
14     // Give the base functions/members unique values.
15     virt_base_val = 111;
16     func_base_val = 112;
17     m_base = 11;
18   }
virt1Base119   virtual int virt1() { return 3; }
func1Base120   int func1() { return 4; }
21 };
22 
23 struct Base2 : CommonBase {
24   int m2 = 33;
Base2Base225   Base2() {
26     // Give the base functions/members unique values.
27     virt_base_val = 121;
28     func_base_val = 122;
29     m_base = 12;
30   }
virt2Base231   virtual int virt2() { return 5; }
func2Base232   int func2() { return 6; }
33 };
34 
35 struct FinalClass : Base1, Base2 {
36   int m_final = 44;
final_virtFinalClass37   virtual int final_virt() { return 7; }
final_funcFinalClass38   int final_func() { return 8; }
virt_commonFinalClass39   virtual int virt_common() { return 444; }
func_commonFinalClass40   int func_common() { return 888; }
41 };
42 
main()43 int main() {
44   FinalClass C;
45   // Call functions so they get emitted.
46   C.func1();
47   C.func2();
48   C.final_func();
49   C.func_common();
50   C.Base1::func_base();
51   return 0; // break here
52 }
53