generate implicit copyctor, add -nocopyctor, and clarify the -nodefault, -nodefaultctor, -nodefautldtor options

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@8030 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2005-12-22 06:26:26 +00:00
commit 723281a823
8 changed files with 261 additions and 61 deletions

View file

@ -0,0 +1,69 @@
%module constructor_copy
%nocopyctor Foo8;
%nocopyctor Bar<double>;
%inline %{
struct Foo1 {
int x;
Foo1(int _x = 2) : x(_x)
{
}
};
struct Foo2 {
Foo2() { }
};
struct Foo3 {
Foo3() { }
Foo3(const Foo3& ) { }
};
struct Foo4 {
Foo4() { }
protected:
Foo4(const Foo4& ) { }
};
struct Foo4a {
Foo4a() { }
private:
Foo4a(const Foo4a& ) { }
};
struct Foo5 : Foo4 {
};
struct Foo6 : Foo4 {
Foo6(const Foo6& ) { }
};
struct Foo7 : Foo5 {
};
struct Foo8 {
};
template <class T>
class Bar
{
public:
int x;
Bar(int _x = 0) : x(_x)
{
}
};
%}
%template(Bari) Bar<int>;
%template(Bard) Bar<double>;

View file

@ -0,0 +1,38 @@
from constructor_copy import *
f1 = Foo1(3);
f11 = Foo1(f1);
if f1.x != f11.x:
raise RuntimeError
f8 = Foo8()
try:
f81 = Foo8(f8)
good = 0
except:
good = 1
if not good:
raise RuntimeError
bi = Bari(5)
bc = Bari(bi)
if (bi.x != bc.x):
raise RuntimeError
bd = Bard(5)
try:
bc = Bard(bd)
good = 0
except:
good = 1
if not good:
raise RuntimeError