| // Tests of overloaded functions of arrays |
| // Based on overload_simple testcase |
| %module overload_arrays |
| |
| #ifdef SWIGLUA |
| // lua only has one numeric type, so most of the overloads shadow each other creating warnings |
| %warnfilter(SWIGWARN_LANG_OVERLOAD_SHADOW) foo; |
| %warnfilter(SWIGWARN_LANG_OVERLOAD_SHADOW) bar; |
| %warnfilter(SWIGWARN_LANG_OVERLOAD_SHADOW) Spam; |
| #endif |
| |
| #ifdef SWIGGO |
| %warnfilter(SWIGWARN_PARSE_KEYWORD) type; // 'type' is a Go keyword, renamed as 'Xtype' |
| %rename(Foos) Foo; |
| #endif |
| |
| #ifdef SWIGOCAML |
| %warnfilter(SWIGWARN_PARSE_KEYWORD) type; |
| #endif |
| |
| %immutable Spam::type; |
| |
| %inline %{ |
| |
| #define SIZE 3 |
| |
| struct Foo { |
| }; |
| |
| class Bar { |
| public: |
| Bar(int i = 0) { num = i; } |
| |
| static int foo(int a=0, int b=0) {return 0;} |
| |
| int num; |
| }; |
| |
| char *foo() { |
| return (char *) "foo:"; |
| } |
| char *foo(int[SIZE]) { |
| return (char*) "foo:int[SIZE]"; |
| } |
| |
| char *foo(double[SIZE]) { |
| return (char*) "foo:double[SIZE]"; |
| } |
| |
| char *foo(char *[SIZE]) { |
| return (char*) "foo:char *[SIZE]"; |
| } |
| |
| char *foo(Foo *[SIZE]) { |
| return (char*) "foo:Foo *[SIZE]"; |
| } |
| char *foo(Bar *[SIZE]) { |
| return (char *) "foo:Bar *[SIZE]"; |
| } |
| char *foo(void *[SIZE]) { |
| return (char *) "foo:void *[SIZE]"; |
| } |
| char *foo(Foo *[SIZE], int[SIZE]) { |
| return (char *) "foo:Foo *[SIZE],int[SIZE]"; |
| } |
| char *foo(double[SIZE], Bar *[SIZE]) { |
| return (char *) "foo:double[SIZE],Bar *[SIZE]"; |
| } |
| |
| char *blah(double[SIZE]) { |
| return (char *) "blah:double[SIZE]"; |
| } |
| |
| char *blah(char *[SIZE]) { |
| return (char *) "blah:char *[SIZE]"; |
| } |
| |
| class Spam { |
| public: |
| Spam() { type = "none"; } |
| Spam(int[SIZE]) { type = "int[SIZE]"; } |
| Spam(double[SIZE]) { type = "double[SIZE]"; } |
| Spam(char *[SIZE]) { type = "char *[SIZE]"; } |
| Spam(Foo *[SIZE]) { type = "Foo *[SIZE]"; } |
| Spam(Bar *[SIZE]) { type = "Bar *[SIZE]"; } |
| Spam(void *[SIZE]) { type = "void *[SIZE]"; } |
| const char *type; |
| |
| char *foo(int[SIZE]) { |
| return (char*) "foo:int[SIZE]"; |
| } |
| char *foo(double[SIZE]) { |
| return (char*) "foo:double[SIZE]"; |
| } |
| char *foo(char *[SIZE]) { |
| return (char*) "foo:char *[SIZE]"; |
| } |
| char *foo(Foo *[SIZE]) { |
| return (char*) "foo:Foo *[SIZE]"; |
| } |
| char *foo(Bar *[SIZE]) { |
| return (char *) "foo:Bar *[SIZE]"; |
| } |
| char *foo(void *[SIZE]) { |
| return (char *) "foo:void *[SIZE]"; |
| } |
| |
| static char *bar(int[SIZE]) { |
| return (char*) "bar:int[SIZE]"; |
| } |
| static char *bar(double[SIZE]) { |
| return (char*) "bar:double[SIZE]"; |
| } |
| static char *bar(char *[SIZE]) { |
| return (char*) "bar:char *[SIZE]"; |
| } |
| static char *bar(Foo *[SIZE]) { |
| return (char*) "bar:Foo *[SIZE]"; |
| } |
| static char *bar(Bar *[SIZE]) { |
| return (char *) "bar:Bar *[SIZE]"; |
| } |
| static char *bar(void *[SIZE]) { |
| return (char *) "bar:void *[SIZE]"; |
| } |
| }; |
| |
| %} |
| |
| |
| %inline { |
| class ClassA |
| { |
| public: |
| ClassA() {} |
| int method1( ) {return 0;} |
| int method1( int arg1[SIZE] ) {return arg1[0];} |
| protected: |
| int method1( int arg1[SIZE], int arg2[SIZE] ) {return arg1[0] + arg2[0];} |
| |
| }; |
| } |
| |