| // Tests global reference variables: |
| // - all non const primitives |
| // - const and non const class |
| |
| %module reference_global_vars |
| |
| %warnfilter(SWIGWARN_TYPEMAP_SWIGTYPELEAK); /* memory leak when setting a ptr/ref variable */ |
| |
| %inline %{ |
| class TestClass { |
| public: |
| int num; |
| TestClass(int n = 0) : num(n) {} |
| }; |
| %} |
| |
| // const class reference variable |
| %{ |
| const TestClass& global_constTestClass = TestClass(33); |
| %} |
| %inline %{ |
| TestClass getconstTC() { |
| return global_constTestClass; |
| } |
| %} |
| |
| // Macro to help define similar functions |
| %define ref(type,name) |
| %{ |
| static type initial_value_##name; |
| %} |
| %inline %{ |
| static type &var_##name = initial_value_##name; |
| type setref_##name(type &x) { |
| var_##name = x; |
| return var_##name; |
| } |
| type& createref_##name(type x) { |
| return *new type(x); |
| } |
| type value_##name(type &x) { |
| return x; |
| } |
| %} |
| %enddef |
| |
| // primitive reference variables |
| ref(bool, bool); |
| ref(char, char); |
| ref(unsigned char, unsigned_char); |
| ref(signed char, signed_char); |
| ref(short, short); |
| ref(unsigned short, unsigned_short); |
| ref(int, int); |
| ref(unsigned int, unsigned_int); |
| ref(long, long); |
| ref(unsigned long, unsigned_long); |
| ref(float, float); |
| ref(double, double); |
| ref(long long, long_long); |
| ref(unsigned long long, unsigned_long_long); |
| |
| // class reference variable |
| ref(TestClass, TestClass); |
| |