| // 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(); |
| } |
| %} |