diff options
Diffstat (limited to 'Examples/test-suite/private_assign.i')
| -rw-r--r-- | Examples/test-suite/private_assign.i | 71 |
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 |
