%module access_change // test access changing from protected to public %inline %{ template class Base { public: virtual ~Base() {} virtual int *PublicProtectedPublic1() { return 0; } int *PublicProtectedPublic2() { return 0; } virtual int *PublicProtectedPublic3() { return 0; } int *PublicProtectedPublic4() { return 0; } protected: virtual int * WasProtected1() { return 0; } int * WasProtected2() { return 0; } virtual int * WasProtected3() { return 0; } int * WasProtected4() { return 0; } }; template class Derived : public Base { public: int * WasProtected1() { return 0; } int * WasProtected2() { return 0; } using Base::WasProtected3; using Base::WasProtected4; protected: virtual int *PublicProtectedPublic1() { return 0; } int *PublicProtectedPublic2() { return 0; } using Base::PublicProtectedPublic3; using Base::PublicProtectedPublic4; }; template class Bottom : public Derived { public: int * WasProtected1() { return 0; } int * WasProtected2() { return 0; } using Base::WasProtected3; using Base::WasProtected4; int *PublicProtectedPublic1() { return 0; } int *PublicProtectedPublic2() { return 0; } int *PublicProtectedPublic3() { return 0; } int *PublicProtectedPublic4() { return 0; } }; %} %template(BaseInt) Base; %template(DerivedInt) Derived; %template(BottomInt) Bottom;