diff options
Diffstat (limited to 'Examples/test-suite/smart_pointer_extend.i')
| -rw-r--r-- | Examples/test-suite/smart_pointer_extend.i | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/Examples/test-suite/smart_pointer_extend.i b/Examples/test-suite/smart_pointer_extend.i new file mode 100644 index 0000000..d972f67 --- /dev/null +++ b/Examples/test-suite/smart_pointer_extend.i @@ -0,0 +1,132 @@ +%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;}; +} |
