%module li_boost_shared_ptr_template // First test- Bug 3333549 - using INTEGER typedef in %shared_ptr before typedef defined %{ #include <boost/shared_ptr.hpp> #ifdef SWIGR // remove naming conflict with R symbol #define INTEGER MYINTEGER #endif typedef int INTEGER; template <class T> class Base { public: virtual T bar() {return 1;} virtual ~Base() {} }; template <class T> class Derived : public Base<T> { public: virtual T bar() {return 2;} }; INTEGER bar_getter(Base<INTEGER>& foo) { return foo.bar(); } %} #if defined(SWIGJAVA) || defined(SWIGCSHARP) || defined(SWIGPYTHON) || defined(SWIGD) || defined(SWIGOCTAVE) || defined(SWIGRUBY) #define SHARED_PTR_WRAPPERS_IMPLEMENTED #endif #if defined(SHARED_PTR_WRAPPERS_IMPLEMENTED) %include <boost_shared_ptr.i> %shared_ptr(Base<INTEGER>) %shared_ptr(Derived<INTEGER>) #endif typedef int INTEGER; template <class T> class Base { public: virtual T bar() {return 1;} }; template <class T> class Derived : public Base<T> { public: virtual T bar() {return 2;} }; INTEGER bar_getter(Base<INTEGER>& foo) { return foo.bar(); } %template(BaseINTEGER) Base<INTEGER>; %template(DerivedINTEGER) Derived<INTEGER>; // 2nd test - templates with default template parameters #if defined(SHARED_PTR_WRAPPERS_IMPLEMENTED) %shared_ptr(Space::BaseDefault<short, int>) %shared_ptr(Space::DerivedDefault<short>) %shared_ptr(Space::DerivedDefault2<short>) #endif %inline %{ namespace Space { typedef int INT_TYPEDEF; template <class X, class T = int> class BaseDefault { public: virtual T bar2() {return 3;} virtual ~BaseDefault() {} }; template <class X, class T = int> class DerivedDefault : public BaseDefault<X, T> { public: virtual T bar2() {return 4;} }; template <class X> class DerivedDefault2 : public BaseDefault<X> { public: virtual int bar2() {return 4;} }; int bar2_getter(BaseDefault<short>& foo) { return foo.bar2(); } } %} %template(BaseDefaultInt) Space::BaseDefault<short>; %template(DerivedDefaultInt) Space::DerivedDefault<short>; %template(DerivedDefaultInt2) Space::DerivedDefault2<short>;
Generated by dwww version 1.15 on Tue Jul 2 00:34:17 CEST 2024.