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
parent 410f7d5913
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.Runtime.InteropServices;
public class TargetLanguageBase { public virtual void targetLanguageBaseMethod() {} };
public class TargetLanguageBase2 { public virtual void targetLanguageBase2Method() {} };
%}
%pragma(java) moduleimports=%{
class TargetLanguageBase { public void targetLanguageBaseMethod() {} };
class TargetLanguageBase2 { public void targetLanguageBase2Method() {} };
%}
@ -61,3 +63,11 @@ struct MultipleDerived3 : MBase3a, MBase3b {};
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 MultipleDerived3().f();
new MultipleDerived4().g();
BaseX baseX = new BaseX();
baseX.basex();
baseX.targetLanguageBase2Method();
DerivedX derivedX = new DerivedX();
derivedX.basex();
derivedX.derivedx();
derivedX.targetLanguageBase2Method();
}
}