/trunk/Examples/test-suite/reference_global_vars.i
Swig | 65 lines | 57 code | 8 blank | 0 comment | 0 complexity | 369a6171dd7b1afba290a11135d7da28 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- // 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);