aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/kwargs_feature.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/kwargs_feature.i')
-rw-r--r--Examples/test-suite/kwargs_feature.i50
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);
+ }
+};
+%}