| // Tests for the allprotected option |
| |
| %module(directors="1", allprotected="1") allprotected |
| |
| %{ |
| #include <string> |
| %} |
| |
| %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) {} |
| }; |
| %} |
| |