// Tests for the allprotected option %module(directors="1", allprotected="1") allprotected %{ #include %} %include "std_string.i" #ifdef SWIGSCILAB %rename(ProcBase) ProtectedBase; %rename(PubBase) PublicBase; #endif %feature("director") PublicBase; %feature("director") ProtectedBase; // protected types not supported (ProtectedEnum, IntegerType). Make sure they can be ignored. %ignore ProtectedBase::protectedenum; %ignore ProtectedBase::typedefs; %inline %{ class Klass { std::string name; public: Klass(const std::string& n) : name(n) {} std::string getName() { return name; } }; class PublicBase { std::string str; public: enum AnEnum { EnumVal1, EnumVal2 }; public: PublicBase(const char* s): str(s), instanceMemberVariable(0), anEnum(EnumVal1), stringMember(0) {} virtual ~PublicBase() { } virtual std::string virtualMethod() const { return "PublicBase"; } Klass instanceMethod(Klass k) const { return k; } Klass *instanceOverloaded(Klass *k) const { return k; } Klass *instanceOverloaded(Klass *k, std::string name) const { return new Klass(name); } static Klass staticMethod(Klass k) { return k; } static Klass *staticOverloaded(Klass *k) { return k; } static Klass *staticOverloaded(Klass *k, std::string name) { return new Klass(name); } int instanceMemberVariable; static int staticMemberVariable; static const int staticConstMemberVariable = 20; AnEnum anEnum; char *stringMember; }; int PublicBase::staticMemberVariable = 10; class ProtectedBase { std::string str; public: enum AnEnum { EnumVal1, EnumVal2 }; std::string getName() { return str; } protected: ProtectedBase(const char* s): str(s), instanceMemberVariable(0), anEnum(EnumVal1), stringMember(0), protectedenum(ProtEnumVal1) {} virtual ~ProtectedBase() { } virtual std::string virtualMethod() const { return "ProtectedBase"; } Klass instanceMethod(Klass k) const { return k; } Klass *instanceOverloaded(Klass *k) const { return k; } Klass *instanceOverloaded(Klass *k, std::string name) const { return new Klass(name); } static Klass staticMethod(Klass k) { return k; } static Klass *staticOverloaded(Klass *k) { return k; } static Klass *staticOverloaded(Klass *k, std::string name) { return new Klass(name); } int instanceMemberVariable; static int staticMemberVariable; static const int staticConstMemberVariable = 20; AnEnum anEnum; char *stringMember; // unsupported: types defined with protected access and thus methods/variables which use them enum ProtectedEnum { ProtEnumVal1, ProtEnumVal2 }; typedef int IntegerType; ProtectedEnum protectedenum; IntegerType typedefs(IntegerType it) { return it; } }; int ProtectedBase::staticMemberVariable = 10; class ProtectedDerived : public ProtectedBase { public: ProtectedDerived(const char *s) : ProtectedBase(s) {} }; %}