xref: /llvm-project/lldb/test/API/lang/cpp/breakpoint-commands/nested.cpp (revision 99451b4453688a94c6014cac233d371ab4cc342d)
1*99451b44SJordan Rupprecht #include <stdio.h>
2*99451b44SJordan Rupprecht 
3*99451b44SJordan Rupprecht namespace Foo
4*99451b44SJordan Rupprecht {
5*99451b44SJordan Rupprecht   namespace Bar
6*99451b44SJordan Rupprecht   {
7*99451b44SJordan Rupprecht     class Baz
8*99451b44SJordan Rupprecht     {
9*99451b44SJordan Rupprecht     public:
Baz(int value)10*99451b44SJordan Rupprecht       Baz (int value):m_value(value) {}
Function()11*99451b44SJordan Rupprecht       int Function ()
12*99451b44SJordan Rupprecht       {
13*99451b44SJordan Rupprecht         printf ("%s returning: %d.\n", __FUNCTION__, m_value);
14*99451b44SJordan Rupprecht         return m_value + 1;
15*99451b44SJordan Rupprecht       }
16*99451b44SJordan Rupprecht     private:
17*99451b44SJordan Rupprecht       int m_value;
18*99451b44SJordan Rupprecht     };
19*99451b44SJordan Rupprecht 
20*99451b44SJordan Rupprecht     class Baz2
21*99451b44SJordan Rupprecht     {
22*99451b44SJordan Rupprecht     public:
Baz2(int value)23*99451b44SJordan Rupprecht       Baz2 (int value):m_value(value) {}
Function()24*99451b44SJordan Rupprecht       int Function ()
25*99451b44SJordan Rupprecht       {
26*99451b44SJordan Rupprecht         printf ("%s returning: %d.\n", __FUNCTION__, m_value);
27*99451b44SJordan Rupprecht         return m_value + 2;
28*99451b44SJordan Rupprecht       }
29*99451b44SJordan Rupprecht     private:
30*99451b44SJordan Rupprecht       int m_value;
31*99451b44SJordan Rupprecht     };
32*99451b44SJordan Rupprecht 
33*99451b44SJordan Rupprecht     static int bar_value = 20;
Function()34*99451b44SJordan Rupprecht     int Function ()
35*99451b44SJordan Rupprecht     {
36*99451b44SJordan Rupprecht       printf ("%s returning: %d.\n", __FUNCTION__, bar_value);
37*99451b44SJordan Rupprecht       return bar_value + 3;
38*99451b44SJordan Rupprecht     }
39*99451b44SJordan Rupprecht   }
40*99451b44SJordan Rupprecht }
41*99451b44SJordan Rupprecht 
42*99451b44SJordan Rupprecht class Baz
43*99451b44SJordan Rupprecht {
44*99451b44SJordan Rupprecht public:
Baz(int value)45*99451b44SJordan Rupprecht     Baz (int value):m_value(value) {}
Function()46*99451b44SJordan Rupprecht     int Function ()
47*99451b44SJordan Rupprecht     {
48*99451b44SJordan Rupprecht         printf ("%s returning: %d.\n", __FUNCTION__, m_value);
49*99451b44SJordan Rupprecht         return m_value + 4;
50*99451b44SJordan Rupprecht     }
51*99451b44SJordan Rupprecht private:
52*99451b44SJordan Rupprecht     int m_value;
53*99451b44SJordan Rupprecht };
54*99451b44SJordan Rupprecht 
55*99451b44SJordan Rupprecht int
Function()56*99451b44SJordan Rupprecht Function ()
57*99451b44SJordan Rupprecht {
58*99451b44SJordan Rupprecht     printf ("I am a global function, I return 333.\n");
59*99451b44SJordan Rupprecht     return 333;
60*99451b44SJordan Rupprecht }
61*99451b44SJordan Rupprecht 
main()62*99451b44SJordan Rupprecht int main ()
63*99451b44SJordan Rupprecht {
64*99451b44SJordan Rupprecht   Foo::Bar::Baz mine(200);
65*99451b44SJordan Rupprecht   Foo::Bar::Baz2 mine2(300);
66*99451b44SJordan Rupprecht   ::Baz bare_baz (500);
67*99451b44SJordan Rupprecht 
68*99451b44SJordan Rupprecht   printf ("Yup, got %d from Baz.\n", mine.Function());
69*99451b44SJordan Rupprecht   printf ("Yup, got %d from Baz.\n", mine2.Function());
70*99451b44SJordan Rupprecht   printf ("Yup, got %d from Baz.\n", bare_baz.Function());
71*99451b44SJordan Rupprecht   printf ("And  got %d from Bar.\n", Foo::Bar::Function());
72*99451b44SJordan Rupprecht   printf ("And  got %d from ::.\n", ::Function());
73*99451b44SJordan Rupprecht 
74*99451b44SJordan Rupprecht   return 0;
75*99451b44SJordan Rupprecht 
76*99451b44SJordan Rupprecht }
77