mirror of https://github.com/swig/swig
52 lines
812 B
OpenEdge ABL
52 lines
812 B
OpenEdge ABL
// 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();
|
|
}
|
|
%}
|