blob: 5ef50c50da97019394dec3598cd875ae4f89a6cb [file] [log] [blame]
// Tests handling of inheritance when a base class isn't provided to SWIG
%module inherit_missing
%warnfilter(402);
%{
/* Define the class internally, but don't tell SWIG about it */
class Foo {
public:
virtual ~Foo() {}
virtual char *blah() {
return (char *) "Foo::blah";
}
};
%}
/* Forward declaration. Says that Foo is a class, but doesn't provide a definition */
class Foo;
%newobject new_Foo;
%delobject delete_Foo;
%inline %{
class Bar : public Foo {
public:
virtual ~Bar() {}
virtual char *blah() {
return (char *) "Bar::blah";
};
};
class Spam : public Bar {
public:
virtual char *blah() {
return (char *) "Spam::blah";
};
};
Foo *new_Foo() {
return new Foo();
}
void delete_Foo(Foo *f) {
delete f;
}
char *do_blah(Foo *f) {
return f->blah();
}
%}