blob: 8c806599b71590b45896b6fe2835187211b3a80d [file] [log] [blame]
// 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);