mirror of https://github.com/swig/swig
74 lines
1.0 KiB
OpenEdge ABL
74 lines
1.0 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
|