mirror of https://github.com/swig/swig
133 lines
1.6 KiB
OpenEdge ABL
133 lines
1.6 KiB
OpenEdge ABL
%module smart_pointer_extend
|
|
|
|
%warnfilter(SWIGWARN_RUBY_WRONG_NAME) hi::CBase::z; /* Ruby, wrong const name */
|
|
|
|
%inline %{
|
|
namespace hi
|
|
{
|
|
struct CBase
|
|
{
|
|
static int hello()
|
|
{
|
|
return 1;
|
|
}
|
|
int x;
|
|
static const int z = 1;
|
|
};
|
|
|
|
class CDerived : public CBase
|
|
{
|
|
};
|
|
|
|
class CPtr
|
|
{
|
|
public:
|
|
CDerived* operator->(void) {return 0;}
|
|
};
|
|
|
|
int get_hello(CPtr ptr)
|
|
{
|
|
return ptr->hello();
|
|
}
|
|
|
|
class CPtrConst
|
|
{
|
|
public:
|
|
const CDerived* operator->() const {return 0;};
|
|
};
|
|
|
|
}
|
|
|
|
%}
|
|
|
|
%extend hi::CBase {
|
|
int foo(void) {return 1;};
|
|
int bar(void) {return 2;};
|
|
int boo(int i) {return i;};
|
|
}
|
|
|
|
%extend hi::CDerived {
|
|
int foo(void) {return 1;};
|
|
}
|
|
|
|
|
|
|
|
%extend Foo
|
|
{
|
|
int extension(int i, int j) { return i; }
|
|
int extension(int i) { return i; }
|
|
int extension() { return 1; }
|
|
}
|
|
|
|
%inline %{
|
|
struct Foo {
|
|
};
|
|
|
|
class Bar {
|
|
Foo *f;
|
|
public:
|
|
Bar(Foo *f) : f(f) { }
|
|
Foo *operator->() {
|
|
return f;
|
|
}
|
|
};
|
|
%}
|
|
|
|
|
|
|
|
%extend CFoo
|
|
{
|
|
public:
|
|
static void StatFun() {};
|
|
static void StatFun(int i) {};
|
|
|
|
static void HoHoHo(int i, int j) {};
|
|
}
|
|
|
|
%inline %{
|
|
|
|
class CFoo
|
|
{
|
|
};
|
|
|
|
class CPtrFoo
|
|
{
|
|
public:
|
|
CFoo* operator->(void) {return 0;};
|
|
};
|
|
|
|
%}
|
|
|
|
|
|
|
|
%inline %{
|
|
namespace foo {
|
|
|
|
class DFoo;
|
|
|
|
class DPtrFoo
|
|
{
|
|
DFoo *p;
|
|
public:
|
|
DPtrFoo(DFoo *ptr) : p(ptr)
|
|
{
|
|
}
|
|
|
|
DFoo* operator->(void) {return p;};
|
|
};
|
|
|
|
class DFoo
|
|
{
|
|
public:
|
|
void F(void) {};
|
|
};
|
|
}
|
|
%}
|
|
|
|
|
|
|
|
%extend foo::DFoo {
|
|
static int SExt(int i = 1) {return i;};
|
|
int Ext(int i = 2) {return i;};
|
|
}
|