diff options
Diffstat (limited to 'Examples/test-suite/csharp_argument_defaults_feature.i')
-rw-r--r-- | Examples/test-suite/csharp_argument_defaults_feature.i | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/Examples/test-suite/csharp_argument_defaults_feature.i b/Examples/test-suite/csharp_argument_defaults_feature.i new file mode 100644 index 000000000..364029646 --- /dev/null +++ b/Examples/test-suite/csharp_argument_defaults_feature.i @@ -0,0 +1,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; + } +}; +%} + + + |