PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/Examples/test-suite/allprotected.i

#
Swig | 78 lines | 67 code | 11 blank | 0 comment | 0 complexity | c154de5234cdb4db82d6fc505e829678 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. // Tests for the allprotected option
  2. %module(directors="1", allprotected="1") allprotected
  3. %{
  4. #include <string>
  5. %}
  6. %include "std_string.i"
  7. %feature("director") PublicBase;
  8. %feature("director") ProtectedBase;
  9. // protected types not supported (ProtectedEnum, IntegerType). Make sure they can be ignored.
  10. %ignore ProtectedBase::protectedenum;
  11. %ignore ProtectedBase::typedefs;
  12. %inline %{
  13. class Klass {
  14. std::string name;
  15. public:
  16. Klass(const std::string& n) : name(n) {}
  17. std::string getName() { return name; }
  18. };
  19. class PublicBase {
  20. std::string str;
  21. public:
  22. enum AnEnum { EnumVal1, EnumVal2 };
  23. public:
  24. PublicBase(const char* s): str(s), instanceMemberVariable(0), anEnum(EnumVal1), stringMember(0) {}
  25. virtual ~PublicBase() { }
  26. virtual std::string virtualMethod() const { return "PublicBase"; }
  27. Klass instanceMethod(Klass k) const { return k; }
  28. Klass *instanceOverloaded(Klass *k) const { return k; }
  29. Klass *instanceOverloaded(Klass *k, std::string name) const { return new Klass(name); }
  30. static Klass staticMethod(Klass k) { return k; }
  31. static Klass *staticOverloaded(Klass *k) { return k; }
  32. static Klass *staticOverloaded(Klass *k, std::string name) { return new Klass(name); }
  33. int instanceMemberVariable;
  34. static int staticMemberVariable;
  35. static const int staticConstMemberVariable = 20;
  36. AnEnum anEnum;
  37. char *stringMember;
  38. };
  39. int PublicBase::staticMemberVariable = 10;
  40. class ProtectedBase {
  41. std::string str;
  42. public:
  43. enum AnEnum { EnumVal1, EnumVal2 };
  44. std::string getName() { return str; }
  45. protected:
  46. ProtectedBase(const char* s): str(s), instanceMemberVariable(0), anEnum(EnumVal1), stringMember(0), protectedenum(ProtEnumVal1) {}
  47. virtual ~ProtectedBase() { }
  48. virtual std::string virtualMethod() const { return "ProtectedBase"; }
  49. Klass instanceMethod(Klass k) const { return k; }
  50. Klass *instanceOverloaded(Klass *k) const { return k; }
  51. Klass *instanceOverloaded(Klass *k, std::string name) const { return new Klass(name); }
  52. static Klass staticMethod(Klass k) { return k; }
  53. static Klass *staticOverloaded(Klass *k) { return k; }
  54. static Klass *staticOverloaded(Klass *k, std::string name) { return new Klass(name); }
  55. int instanceMemberVariable;
  56. static int staticMemberVariable;
  57. static const int staticConstMemberVariable = 20;
  58. AnEnum anEnum;
  59. char *stringMember;
  60. // unsupported: types defined with protected access and thus methods/variables which use them
  61. enum ProtectedEnum { ProtEnumVal1, ProtEnumVal2 };
  62. typedef int IntegerType;
  63. ProtectedEnum protectedenum;
  64. IntegerType typedefs(IntegerType it) { return it; }
  65. };
  66. int ProtectedBase::staticMemberVariable = 10;
  67. %}