diff options
Diffstat (limited to 'Examples/test-suite/using_member_scopes.i')
-rw-r--r-- | Examples/test-suite/using_member_scopes.i | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/Examples/test-suite/using_member_scopes.i b/Examples/test-suite/using_member_scopes.i new file mode 100644 index 000000000..3245c9cc7 --- /dev/null +++ b/Examples/test-suite/using_member_scopes.i @@ -0,0 +1,85 @@ +%module using_member_scopes + +// Fully qualifying parameter types in a method declared after the using declaration caused +// a method being incorrectly added by the using declaration even though the declaration already existed + +%inline %{ +namespace OgreBites +{ + struct NativeWindowType {}; + class ApplicationContextBase { + public: + virtual ~ApplicationContextBase() {} + virtual void setWindowGrab(NativeWindowType* win, bool grab = true) {} + void setWindowGrab(bool grab = true) {} + }; + class ApplicationContextSDL : public ApplicationContextBase { + public: + using ApplicationContextBase::setWindowGrab; + void setWindowGrab(NativeWindowType* win, bool grab = true) {} // This should not be added again as it exists in base class + }; +/* +typedef not working yet + class ApplicationContextSDL2 : public ApplicationContextBase { + public: + using ApplicationContextBase::setWindowGrab; + typedef NativeWindowType* pNWT; + void setWindowGrab(pNWT win, bool grab) {} // This should not be added again as it exists in base class + }; +*/ +} +%} + + +%inline %{ +// Test using declaration in various positions before and after overloaded methods +// Testing where the derived class overrides all the base class methods (and more) +namespace Bites +{ + struct Base + { + virtual ~Base() {} + virtual void grab() {} + virtual void grab(int i) {} + }; + struct Derived1 : public Base + { + using Base::grab; + virtual void grab() {} + virtual void grab(int i) {} + }; + struct Derived2 : public Base + { + using Base::grab; + virtual void grab() {} + virtual void grab(int i) {} + virtual void grab(int i, double d) {} + }; + struct Derived3 : public Base + { + virtual void grab() {} + using Base::grab; + virtual void grab(int i) {} + }; + struct Derived4 : public Base + { + virtual void grab() {} + using Base::grab; + virtual void grab(int i) {} + virtual void grab(int i, double d) {} + }; + struct Derived5 : public Base + { + virtual void grab() {} + virtual void grab(int i) {} + using Base::grab; + }; + struct Derived6 : public Base + { + virtual void grab() {} + virtual void grab(int i) {} + virtual void grab(int i, double d) {} + using Base::grab; + }; +} +%} |