aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.mike/pmf2.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/pmf2.C55
1 files changed, 1 insertions, 54 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C b/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
index 2f1bec51e95..b3b753c1a91 100644
--- a/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
+++ b/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
@@ -1,54 +1 @@
-extern "C" int printf(const char *, ...);
-
-class A_table {
- int c;
-public:
- A_table() { c = 3;}
- virtual void func2(int &item) { printf("func2(%d,) c=%d\n",item,c);}
-};
-
-class B_table : private A_table {
- typedef void (B_table::* B_ti_fn) (int &item);
-public:
- B_table() { j = 0x4321;}
- virtual void call_fn_fn1(int &item, void *pfn1);
- void func1(int &item) { printf("func1(%d)\n",item);}
- virtual void func2(int &item) { printf("func2(%d) j=%d\n",item,j);}
- int j;
-};
-
-class foo : public A_table {
-public:
- int i;
- virtual ~foo();
- virtual void func2(int &item) { printf("func2(%d) i=%d\n",item,i);}
-};
-foo::~foo() { i = 0;}
-
-class bar :public foo,public B_table {
-public:
- int w;
- virtual ~bar();
- virtual void func2(int &item) { printf("func2(%d) w=%d\n",item,w);}
-};
-bar::~bar() { w = 0;}
-
-void B_table::call_fn_fn1(int &item, void *pfn1) {
- (this->*(*(B_ti_fn*)pfn1))(item);
-}
-
-B_table b;
-bar jar;
-
-main() {
- printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b);
- B_table::B_ti_fn z = &B_table::func1;
- int j = 1;
- jar.call_fn_fn1(j,(void *)&z);
- j++;
- z = &B_table::func2;
- b.call_fn_fn1(j,(void *)&z);
- j++;
- jar.call_fn_fn1(j,(void *)&z);
- return 0;
-}
+int main() {