diff --git a/Examples/test-suite/varargs_overload.i b/Examples/test-suite/varargs_overload.i new file mode 100644 index 000000000..1ba00ba65 --- /dev/null +++ b/Examples/test-suite/varargs_overload.i @@ -0,0 +1,44 @@ +// Tests SWIG's *default* handling of overloading varargs (function varargs, not preprocessor varargs). +// The default behavior is to simply ignore the varargs. +%module varargs_overload + +%inline %{ +const char *vararg_over1(const char *fmt, ...) { + return fmt; +} +const char *vararg_over1(int i) { + static char buffer[256]; + sprintf(buffer, "%d", i); + return buffer; +} + +const char *vararg_over2(const char *fmt, ...) { + return fmt; +} +const char *vararg_over2(int i, double j) { + static char buffer[256]; + sprintf(buffer, "%d %g", i, j); + return buffer; +} + +const char *vararg_over3(const char *fmt, ...) { + return fmt; +} +const char *vararg_over3(int i, double j, const char *s) { + static char buffer[256]; + sprintf(buffer, "%d %g %s", i, j, s); + return buffer; +} +%} + +%varargs(int mode = 0) vararg_over4; +%inline %{ +const char *vararg_over4(const char *fmt, ...) { + return fmt; +} +const char *vararg_over4(int i) { + static char buffer[256]; + sprintf(buffer, "%d", i); + return buffer; +} +%}