detecting polymorphic virtual methods properly
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@5511 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
634b973f31
commit
833b2f7f0a
6 changed files with 206 additions and 3 deletions
65
Examples/test-suite/director_detect.i
Normal file
65
Examples/test-suite/director_detect.i
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
%module(directors="1") director_detect
|
||||
|
||||
%{
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
%}
|
||||
|
||||
%include "std_string.i"
|
||||
|
||||
%feature("director") Bar;
|
||||
|
||||
%newobject Foo::cloner();
|
||||
%newobject Bar::cloner();
|
||||
|
||||
|
||||
%inline {
|
||||
namespace foo { typedef int Int; }
|
||||
|
||||
struct A
|
||||
{
|
||||
};
|
||||
|
||||
typedef A B;
|
||||
|
||||
struct Foo {
|
||||
virtual ~Foo() {}
|
||||
virtual Foo* cloner() = 0;
|
||||
virtual int get_value() = 0;
|
||||
virtual A* get_class() = 0;
|
||||
|
||||
virtual void just_do_it() = 0;
|
||||
};
|
||||
|
||||
class Bar : public Foo
|
||||
{
|
||||
public:
|
||||
Foo* base()
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
Bar* cloner()
|
||||
{
|
||||
return new Bar();
|
||||
}
|
||||
|
||||
|
||||
foo::Int get_value()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
B* get_class()
|
||||
{
|
||||
return new B();
|
||||
}
|
||||
|
||||
void just_do_it()
|
||||
{
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue