/* File: template_basic.i */ %module "template_basic" %warnfilter(SWIGWARN_RUBY_WRONG_NAME) vector; /* Ruby, wrong class name */ %warnfilter(SWIGWARN_RUBY_WRONG_NAME) vector; /* Ruby, wrong class name */ %warnfilter(SWIGWARN_RUBY_WRONG_NAME) vector; /* Ruby, wrong class name */ /* Let's just grab the original header file here */ %{ #ifdef max #undef max #endif %} %inline %{ template T max(const T a, const T b) { return a>b ? a : b; } template class vector { T *v; int sz; public: vector(int _sz) { v = new T[_sz]; sz = _sz; } T &get(int index) { return v[index]; } void set(int index, T &val) { v[index] = val; } // This really doesn't do anything except test const handling void testconst(const T x) { } }; %} /* Now instantiate some specific template declarations */ %template(maxint) max; %template(maxdouble) max; %template(vecint) vector; %template(vecdouble) vector; /* Now try to break constness */ %template(maxintp) max; %template(vecintp) vector;