/* 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; } }; %}