| %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;} | |
| } |