blob: d972f672589d6ba2ca0719b7273e7f670384108d [file] [log] [blame]
%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;};
}