%module destructor_methodmodifiers // This test changes the proxy classes so that they cannot be inherited from in the target language // Previously the %csmethodmodifiers, %dmethodmodifiers, %javamethodmodifiers on destructors were ignored // Now they can control the dispose/Dispose/delete method modifiers #if defined(SWIGCSHARP) // remove all use of protected and virtual keywords %typemap(csclassmodifiers) NotForDeriving1, NotForDeriving2 "public sealed class" %csmethodmodifiers NotForDeriving1::~NotForDeriving1 "public /*not virtual nor override*/"; %csmethodmodifiers NotForDeriving2::~NotForDeriving2 "public /*not virtual nor override*/"; // remove protected keyword to remove compiler warning %typemap(csbody) NotForDeriving1, NotForDeriving2 %{ private global::System.Runtime.InteropServices.HandleRef swigCPtr; private /*protected*/ bool swigCMemOwn; internal $csclassname(global::System.IntPtr cPtr, bool cMemoryOwn) { swigCMemOwn = cMemoryOwn; swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr); } internal static global::System.Runtime.InteropServices.HandleRef getCPtr($csclassname obj) { return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr; } %} #elif defined(SWIGD) %typemap(dclassmodifiers) NotForDeriving1, NotForDeriving2 "final class" %dmethodmodifiers NotForDeriving1::~NotForDeriving1 "public final"; %dmethodmodifiers NotForDeriving2::~NotForDeriving2 "public final"; #elif defined(SWIGJAVA) %typemap(javaclassmodifiers) NotForDeriving1, NotForDeriving2 "public final class" %javamethodmodifiers NotForDeriving1::~NotForDeriving1 "public synchronized final"; %javamethodmodifiers NotForDeriving2::~NotForDeriving2 "public synchronized final"; #endif %inline %{ //#include <iostream> struct NotForDeriving1 { void notvirtual() {} ~NotForDeriving1() { // std::cout << "~NotForDeriving1 called" << std::endl; } }; struct NotForDeriving2 { void notvirtual() {} #if defined(SWIG) %extend { ~NotForDeriving2() { // std::cout << "~NotForDeriving2 called" << std::endl; } } #endif }; %}
Generated by dwww version 1.15 on Tue Jul 2 00:23:18 CEST 2024.