/* 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(); } }; %}
Generated by dwww version 1.15 on Tue Jul 2 00:24:39 CEST 2024.