mirror of https://github.com/swig/swig
Fix Java %interface family of macros
when returning by const pointer reference Closes #1987
This commit is contained in:
parent
499eb5806f
commit
429288fa1c
|
@ -7,6 +7,10 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/
|
|||
Version 4.1.0 (in progress)
|
||||
===========================
|
||||
|
||||
2021-04-27: wsfulton
|
||||
#1987 [Java] Fix %interface family of macros for returning by const
|
||||
pointer reference.
|
||||
|
||||
2021-04-19: olly
|
||||
Fix use of uninitialised variable in the generated code for an
|
||||
empty typecheck typemap, such as the dummy one we include for
|
||||
|
|
|
@ -216,6 +216,7 @@ public class multiple_inheritance_abstract_runme {
|
|||
check(multiple_inheritance_abstract.InputCPtrRefBottom1(b1)!=103+104, "InputCPtrRefBottom1() failed");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefBottom2(b2)!=206+205, "InputCPtrRefBottom2() failed");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefBottom3(b3)!=307+308+309, "InputCPtrRefBottom3() failed");
|
||||
|
||||
// Return pointers
|
||||
check(multiple_inheritance_abstract.MakePtrDerived1_CBase1().cbase1y()!=3, "MakePtrDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakePtrDerived1_CBase2().cbase2()!=4, "MakePtrDerived1_CBase2 failed");
|
||||
|
@ -234,6 +235,15 @@ public class multiple_inheritance_abstract_runme {
|
|||
check(multiple_inheritance_abstract.MakeRefDerived3_CBase1().cbase1y()!=7, "MakeRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeRefDerived3_CBase2().cbase2()!=8, "MakeRefDerived3_CBase2 failed");
|
||||
|
||||
// Return const pointer references
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived1_CBase1().cbase1y()!=3, "MakeConstPtrRefDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived1_CBase2().cbase2()!=4, "MakeConstPtrRefDerived1_CBase2 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived2_CBase1().cbase1y()!=6, "MakeConstPtrRefDerived2_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived2_ABase1().abase1()!=5, "MakeConstPtrRefDerived2_ABase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived3_ABase1().abase1()!=9, "MakeConstPtrRefDerived3_ABase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived3_CBase1().cbase1y()!=7, "MakeConstPtrRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived3_CBase2().cbase2()!=8, "MakeConstPtrRefDerived3_CBase2 failed");
|
||||
|
||||
// Return by value (sliced objects)
|
||||
check(multiple_inheritance_abstract.MakeValDerived1_CBase1().cbase1y()!=1, "MakeValDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeValDerived1_CBase2().cbase2()!=2, "MakeValDerived1_CBase2 failed");
|
||||
|
|
|
@ -217,6 +217,7 @@ public class multiple_inheritance_nspace_runme {
|
|||
check(multiple_inheritance_nspace.InputCPtrRefBottom1(b1)!=103+104, "InputCPtrRefBottom1() failed");
|
||||
check(multiple_inheritance_nspace.InputCPtrRefBottom2(b2)!=206+205, "InputCPtrRefBottom2() failed");
|
||||
check(multiple_inheritance_nspace.InputCPtrRefBottom3(b3)!=307+308+309, "InputCPtrRefBottom3() failed");
|
||||
|
||||
// Return pointers
|
||||
check(multiple_inheritance_nspace.MakePtrDerived1_CBase1().cbase1y()!=3, "MakePtrDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakePtrDerived1_CBase2().cbase2()!=4, "MakePtrDerived1_CBase2 failed");
|
||||
|
@ -235,6 +236,15 @@ public class multiple_inheritance_nspace_runme {
|
|||
check(multiple_inheritance_nspace.MakeRefDerived3_CBase1().cbase1y()!=7, "MakeRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeRefDerived3_CBase2().cbase2()!=8, "MakeRefDerived3_CBase2 failed");
|
||||
|
||||
// Return const pointer references
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived1_CBase1().cbase1y()!=3, "MakeConstPtrRefDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived1_CBase2().cbase2()!=4, "MakeConstPtrRefDerived1_CBase2 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived2_CBase1().cbase1y()!=6, "MakeConstPtrRefDerived2_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived2_ABase1().abase1()!=5, "MakeConstPtrRefDerived2_ABase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived3_ABase1().abase1()!=9, "MakeConstPtrRefDerived3_ABase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived3_CBase1().cbase1y()!=7, "MakeConstPtrRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived3_CBase2().cbase2()!=8, "MakeConstPtrRefDerived3_CBase2 failed");
|
||||
|
||||
// Return by value (sliced objects)
|
||||
check(multiple_inheritance_nspace.MakeValDerived1_CBase1().cbase1y()!=1, "MakeValDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeValDerived1_CBase2().cbase2()!=2, "MakeValDerived1_CBase2 failed");
|
||||
|
|
|
@ -301,6 +301,15 @@ public class multiple_inheritance_shared_ptr_runme {
|
|||
check(multiple_inheritance_shared_ptr.MakeRefDerived3_CBase1().cbase1y()!=7, "MakeRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeRefDerived3_CBase2().cbase2()!=8, "MakeRefDerived3_CBase2 failed");
|
||||
|
||||
// Return const pointer references
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived1_CBase1().cbase1y()!=3, "MakeConstPtrRefDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived1_CBase2().cbase2()!=4, "MakeConstPtrRefDerived1_CBase2 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived2_CBase1().cbase1y()!=6, "MakeConstPtrRefDerived2_CBase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived2_ABase1().abase1()!=5, "MakeConstPtrRefDerived2_ABase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived3_ABase1().abase1()!=9, "MakeConstPtrRefDerived3_ABase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived3_CBase1().cbase1y()!=7, "MakeConstPtrRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived3_CBase2().cbase2()!=8, "MakeConstPtrRefDerived3_CBase2 failed");
|
||||
|
||||
// Return by value (sliced objects)
|
||||
check(multiple_inheritance_shared_ptr.MakeValDerived1_CBase1().cbase1y()!=1, "MakeValDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeValDerived1_CBase2().cbase2()!=2, "MakeValDerived1_CBase2 failed");
|
||||
|
|
|
@ -224,6 +224,7 @@ public class multiple_inheritance_abstract_runme {
|
|||
check(multiple_inheritance_abstract.InputCPtrRefBottom1(b1)!=103+104, "InputCPtrRefBottom1() failed");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefBottom2(b2)!=206+205, "InputCPtrRefBottom2() failed");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefBottom3(b3)!=307+308+309, "InputCPtrRefBottom3() failed");
|
||||
|
||||
// Return pointers
|
||||
check(multiple_inheritance_abstract.MakePtrDerived1_CBase1().cbase1y()!=3, "MakePtrDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakePtrDerived1_CBase2().cbase2()!=4, "MakePtrDerived1_CBase2 failed");
|
||||
|
@ -242,6 +243,15 @@ public class multiple_inheritance_abstract_runme {
|
|||
check(multiple_inheritance_abstract.MakeRefDerived3_CBase1().cbase1y()!=7, "MakeRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeRefDerived3_CBase2().cbase2()!=8, "MakeRefDerived3_CBase2 failed");
|
||||
|
||||
// Return const pointer references
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived1_CBase1().cbase1y()!=3, "MakeConstPtrRefDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived1_CBase2().cbase2()!=4, "MakeConstPtrRefDerived1_CBase2 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived2_CBase1().cbase1y()!=6, "MakeConstPtrRefDerived2_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived2_ABase1().abase1()!=5, "MakeConstPtrRefDerived2_ABase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived3_ABase1().abase1()!=9, "MakeConstPtrRefDerived3_ABase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived3_CBase1().cbase1y()!=7, "MakeConstPtrRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeConstPtrRefDerived3_CBase2().cbase2()!=8, "MakeConstPtrRefDerived3_CBase2 failed");
|
||||
|
||||
// Return by value (sliced objects)
|
||||
check(multiple_inheritance_abstract.MakeValDerived1_CBase1().cbase1y()!=1, "MakeValDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeValDerived1_CBase2().cbase2()!=2, "MakeValDerived1_CBase2 failed");
|
||||
|
|
|
@ -244,6 +244,15 @@ public class multiple_inheritance_nspace_runme {
|
|||
check(multiple_inheritance_nspace.MakeRefDerived3_CBase1().cbase1y()!=7, "MakeRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeRefDerived3_CBase2().cbase2()!=8, "MakeRefDerived3_CBase2 failed");
|
||||
|
||||
// Return const pointer references
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived1_CBase1().cbase1y()!=3, "MakeConstPtrRefDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived1_CBase2().cbase2()!=4, "MakeConstPtrRefDerived1_CBase2 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived2_CBase1().cbase1y()!=6, "MakeConstPtrRefDerived2_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived2_ABase1().abase1()!=5, "MakeConstPtrRefDerived2_ABase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived3_ABase1().abase1()!=9, "MakeConstPtrRefDerived3_ABase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived3_CBase1().cbase1y()!=7, "MakeConstPtrRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeConstPtrRefDerived3_CBase2().cbase2()!=8, "MakeConstPtrRefDerived3_CBase2 failed");
|
||||
|
||||
// Return by value (sliced objects)
|
||||
check(multiple_inheritance_nspace.MakeValDerived1_CBase1().cbase1y()!=1, "MakeValDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_nspace.MakeValDerived1_CBase2().cbase2()!=2, "MakeValDerived1_CBase2 failed");
|
||||
|
|
|
@ -309,6 +309,15 @@ public class multiple_inheritance_shared_ptr_runme {
|
|||
check(multiple_inheritance_shared_ptr.MakeRefDerived3_CBase1().cbase1y()!=7, "MakeRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeRefDerived3_CBase2().cbase2()!=8, "MakeRefDerived3_CBase2 failed");
|
||||
|
||||
// Return const pointer references
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived1_CBase1().cbase1y()!=3, "MakeConstPtrRefDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived1_CBase2().cbase2()!=4, "MakeConstPtrRefDerived1_CBase2 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived2_CBase1().cbase1y()!=6, "MakeConstPtrRefDerived2_CBase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived2_ABase1().abase1()!=5, "MakeConstPtrRefDerived2_ABase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived3_ABase1().abase1()!=9, "MakeConstPtrRefDerived3_ABase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived3_CBase1().cbase1y()!=7, "MakeConstPtrRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeConstPtrRefDerived3_CBase2().cbase2()!=8, "MakeConstPtrRefDerived3_CBase2 failed");
|
||||
|
||||
// Return by value (sliced objects)
|
||||
check(multiple_inheritance_shared_ptr.MakeValDerived1_CBase1().cbase1y()!=1, "MakeValDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_shared_ptr.MakeValDerived1_CBase2().cbase2()!=2, "MakeValDerived1_CBase2 failed");
|
||||
|
|
|
@ -22,7 +22,7 @@ namespace Space {
|
|||
struct CBase1 {
|
||||
virtual void cbase1x() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
virtual int cbase1y() {
|
||||
return 1;
|
||||
}
|
||||
|
@ -306,6 +306,36 @@ namespace Space {
|
|||
return d;
|
||||
}
|
||||
|
||||
// Return const pointer references
|
||||
CBase1 *const&MakeConstPtrRefDerived1_CBase1() {
|
||||
static CBase1 *d = new Derived1();
|
||||
return d;
|
||||
}
|
||||
CBase2 *const&MakeConstPtrRefDerived1_CBase2() {
|
||||
static CBase2 *const& d = new Derived1();
|
||||
return d;
|
||||
}
|
||||
CBase1 *const&MakeConstPtrRefDerived2_CBase1() {
|
||||
static CBase1 *const& d = new Derived2();
|
||||
return d;
|
||||
}
|
||||
ABase1 *const&MakeConstPtrRefDerived2_ABase1() {
|
||||
static ABase1 *const& d = new Derived2();
|
||||
return d;
|
||||
}
|
||||
ABase1 *const&MakeConstPtrRefDerived3_ABase1() {
|
||||
static ABase1 *const& d = new Derived3();
|
||||
return d;
|
||||
}
|
||||
CBase1 *const&MakeConstPtrRefDerived3_CBase1() {
|
||||
static CBase1 *const& d = new Derived3();
|
||||
return d;
|
||||
}
|
||||
CBase2 *const&MakeConstPtrRefDerived3_CBase2() {
|
||||
static CBase2 *const& d = new Derived3();
|
||||
return d;
|
||||
}
|
||||
|
||||
// Return by value (sliced objects)
|
||||
CBase1 MakeValDerived1_CBase1() {
|
||||
return Derived1();
|
||||
|
|
|
@ -31,7 +31,7 @@ namespace Space {
|
|||
struct CBase1 {
|
||||
virtual void cbase1x() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
virtual int cbase1y() {
|
||||
return 1;
|
||||
}
|
||||
|
@ -315,6 +315,36 @@ namespace Space {
|
|||
return d;
|
||||
}
|
||||
|
||||
// Return const pointer references
|
||||
CBase1 *const&MakeConstPtrRefDerived1_CBase1() {
|
||||
static CBase1 *d = new Derived1();
|
||||
return d;
|
||||
}
|
||||
CBase2 *const&MakeConstPtrRefDerived1_CBase2() {
|
||||
static CBase2 *const& d = new Derived1();
|
||||
return d;
|
||||
}
|
||||
CBase1 *const&MakeConstPtrRefDerived2_CBase1() {
|
||||
static CBase1 *const& d = new Derived2();
|
||||
return d;
|
||||
}
|
||||
ABase1 *const&MakeConstPtrRefDerived2_ABase1() {
|
||||
static ABase1 *const& d = new Derived2();
|
||||
return d;
|
||||
}
|
||||
ABase1 *const&MakeConstPtrRefDerived3_ABase1() {
|
||||
static ABase1 *const& d = new Derived3();
|
||||
return d;
|
||||
}
|
||||
CBase1 *const&MakeConstPtrRefDerived3_CBase1() {
|
||||
static CBase1 *const& d = new Derived3();
|
||||
return d;
|
||||
}
|
||||
CBase2 *const&MakeConstPtrRefDerived3_CBase2() {
|
||||
static CBase2 *const& d = new Derived3();
|
||||
return d;
|
||||
}
|
||||
|
||||
// Return by value (sliced objects)
|
||||
CBase1 MakeValDerived1_CBase1() {
|
||||
return Derived1();
|
||||
|
|
|
@ -424,6 +424,36 @@ namespace Space {
|
|||
return d;
|
||||
}
|
||||
|
||||
// Return const pointer references
|
||||
CBase1 *const&MakeConstPtrRefDerived1_CBase1() {
|
||||
static CBase1 *d = new Derived1();
|
||||
return d;
|
||||
}
|
||||
CBase2 *const&MakeConstPtrRefDerived1_CBase2() {
|
||||
static CBase2 *const& d = new Derived1();
|
||||
return d;
|
||||
}
|
||||
CBase1 *const&MakeConstPtrRefDerived2_CBase1() {
|
||||
static CBase1 *const& d = new Derived2();
|
||||
return d;
|
||||
}
|
||||
ABase1 *const&MakeConstPtrRefDerived2_ABase1() {
|
||||
static ABase1 *const& d = new Derived2();
|
||||
return d;
|
||||
}
|
||||
ABase1 *const&MakeConstPtrRefDerived3_ABase1() {
|
||||
static ABase1 *const& d = new Derived3();
|
||||
return d;
|
||||
}
|
||||
CBase1 *const&MakeConstPtrRefDerived3_CBase1() {
|
||||
static CBase1 *const& d = new Derived3();
|
||||
return d;
|
||||
}
|
||||
CBase2 *const&MakeConstPtrRefDerived3_CBase2() {
|
||||
static CBase2 *const& d = new Derived3();
|
||||
return d;
|
||||
}
|
||||
|
||||
// Return by value (sliced objects)
|
||||
CBase1 MakeValDerived1_CBase1() {
|
||||
return Derived1();
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
}
|
||||
%typemap(javaout) CTYPE *const& {
|
||||
long cPtr = $jnicall;
|
||||
return (cPtr == 0) ? null : ($javainterfacename)new $javaclassname(cPtr, $owner);
|
||||
return (cPtr == 0) ? null : ($*javainterfacename)new $*javaclassname(cPtr, $owner);
|
||||
}
|
||||
|
||||
%typemap(javadirectorin) CTYPE "($&javainterfacename)new $&javaclassname($jniinput, true)"
|
||||
|
|
Loading…
Reference in New Issue