diff options
author | Zackery Spytz <zspytz@gmail.com> | 2020-06-05 10:25:20 -0600 |
---|---|---|
committer | Zackery Spytz <zspytz@gmail.com> | 2020-06-05 10:25:20 -0600 |
commit | 4e57c5536d165db868a6cb0ba7d1518ca5955f45 (patch) | |
tree | 06c96c9dedd1c9dd7b79793274821176430d205b | |
parent | 430a44e075bb26b2a1b4159846945969f495ad5b (diff) | |
download | swig-4e57c5536d165db868a6cb0ba7d1518ca5955f45.tar.gz |
Fix wrapping of virtual comparison operators with directors
Closes #1642.
-rw-r--r-- | Examples/test-suite/common.mk | 1 | ||||
-rw-r--r-- | Examples/test-suite/director_comparison_operators.i | 16 | ||||
-rw-r--r-- | Examples/test-suite/python/director_comparison_operators_runme.py | 11 | ||||
-rw-r--r-- | Source/Modules/directors.cxx | 4 |
4 files changed, 28 insertions, 4 deletions
diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index e77f09c86..55cbd2cce 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -184,6 +184,7 @@ CPP_TEST_CASES += \ director_classes \ director_classic \ director_constructor \ + director_comparison_operators \ director_conversion_operators \ director_default \ director_detect \ diff --git a/Examples/test-suite/director_comparison_operators.i b/Examples/test-suite/director_comparison_operators.i new file mode 100644 index 000000000..9577847e1 --- /dev/null +++ b/Examples/test-suite/director_comparison_operators.i @@ -0,0 +1,16 @@ +%module(directors="1") director_comparison_operators + +%include "std_string.i" +%feature("director"); + +%inline %{ +class Foo { +public: + virtual ~Foo() { } + virtual bool operator==(const Foo&) const = 0; + virtual bool operator>=(const Foo&) const = 0; + virtual bool operator<=(const Foo&) const = 0; + virtual bool operator!=(const Foo&) const = 0; + virtual std::string test(const char *foo="a=1,b=2") { return foo; } +}; +%} diff --git a/Examples/test-suite/python/director_comparison_operators_runme.py b/Examples/test-suite/python/director_comparison_operators_runme.py new file mode 100644 index 000000000..4fe733098 --- /dev/null +++ b/Examples/test-suite/python/director_comparison_operators_runme.py @@ -0,0 +1,11 @@ +import director_comparison_operators + + +class PyFoo(director_comparison_operators.Foo): + pass + + +a = PyFoo() + +if a.test() != "a=1,b=2": + raise RuntimeError, a.test() diff --git a/Source/Modules/directors.cxx b/Source/Modules/directors.cxx index a91d5fd9a..3504b2c49 100644 --- a/Source/Modules/directors.cxx +++ b/Source/Modules/directors.cxx @@ -175,10 +175,6 @@ String *Swig_method_decl(SwigType *return_base_type, SwigType *decl, const_Strin if (qualifiers) Printv(result, " ", qualifiers, NIL); - // Reformat result to how it has been historically - Replaceall(result, ",", ", "); - Replaceall(result, "=", " = "); - Delete(args_string); Delete(popped_decl); Delete(qualifiers); |