Added support for C++0x rvalue and move semantics.
Added testcase. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-matevz@11450 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
29004c3fcf
commit
a8209bfd68
4 changed files with 58 additions and 3 deletions
|
|
@ -407,7 +407,8 @@ CPP0X_TEST_CASES = \
|
|||
cpp0x_template_explicit \
|
||||
cpp0x_uniform_initialization \
|
||||
cpp0x_function_objects \
|
||||
cpp0x_strongly_typed_enumerations
|
||||
cpp0x_strongly_typed_enumerations \
|
||||
cpp0x_rvalue_reference
|
||||
# cpp0x_alternate_function_syntax # not fully implemented yet
|
||||
# cpp0x_hash_types # not fully implemented yet
|
||||
# cpp0x_unrestricted_unions # not supported by any compilers yet
|
||||
|
|
|
|||
23
Examples/test-suite/cpp0x_rvalue_reference.i
Normal file
23
Examples/test-suite/cpp0x_rvalue_reference.i
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
%module cpp0x_rvalue_reference
|
||||
|
||||
%inline %{
|
||||
class A {
|
||||
public:
|
||||
int getAcopy() { return _a; }
|
||||
int *getAptr() { return &_a; }
|
||||
int &getAref() { return _a; }
|
||||
int &&getAmove() { return _a; }
|
||||
|
||||
void setAcopy(int a) { _a = a; }
|
||||
void setAptr(int *a) { _a = *a; }
|
||||
void setAref(int &a) { _a = a; }
|
||||
void setAmove(int &&a) { _a = a; }
|
||||
|
||||
void arg(int a);
|
||||
void arg(int *a);
|
||||
void arg(int &a);
|
||||
// void arg(int &&a); // redefinition not allowed
|
||||
private:
|
||||
int _a;
|
||||
};
|
||||
%}
|
||||
22
Examples/test-suite/python/cpp0x_rvalue_reference_runme.py
Normal file
22
Examples/test-suite/python/cpp0x_rvalue_reference_runme.py
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import cpp0x_rvalue_reference
|
||||
|
||||
a = cpp0x_rvalue_reference.A()
|
||||
|
||||
a.setAcopy(5)
|
||||
if a.getAcopy() != 5:
|
||||
raise RunTimeError, "int A::getAcopy() value is ", a.getAcopy(), " should be 5"
|
||||
|
||||
ptr = a.getAptr()
|
||||
|
||||
a.setAptr(ptr)
|
||||
if a.getAcopy() != 5:
|
||||
raise RunTimeError, "after A::setAptr(): int A::getAcopy() value is ", a.getAcopy(), " should be 5"
|
||||
|
||||
a.setAref(ptr)
|
||||
if a.getAcopy() != 5:
|
||||
raise RunTimeError, "after A::setAref(): int A::getAcopy() value is ", a.getAcopy(), " should be 5"
|
||||
|
||||
a.setAmove(ptr)
|
||||
if a.getAcopy() != 5:
|
||||
raise RunTimeError, "after A::setAmove(): int A::getAcopy() value is ", a.getAcopy(), " should be 5"
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue