From 9e6d35490a6542f9c97607f93c2ef8ca8e03cbcc Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Wed, 6 Jan 2016 20:12:03 +0000 Subject: Vendor import of lldb trunk r256945: https://llvm.org/svn/llvm-project/lldb/trunk@256945 --- .../lldbsuite/test/lang/cpp/virtual/main.cpp | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp (limited to 'packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp') diff --git a/packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp b/packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp new file mode 100644 index 000000000000..bed1422dcbdd --- /dev/null +++ b/packages/Python/lldbsuite/test/lang/cpp/virtual/main.cpp @@ -0,0 +1,113 @@ +#include +#include + +class A +{ +public: + A () : m_pad ('c') {} + + virtual ~A () {} + + virtual const char * a() + { + return __PRETTY_FUNCTION__; + } + + virtual const char * b() + { + return __PRETTY_FUNCTION__; + } + + virtual const char * c() + { + return __PRETTY_FUNCTION__; + } +protected: + char m_pad; +}; + +class AA +{ +public: + AA () : m_pad('A') {} + virtual ~AA () {} + + virtual const char * aa() + { + return __PRETTY_FUNCTION__; + } + +protected: + char m_pad; +}; + +class B : virtual public A, public AA +{ +public: + B () : m_pad ('c') {} + + virtual ~B () {} + + virtual const char * a() + { + return __PRETTY_FUNCTION__; + } + + virtual const char * b() + { + return __PRETTY_FUNCTION__; + } +protected: + char m_pad; +}; + +class C : public B, virtual public A +{ +public: + C () : m_pad ('c') {} + + virtual ~C () {} + + virtual const char * a() + { + return __PRETTY_FUNCTION__; + } +protected: + char m_pad; +}; + +int main (int argc, char const *argv[], char const *envp[]) +{ + A *a_as_A = new A(); + B *b_as_B = new B(); + A *b_as_A = b_as_B; + C *c_as_C = new C(); + A *c_as_A = c_as_C; + + printf ("a_as_A->a() = '%s'\n", a_as_A->a()); + printf ("a_as_A->b() = '%s'\n", a_as_A->b()); + printf ("a_as_A->c() = '%s'\n", a_as_A->c()); + printf ("b_as_A->a() = '%s'\n", b_as_A->a()); + printf ("b_as_A->b() = '%s'\n", b_as_A->b()); + printf ("b_as_A->c() = '%s'\n", b_as_A->c()); + printf ("b_as_B->aa() = '%s'\n", b_as_B->aa()); + printf ("c_as_A->a() = '%s'\n", c_as_A->a()); + printf ("c_as_A->b() = '%s'\n", c_as_A->b()); + printf ("c_as_A->c() = '%s'\n", c_as_A->c()); + printf ("c_as_C->aa() = '%s'\n", c_as_C->aa()); + puts("");// Set first breakpoint here. + // then evaluate: + // expression a_as_A->a() + // expression a_as_A->b() + // expression a_as_A->c() + // expression b_as_A->a() + // expression b_as_A->b() + // expression b_as_A->c() + // expression b_as_B->aa() + // expression c_as_A->a() + // expression c_as_A->b() + // expression c_as_A->c() + // expression c_as_C->aa() + + return 0; +} -- cgit v1.2.3