sort out c++0x lambda tests and reorder cpp0x tests

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-matevz@12182 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2010-07-24 00:20:11 +00:00
commit 996455b50e
3 changed files with 82 additions and 36 deletions

View file

@ -5,30 +5,47 @@
*/
%module cpp0x_lambda_functions
%inline %{
struct A {
/* Defined lambda function with return value. */
auto lambda1 = [](int x, int y) -> int { return x+y; };
#pragma SWIG nowarn=SWIGWARN_LANG_NATIVE_UNIMPL
/* Defined lambda function without return value.
Return value is calculated by compiler, if the function contains a
single statement "return expr;". */
auto lambda2 = [](int x, int y) { return x+y; };
};
%inline %{
/* Defined lambda function with return value. */
auto lambda1 = [](int x, int y) -> int { return x+y; };
/* Defined lambda function without return value.
Return value is calculated by compiler, if the function contains a
single statement "return expr;". */
auto lambda2 = [](int x, int y) { return x+y; };
auto lambda3 = [&](int x, int y) { return x+y; };
auto lambda4 = [=](int x, int y) { return x+y; };
int thing = 0;
auto lambda5 = [=,&thing]() { return thing;};
int runLambda1() {
A myA;
return myA.lambda1(5,6);
return lambda1(5,6);
}
int runLambda2() {
A myA;
return myA.lambda2(5,6);
return lambda2(5,6);
}
int runLambda3() {
return lambda3(5,6);
}
int runLambda4() {
return lambda4(5,6);
}
int runLambda5() {
thing++;
return lambda5();
}
/* Inline defined lambda function. */
int runLambda3() {
int runLambdaInline() {
auto myLambda = [](int x, int y) { return x+y; };
return myLambda(5,6);
}
%}