Add test for notderived attribute in csbase/javabase typemap

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11201 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2009-05-01 06:26:42 +00:00
commit 083d106bc4
3 changed files with 43 additions and 0 deletions

View file

@ -0,0 +1,24 @@
using System;
using inherit_target_languageNamespace;
public class inherit_target_language_runme {
public static void Main() {
new Derived1().targetLanguageBaseMethod();
new Derived2().targetLanguageBaseMethod();
new MultipleDerived1().targetLanguageBaseMethod();
new MultipleDerived2().targetLanguageBaseMethod();
new MultipleDerived3().f();
new MultipleDerived4().g();
BaseX baseX = new BaseX();
baseX.basex();
baseX.targetLanguageBase2Method();
DerivedX derivedX = new DerivedX();
derivedX.basex();
derivedX.derivedx();
derivedX.targetLanguageBase2Method();
}
}

View file

@ -12,10 +12,12 @@
using System; using System;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
public class TargetLanguageBase { public virtual void targetLanguageBaseMethod() {} }; public class TargetLanguageBase { public virtual void targetLanguageBaseMethod() {} };
public class TargetLanguageBase2 { public virtual void targetLanguageBase2Method() {} };
%} %}
%pragma(java) moduleimports=%{ %pragma(java) moduleimports=%{
class TargetLanguageBase { public void targetLanguageBaseMethod() {} }; class TargetLanguageBase { public void targetLanguageBaseMethod() {} };
class TargetLanguageBase2 { public void targetLanguageBase2Method() {} };
%} %}
@ -61,3 +63,11 @@ struct MultipleDerived3 : MBase3a, MBase3b {};
struct MultipleDerived4 : MBase4a, MBase4b {}; struct MultipleDerived4 : MBase4a, MBase4b {};
%} %}
// Replace a C++ base, but only classes that do not have a C++ base
%typemap(csbase, notderived="1") SWIGTYPE "TargetLanguageBase2"
%inline %{
struct BaseX { virtual ~BaseX() {}; void basex() {} };
struct DerivedX : BaseX { void derivedx() {} };
%}

View file

@ -21,6 +21,15 @@ public class inherit_target_language_runme {
new MultipleDerived2().targetLanguageBaseMethod(); new MultipleDerived2().targetLanguageBaseMethod();
new MultipleDerived3().f(); new MultipleDerived3().f();
new MultipleDerived4().g(); new MultipleDerived4().g();
BaseX baseX = new BaseX();
baseX.basex();
baseX.targetLanguageBase2Method();
DerivedX derivedX = new DerivedX();
derivedX.basex();
derivedX.derivedx();
derivedX.targetLanguageBase2Method();
} }
} }