1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
%module csharp_argument_defaults_feature
%include "std_string.i"
%include <swiginterface.i>
%feature("cs:defaultargs") Foo::Foo;
%feature("cs:defaultargs", z=4) Foo::bar;
%feature("cs:defaultargs", x="\"fives\"") Foo::zoo;
%feature("cs:defaultargs", value="System.Math.PI") Foo::pi;
%feature("cs:defaultargs", s=R"--("fives")--") Foo::lengthOfString;
%feature("cs:defaultargs", z=4) ::gbar;
%feature("cs:defaultargs", z=4) Foo::sbar;
%feature("cs:defaultargs", z=4) AnInterface::foo;
%interface(AnInterface)
//intentionally don't touch bat, leave it to normal handling
%inline %{
#include <string>
enum EnumerationType {
one=1,
two,
three
};
int gbar(int x, int y=2, int z=3)
{
return x+y+z;
}
int gbat(int x=1, int y=2, int z=3)
{
return x+y+z;
}
class Foo {
public:
virtual ~Foo() {}
Foo(int a, int b=1, int c=2)
{
}
int bar(int x, int y=2, int z=3)
{
return x+y+z;
}
int bat(int x=1, int y=2, int z=3)
{
return x+y+z;
}
int zoo(std::string x="four")
{
return (int)x.size();
}
double pi(double value=3.14)
{
return value;
}
int lengthOfString(const std::string& s="four")
{
return (int)s.size();
}
int valueofenum(EnumerationType t=two)
{
return (int)t;
}
int valueofchar(char c='c')
{
return (int)c;
}
static int sbar(int x, int y=2, int z=3)
{
return x+y+z;
}
static int sbat(int x=1, int y=2, int z=3)
{
return x+y+z;
}
};
class AnInterface
{
public:
AnInterface() {}
virtual int foo(int x=1, int y=2, int z=3) = 0;
virtual ~AnInterface() {}
};
class AnImplementation: public AnInterface
{
public:
int foo(int x=1, int y=2, int z=3)
{
return x*y+z;
}
};
%}
|