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:
parent
a441f65eab
commit
723281a823
8 changed files with 261 additions and 61 deletions
69
Examples/test-suite/constructor_copy.i
Normal file
69
Examples/test-suite/constructor_copy.i
Normal 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>;
|
||||
|
||||
|
||||
38
Examples/test-suite/python/constructor_copy_runme.py
Normal file
38
Examples/test-suite/python/constructor_copy_runme.py
Normal 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
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue