mirror of https://github.com/swig/swig
83 lines
1.8 KiB
OpenEdge ABL
83 lines
1.8 KiB
OpenEdge ABL
%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(SWIGC) || 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
|
|
|