/* 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();
  }
};
%}

