summaryrefslogtreecommitdiff
path: root/Examples/test-suite/private_assign.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/private_assign.i')
-rw-r--r--Examples/test-suite/private_assign.i71
1 files changed, 71 insertions, 0 deletions
diff --git a/Examples/test-suite/private_assign.i b/Examples/test-suite/private_assign.i
new file mode 100644
index 0000000..acc4d0b
--- /dev/null
+++ b/Examples/test-suite/private_assign.i
@@ -0,0 +1,71 @@
+// A class with a private assignment operator.
+// This is rare, but sometimes used with singletons and
+// objects that have complicated state.
+
+%module private_assign
+%{
+#include <stdlib.h>
+%}
+
+%inline %{
+ class Foo {
+ private:
+ Foo &operator=(const Foo &f) {
+ return *this;
+ }
+ public:
+ void bar() { }
+ };
+
+ Foo blah() {
+ return Foo();
+ }
+
+ class Bar : protected Foo
+ {
+ };
+
+%}
+
+#pragma SWIG nowarn=SWIGWARN_IGNORE_OPERATOR_NEW // operator new
+
+%inline %{
+ class TROOT {
+ protected:
+ void *operator new(size_t l) { return malloc(sizeof(TROOT)); }
+
+ int prot_meth()
+ {
+ return 1;
+ }
+
+ public:
+ TROOT()
+ {
+ }
+
+ TROOT(const char *name, const char *title, void *initfunc = 0)
+ {
+ }
+ };
+
+ class A : protected TROOT
+ {
+ };
+
+%}
+
+#ifdef SWIGPYTHON
+
+// This case only works in python
+%inline %{
+ struct FooBar : Foo
+ {
+ };
+
+ FooBar bar;
+
+%}
+
+
+#endif