summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZackery Spytz <zspytz@gmail.com>2020-06-05 10:25:20 -0600
committerZackery Spytz <zspytz@gmail.com>2020-06-05 10:25:20 -0600
commit4e57c5536d165db868a6cb0ba7d1518ca5955f45 (patch)
tree06c96c9dedd1c9dd7b79793274821176430d205b
parent430a44e075bb26b2a1b4159846945969f495ad5b (diff)
downloadswig-4e57c5536d165db868a6cb0ba7d1518ca5955f45.tar.gz
Fix wrapping of virtual comparison operators with directors
Closes #1642.
-rw-r--r--Examples/test-suite/common.mk1
-rw-r--r--Examples/test-suite/director_comparison_operators.i16
-rw-r--r--Examples/test-suite/python/director_comparison_operators_runme.py11
-rw-r--r--Source/Modules/directors.cxx4
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);