swig/Examples/test-suite/private_assign.i
Vadim Zeitlin f0b3010440 Avoid another warning about deprecated implicit copy ctor
This is similar to the previous commit, but in the other direction, with
the warning being generated for the implicitly-declared copy ctor due to
having an explicitly-declared assignment operator.

And the fix is different too because we need to have an assignment
operator in this test, so define the copy ctor explicitly too.
2021-10-01 01:39:12 +02:00

73 lines
1 KiB
OpenEdge ABL

// 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:
Foo() { }
Foo(const Foo &f) { } // copy ctor can still be public, however.
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