diff options
Diffstat (limited to 'gdb/testsuite/gdb.hp/virtfun-hp.cc')
-rw-r--r-- | gdb/testsuite/gdb.hp/virtfun-hp.cc | 192 |
1 files changed, 0 insertions, 192 deletions
diff --git a/gdb/testsuite/gdb.hp/virtfun-hp.cc b/gdb/testsuite/gdb.hp/virtfun-hp.cc deleted file mode 100644 index 6552a62..0000000 --- a/gdb/testsuite/gdb.hp/virtfun-hp.cc +++ /dev/null @@ -1,192 +0,0 @@ -// Pls try the following program on virtual functions and try to do print on -// most of the code in main(). Almost none of them works ! - -// -// The inheritance structure is: -// -// V : VA VB -// A : (V) -// B : A -// D : AD (V) -// C : (V) -// E : B (V) D C -// - -class VA -{ -public: - int va; -}; - -class VB -{ -public: - int vb; - int fvb(); - virtual vvb(); -}; - -class V : public VA, public VB -{ -public: - int f(); - virtual vv(); - int w; -}; - -class A : virtual public V -{ -public: - virtual int f(); -private: - int a; -}; - -class B : public A -{ -public: - int f(); -private: - int b; -}; - -class C : public virtual V -{ -public: - int c; -}; - -class AD -{ -public: - virtual int vg() = 0; -}; - -class D : public AD, virtual public V -{ -public: - static void s(); - virtual int vg(); - virtual int vd(); - int fd(); - int d; -}; - -class E : public B, virtual public V, public D, public C -{ -public: - int f(); - int vg(); - int vv(); - int e; -}; - -D dd; -D* ppd = ⅆ -AD* pAd = ⅆ - -A a; -B b; -C c; -D d; -E e; -V v; -VB vb; - - -A* pAa = &a; -A* pAe = &e; - -B* pBe = &e; - -D* pDd = &d; -D* pDe = &e; - -V* pVa = &a; -V* pVv = &v; -V* pVe = &e; -V* pVd = &d; - -AD* pADe = &e; - -E* pEe = &e; - -VB* pVB = &vb; - -void init() -{ - a.vb = 1; - b.vb = 2; - c.vb = 3; - d.vb = 4; - e.vb = 5; - v.vb = 6; - vb.vb = 7; - - d.d = 1; - e.d = 2; -} - -extern "C" printf(const char *, ...); - -int all_count = 0; -int failed_count = 0; - -#define TEST(EXPR, EXPECTED) \ - ret = EXPR; \ - if (ret != EXPECTED) {\ - printf("Failed %s is %d, should be %d!\n", #EXPR, ret, EXPECTED); \ - failed_count++; } \ - all_count++; - -int ret; - -void test_calls() -{ - TEST(pAe->f(), 20); - TEST(pAa->f(), 1); - - TEST(pDe->vg(), 202); - TEST(pADe->vg(), 202); - TEST(pDd->vg(), 101); - - TEST(pEe->vvb(), 411); - - TEST(pVB->vvb(), 407); - - TEST(pBe->vvb(), 411); - TEST(pDe->vvb(), 411); - - TEST(pEe->vd(), 282); - TEST(pEe->fvb(), 311); - - TEST(pEe->D::vg(), 102); - printf("Did %d tests, of which %d failed.\n", all_count, failed_count); -} - -int main() -{ - - init(); - - e.w = 7; - e.vb = 11; - - test_calls(); - return 0; - -} - -int A::f() {return 1;} -int B::f() {return 2;} -void D::s() {} -int E::f() {return 20;} -int D::vg() {return 100+d;} -int E::vg() {return 200+d;} -int V::f() {return 600+w;} -int V::vv() {return 400+w;} -int E::vv() {return 450+w;} -int D::fd() {return 250+d;} -int D::vd() {return 280+d;} -int VB::fvb() {return 300+vb;} -int VB::vvb() {return 400+vb;} |