diff options
Diffstat (limited to 'Examples/test-suite/varargs.i')
-rw-r--r-- | Examples/test-suite/varargs.i | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/Examples/test-suite/varargs.i b/Examples/test-suite/varargs.i index dd56cb073..c1aee229e 100644 --- a/Examples/test-suite/varargs.i +++ b/Examples/test-suite/varargs.i @@ -1,17 +1,35 @@ -// Tests SWIG's *default* handling of varargs (function varargs, not preprocessor varargs). +// Tests SWIG's handling of varargs (function varargs, not preprocessor varargs). // The default behavior is to simply ignore the varargs. %module varargs -%varargs(int mode = 0) test_def; -%varargs(int mode = 0) Foo::Foo; -%varargs(int mode = 0) Foo::statictest(const char*fmt, ...); -%varargs(2, int mode = 0) test_plenty(const char*fmt, ...); +// Default handling of varargs + +%{ +#include <string.h> +%} %inline %{ char *test(const char *fmt, ...) { return (char *) fmt; } +struct VarargConstructor { + char *str; + VarargConstructor(const char *fmt, ...) { + str = new char[strlen(fmt) + 1]; + strcpy(str, fmt); + } +}; +%} + +// %varargs support + +%varargs(int mode = 0) test_def; +%varargs(int mode = 0) Foo::Foo; +%varargs(int mode = 0) Foo::statictest(const char*fmt, ...); +%varargs(2, int mode = 0) test_plenty(const char*fmt, ...); + +%inline %{ const char *test_def(const char *fmt, ...) { return fmt; } @@ -40,5 +58,4 @@ public: const char *test_plenty(const char *fmt, ...) { return fmt; } - %} |