update swig on windows
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
/* This testcase checks whether SWIG correctly parses and generates the code
|
||||
for variadic templates. This covers the variadic number of arguments inside
|
||||
the template brackets, new functions sizeof... and multiple inheritance
|
||||
using variadic number of classes.
|
||||
*/
|
||||
%module cpp11_variadic_templates
|
||||
%warnfilter(SWIGWARN_CPP11_VARIADIC_TEMPLATE) MultiArgs;
|
||||
%warnfilter(SWIGWARN_CPP11_VARIADIC_TEMPLATE) SizeOf;
|
||||
%warnfilter(SWIGWARN_CPP11_VARIADIC_TEMPLATE) MultiInherit;
|
||||
|
||||
////////////////////////
|
||||
// Variadic templates //
|
||||
////////////////////////
|
||||
%inline %{
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
template<typename... Values>
|
||||
class MultiArgs {
|
||||
};
|
||||
|
||||
class MultiArgs<int, std::vector<int>, std::map<std::string, std::vector<int>>> multiArgs;
|
||||
|
||||
%}
|
||||
|
||||
// TODO
|
||||
%template (MultiArgs1) MultiArgs<int, std::vector<int>, std::map<std::string, std::vector<int>>>;
|
||||
|
||||
////////////////////////
|
||||
// Variadic sizeof... //
|
||||
////////////////////////
|
||||
%inline %{
|
||||
template<typename... Args> struct SizeOf {
|
||||
static const int size = sizeof...(Args);
|
||||
};
|
||||
%}
|
||||
|
||||
%template (SizeOf1) SizeOf<int, int>;
|
||||
|
||||
//////////////////////////
|
||||
// Variadic inheritance //
|
||||
//////////////////////////
|
||||
%inline %{
|
||||
class A {
|
||||
public:
|
||||
A() {
|
||||
a = 100;
|
||||
}
|
||||
virtual ~A() {}
|
||||
int a;
|
||||
};
|
||||
|
||||
class B {
|
||||
public:
|
||||
B() {
|
||||
b = 200;
|
||||
}
|
||||
virtual ~B() {}
|
||||
int b;
|
||||
};
|
||||
|
||||
template <typename... BaseClasses> class MultiInherit : public BaseClasses... {
|
||||
public:
|
||||
MultiInherit(BaseClasses&... baseClasses) : BaseClasses(baseClasses)... {}
|
||||
int InstanceMethod() { return 123; }
|
||||
static int StaticMethod() { return 456; }
|
||||
};
|
||||
%}
|
||||
|
||||
|
||||
// TODO
|
||||
//%template (MultiInherit0) MultiInherit<>;
|
||||
%template (MultiInherit1) MultiInherit<A>;
|
||||
// TODO
|
||||
%template (MultiInherit2) MultiInherit<A,B>;
|
||||
|
||||
Reference in New Issue
Block a user