%module smart_pointer_inherit #ifdef SWIGCSHARP // Test that the override is removed in the smart pointer for custom method modifiers %csmethodmodifiers hi::Derived::value3 "/*csmethodmodifiers*/ public override"; #endif %inline %{ namespace hi { struct Base { Base(int i) : val(i) {} virtual ~Base() { } virtual int value() = 0; virtual int value2() { return val; } virtual int value3() { return val; } int valuehide() { return val; } int val; }; struct Derived : Base { Derived(int i) : Base(i) {} virtual int value() { return val; } virtual int value3() { return Base::value3(); } int valuehide() { return -1; } }; template <typename T> struct SmartPtr { SmartPtr(T *t) : ptr(t) {} T * operator->() const { return ptr; } private: T *ptr; }; } %} %template(SmartBase) hi::SmartPtr<hi::Base>; %template(SmartDerived) hi::SmartPtr<hi::Derived>; %include std_vector.i %inline %{ class ItkLevelSetNodeUS2 { int x; }; %} #ifdef SWIGCSHARP // Get rid of C# compiler warnings. // Really the itkVectorContainerUILSNUS2_Pointer class should be manually modified to contain the same %extend methods that are in std_vector.i %csmethodmodifiers std::vector<ItkLevelSetNodeUS2>::getitemcopy "protected" %csmethodmodifiers std::vector<ItkLevelSetNodeUS2>::getitem "protected" %csmethodmodifiers std::vector<ItkLevelSetNodeUS2>::setitem "protected" %csmethodmodifiers std::vector<ItkLevelSetNodeUS2>::size "protected" %csmethodmodifiers std::vector<ItkLevelSetNodeUS2>::capacity "protected" %csmethodmodifiers std::vector<ItkLevelSetNodeUS2>::reserve "protected" #endif %template(VectorLevelSetNodeUS2) std::vector< ItkLevelSetNodeUS2 >; %inline %{ class ItkVectorContainerUILSNUS2 : public std::vector< ItkLevelSetNodeUS2 > { }; class ItkVectorContainerUILSNUS2_Pointer { public: ItkVectorContainerUILSNUS2 * operator->() const { static ItkVectorContainerUILSNUS2 instance; return &instance; } }; %}
Generated by dwww version 1.15 on Tue Jul 2 00:21:02 CEST 2024.