Initialization list doc updates and new tests. Fix functions with default arguments that are initializer lists

This commit is contained in:
William S Fulton 2013-02-02 01:15:28 +00:00
commit c8ff23de0c
6 changed files with 96 additions and 14 deletions

View file

@ -1,7 +1,7 @@
/* This testcase checks whether SWIG correctly uses the new initializer_list
introduced in C++0x. */
%module cpp0x_initializer_list
%warnfilter(520) A;
%warnfilter(SWIGWARN_LANG_INITIALIZER_LIST) A;
%inline %{
#include <initializer_list>
@ -10,6 +10,13 @@ class A {
public:
A( std::initializer_list<int> ) {}
A() {}
A(double d) {}
};
class B {
public:
B( std::initializer_list<int>, std::initializer_list<double> ) {}
B() {}
void method(std::initializer_list<int> init) {}
};
%}

View file

@ -1,7 +1,11 @@
/* This testcase checks whether SWIG syntactically correctly parses the curly
brackets {} for uniform member initialization. */
/* This testcase checks whether SWIG syntactically correctly parses the initialization syntax using
{} braces for uniform member initialization. */
%module cpp0x_uniform_initialization
%include <std_vector.i>
%template(VectorInt) std::vector<int>;
%inline %{
struct BasicStruct {
int x;
@ -10,6 +14,8 @@ struct BasicStruct {
struct AltStruct {
AltStruct(int x, double y) : x_{x}, y_{y} {}
int getX() { return x_; }
double getY() { return y_; }
private:
int x_;
@ -19,4 +25,25 @@ private:
BasicStruct var1{5, 3.2}; // only fills the struct components
AltStruct var2{2, 4.3}; // calls the constructor
class MoreInit
{
public:
int yarray[5] {1,2,3,4,5};
char *charptr {nullptr};
std::vector<int> vi {1,2,3,4,5};
MoreInit() {}
int more1(std::vector<int> vv = {1,2,3,4}) {
int sum = 0;
for (int i : vv)
sum += i;
return sum;
}
};
const int arr1[] = {1,2,3};
const int arr2[]{1,2,3};
const int arr3[][3]{ {1,2,3}, {4,5,6} };
const int arr4[][3] = { {1,2,3}, {4,5,6} };
%}

View file

@ -0,0 +1,5 @@
import cpp0x_initializer_list
a = cpp0x_initializer_list.A()
a = cpp0x_initializer_list.A(11.1)

View file

@ -0,0 +1,21 @@
import cpp0x_uniform_initialization
var1 = cpp0x_uniform_initialization.cvar.var1
if var1.x != 5:
raise RuntimeError
var2 = cpp0x_uniform_initialization.cvar.var2
if var2.getX() != 2:
raise RuntimeError
m = cpp0x_uniform_initialization.MoreInit()
if m.charptr != None:
raise RuntimeError, m.charptr
m.charptr = "hello sir"
if m.charptr != "hello sir":
raise RuntimeError, m.charptr
if m.more1(m.vi) != 15:
raise RuntimeError, m.vi
if m.more1( [-1,1,2] ) != 2:
raise RuntimeError, m.vi
if m.more1() != 10:
raise RuntimeError