51 lines
1.1 KiB
OpenEdge ABL
51 lines
1.1 KiB
OpenEdge ABL
|
|
/* This testcase shows a few simple ways to deal with the new initializer_list
|
|||
|
|
introduced in C++11. */
|
|||
|
|
%module cpp11_initializer_list
|
|||
|
|
|
|||
|
|
%warnfilter(SWIGWARN_TYPEMAP_INITIALIZER_LIST) B::B;
|
|||
|
|
%ignore A::A(std::initializer_list<int>);
|
|||
|
|
%ignore B::method;
|
|||
|
|
|
|||
|
|
%typemap(in) std::initializer_list<const char *> %{
|
|||
|
|
$1 = {"Ab", "Fab"};
|
|||
|
|
%}
|
|||
|
|
|
|||
|
|
%runtime %{
|
|||
|
|
#if __GNUC__ >= 9
|
|||
|
|
/* warning: ‘new’ of initializer_list does not extend the lifetime of the underlying array [-Winit-list-lifetime] */
|
|||
|
|
/* incorrect warning for C::C(std::initializer_list<const char *>) */
|
|||
|
|
#pragma GCC diagnostic ignored "-Winit-list-lifetime"
|
|||
|
|
#endif
|
|||
|
|
%}
|
|||
|
|
|
|||
|
|
%inline %{
|
|||
|
|
#include <initializer_list>
|
|||
|
|
#include <string>
|
|||
|
|
|
|||
|
|
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) {}
|
|||
|
|
};
|
|||
|
|
class C {
|
|||
|
|
std::string joined;
|
|||
|
|
public:
|
|||
|
|
C(std::initializer_list<const char *> init) {
|
|||
|
|
for (auto& val : init)
|
|||
|
|
joined = joined + val;
|
|||
|
|
}
|
|||
|
|
C() {}
|
|||
|
|
const char * get_joined_string() {
|
|||
|
|
return joined.c_str();
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
%}
|
|||
|
|
|