| %module(directors="1") director_smartptr |
| |
| #ifdef SWIGJAVA |
| SWIG_JAVABODY_PROXY(public, public, SWIGTYPE) |
| SWIG_JAVABODY_TYPEWRAPPER(public, public, public, SWIGTYPE) |
| #endif |
| |
| %{ |
| #include <boost/shared_ptr.hpp> |
| #include <string> |
| |
| class FooBar { |
| public: |
| FooBar() {} |
| FooBar(const FooBar&) {} |
| virtual ~FooBar() {} |
| |
| std::string FooBarDo() { return "Bar::Foo2::Foo2Bar()"; } |
| }; |
| |
| class Foo { |
| public: |
| virtual ~Foo() {} |
| virtual std::string ping() { return "Foo::ping()"; } |
| virtual std::string pong() { return "Foo::pong();" + ping(); } |
| virtual std::string upcall(FooBar* fooBarPtr) { return fooBarPtr->FooBarDo(); } |
| virtual Foo makeFoo() { return Foo(); } |
| virtual FooBar makeFooBar() { return FooBar(); } |
| |
| static std::string callPong(Foo &foo) { return foo.pong(); } |
| static std::string callUpcall(Foo &foo, FooBar* fooBarPtr) { return foo.upcall(fooBarPtr); } |
| static Foo* get_self(Foo *self_) {return self_;} |
| }; |
| |
| %} |
| |
| #if defined(SWIGJAVA) || defined(SWIGCSHARP) || defined(SWIGPYTHON) || defined(SWIGD) || defined(SWIGOCTAVE) || defined(SWIGRUBY) |
| #define SHARED_PTR_WRAPPERS_IMPLEMENTED |
| #endif |
| |
| #if defined(SHARED_PTR_WRAPPERS_IMPLEMENTED) |
| |
| %include <std_string.i> |
| %include <boost_shared_ptr.i> |
| |
| %shared_ptr(Foo) |
| %feature("director") Foo; |
| |
| class FooBar { |
| public: |
| FooBar(); |
| FooBar(const FooBar&); |
| virtual ~FooBar(); |
| |
| std::string FooBarDo(); |
| |
| }; |
| |
| class Foo |
| { |
| public: |
| virtual ~Foo(); |
| virtual std::string ping(); |
| virtual std::string pong(); |
| virtual std::string upcall(FooBar* fooBarPtr); |
| virtual Foo makeFoo(); |
| virtual FooBar makeFooBar(); |
| |
| static std::string callPong(Foo &foo); |
| static std::string callUpcall(Foo &foo, FooBar* fooBarPtr); |
| static Foo* get_self(Foo *self_); |
| }; |
| |
| %shared_ptr(FooDerived) |
| %feature("director") FooDerived; |
| |
| %inline %{ |
| struct FooDerived : Foo { |
| }; |
| %} |
| #endif |
| |