Initialization list doc updates and new tests. Fix functions with default arguments that are initializer lists
This commit is contained in:
parent
a043b55b69
commit
c8ff23de0c
6 changed files with 96 additions and 14 deletions
|
|
@ -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) {}
|
||||
};
|
||||
%}
|
||||
|
||||
|
|
|
|||
|
|
@ -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} };
|
||||
%}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
import cpp0x_initializer_list
|
||||
|
||||
a = cpp0x_initializer_list.A()
|
||||
a = cpp0x_initializer_list.A(11.1)
|
||||
|
||||
|
|
@ -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
|
||||
Loading…
Add table
Add a link
Reference in a new issue