diff options
Diffstat (limited to 'Examples/test-suite/kwargs_feature.i')
-rw-r--r-- | Examples/test-suite/kwargs_feature.i | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Examples/test-suite/kwargs_feature.i b/Examples/test-suite/kwargs_feature.i index a8d1c38d8..5b9418129 100644 --- a/Examples/test-suite/kwargs_feature.i +++ b/Examples/test-suite/kwargs_feature.i @@ -27,6 +27,7 @@ virtual int foo(int a = 1, int b = 0) {return a + b; } static int statfoo(int a = 1, int b = 0) {return a + b; } + static int statfoo_onearg(int x = 10) {return x + x; } static Foo *create(int a = 1, int b = 0) { @@ -100,3 +101,52 @@ int foo_mm(int min = 1, int max = 2) {return min + max; } %} + + +// Extended constructors +%extend Extending0 { + Extending0() { return new Extending0(); } +} +%extend Extending1 { + Extending1(int one) { return new Extending1(); } +} +%extend Extending2 { + Extending2(int one, const char *two) { return new Extending2(); } +} +%extend ExtendingOptArgs1 { + ExtendingOptArgs1(int one = 0) { return new ExtendingOptArgs1(); } +} +%extend ExtendingOptArgs2 { + ExtendingOptArgs2(int one = 0, const char* two = NULL) { return new ExtendingOptArgs2(); } +} + +%inline %{ +struct Extending0 {}; +struct Extending1 {}; +struct Extending2 {}; +struct ExtendingOptArgs1 {}; +struct ExtendingOptArgs2 {}; +%} + +// For strlen/strcpy +%{ +#include <string.h> +%} + +// Varargs +%warnfilter(SWIGWARN_LANG_VARARGS_KEYWORD) VarargConstructor::VarargConstructor; // Can't wrap varargs with keyword arguments enabled +%warnfilter(SWIGWARN_LANG_VARARGS_KEYWORD) VarargConstructor::vararg_method; // Can't wrap varargs with keyword arguments enabled +%inline %{ +struct VarargConstructor { + char *str; + VarargConstructor(const char *fmt, ...) { + str = new char[strlen(fmt) + 1]; + strcpy(str, fmt); + } + void vararg_method(const char *fmt, ...) { + delete [] str; + str = new char[strlen(fmt) + 1]; + strcpy(str, fmt); + } +}; +%} |