/* File : example.i */ %module "template_explicit" %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 */ // #pragma is used for warnings that are not associated to // specific nodes. #pragma SWIG nowarn=-SWIGWARN_PARSE_EXPLICIT_TEMPLATE /* 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) { } }; /* Explicit instantiation. SWIG should ignore */ template class vector; template class vector; template class vector; %} /* 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;