1 // Tests for the allprotected option
3 %module(directors="1", allprotected="1") allprotected
9 %include "std_string.i"
11 %feature("director") PublicBase;
12 %feature("director") ProtectedBase;
14 // protected types not supported (ProtectedEnum, IntegerType). Make sure they can be ignored.
15 %ignore ProtectedBase::protectedenum;
16 %ignore ProtectedBase::typedefs;
22 Klass(const std::string& n) : name(n) {}
23 std::string getName() { return name; }
29 enum AnEnum { EnumVal1, EnumVal2 };
31 PublicBase(const char* s): str(s), instanceMemberVariable(0), anEnum(EnumVal1), stringMember(0) {}
32 virtual ~PublicBase() { }
33 virtual std::string virtualMethod() const { return "PublicBase"; }
34 Klass instanceMethod(Klass k) const { return k; }
35 Klass *instanceOverloaded(Klass *k) const { return k; }
36 Klass *instanceOverloaded(Klass *k, std::string name) const { return new Klass(name); }
37 static Klass staticMethod(Klass k) { return k; }
38 static Klass *staticOverloaded(Klass *k) { return k; }
39 static Klass *staticOverloaded(Klass *k, std::string name) { return new Klass(name); }
40 int instanceMemberVariable;
41 static int staticMemberVariable;
42 static const int staticConstMemberVariable = 20;
46 int PublicBase::staticMemberVariable = 10;
51 enum AnEnum { EnumVal1, EnumVal2 };
52 std::string getName() { return str; }
54 ProtectedBase(const char* s): str(s), instanceMemberVariable(0), anEnum(EnumVal1), stringMember(0), protectedenum(ProtEnumVal1) {}
55 virtual ~ProtectedBase() { }
56 virtual std::string virtualMethod() const { return "ProtectedBase"; }
57 Klass instanceMethod(Klass k) const { return k; }
58 Klass *instanceOverloaded(Klass *k) const { return k; }
59 Klass *instanceOverloaded(Klass *k, std::string name) const { return new Klass(name); }
60 static Klass staticMethod(Klass k) { return k; }
61 static Klass *staticOverloaded(Klass *k) { return k; }
62 static Klass *staticOverloaded(Klass *k, std::string name) { return new Klass(name); }
63 int instanceMemberVariable;
64 static int staticMemberVariable;
65 static const int staticConstMemberVariable = 20;
69 // unsupported: types defined with protected access and thus methods/variables which use them
70 enum ProtectedEnum { ProtEnumVal1, ProtEnumVal2 };
71 typedef int IntegerType;
72 ProtectedEnum protectedenum;
73 IntegerType typedefs(IntegerType it) { return it; }
75 int ProtectedBase::staticMemberVariable = 10;