blob: 6be5760c16ebec6e2c86e729113cd1a2003c75ef [file] [log] [blame]
/* This test a return by value constant SWIGTYPE.
It was reported in bug 899332 by Jermey Brown (jhbrown94) */
%module return_const_value
%ignore Foo_ptr::operator=(const Foo_ptr&);
%inline %{
class Foo {
public:
int _val;
Foo(int x): _val(x) {}
int getVal() const {
return _val;
}
};
class Foo_ptr {
Foo *_ptr;
mutable bool _own;
public:
Foo_ptr(Foo *p, bool own = false): _ptr(p), _own(own) {}
static Foo_ptr getPtr() {
return Foo_ptr(new Foo(17), true);
}
static const Foo_ptr getConstPtr() {
return Foo_ptr(new Foo(17), true);
}
const Foo *operator->() {
return _ptr;
}
Foo_ptr(const Foo_ptr& f) : _ptr(f._ptr), _own(f._own)
{
f._own = 0;
}
Foo_ptr& operator=(const Foo_ptr& f) {
_ptr = f._ptr;
_own = f._own;
f._own = 0;
return *this;
}
~Foo_ptr() {
if(_own) delete _ptr;
}
};
%}