diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index 4a7855efb..61a5fcddc 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -214,6 +214,7 @@ CPP_TEST_CASES += \ director_protected_overloaded \ director_redefined \ director_ref \ + director_simple \ director_smartptr \ director_thread \ director_unroll \ diff --git a/Examples/test-suite/director_simple.i b/Examples/test-suite/director_simple.i new file mode 100644 index 000000000..0883cae12 --- /dev/null +++ b/Examples/test-suite/director_simple.i @@ -0,0 +1,42 @@ +%module(directors="1") director_simple + +%feature("director") IntBase; +%feature("director") BoolBase; + +%inline %{ +class IntBase { + public: + virtual ~IntBase() {} + IntBase(int i = 3) { (void)i; } + virtual int apply(int x) const { return x * 2; } +}; + +class IntDerived : public IntBase { + public: + virtual int apply(int x) const { return x * 3; } +}; + +int apply(const IntBase& b, int x) +{ + return b.apply(x); +} + +class BoolBase { + public: + virtual ~BoolBase() {} + BoolBase() {} + virtual bool apply(bool a, bool b) const = 0; +}; + +class BoolDerived : public BoolBase { + public: + virtual bool apply(bool a, bool b) const { return a != b; } +}; + +bool apply(const BoolBase& base, bool a, bool b) +{ + return base.apply(a, b); +} + +%} +