interface feature support for const ref pointers (used by the STL)
Also interface feature return by value fixes
This commit is contained in:
parent
5b86e2af13
commit
e8907132cc
4 changed files with 134 additions and 30 deletions
|
|
@ -118,6 +118,20 @@ public class multiple_inheritance_abstract_runme {
|
|||
check(multiple_inheritance_abstract.InputRefCBase1(cb1)!=1, "InputRefCBase1(), CBase1 as a parameter failed in multiple_inheritance_abstract");
|
||||
check(multiple_inheritance_abstract.InputRefCBase2(cb2)!=2, "InputRefCBase2(), CBase2 as a parameter failed in multiple_inheritance_abstract");
|
||||
|
||||
//Const reference pointer parameters
|
||||
//Test ABase1 as a parameter
|
||||
check(multiple_inheritance_abstract.InputCPtrRefABase1(d2)!=5, "InputCPtrRefABase1() through Derived2 as a parameter failed in multiple_inheritance_abstract");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefABase1(d3)!=9, "InputCPtrRefABase1() through Derived3 as a parameter failed in multiple_inheritance_abstract");
|
||||
|
||||
//Test CBase1 CBase2 as parameters
|
||||
check(multiple_inheritance_abstract.InputCPtrRefCBase1(d1)!=3, "InputCPtrRefCBase1(), Derived1 as a parameter failed in multiple_inheritance_abstract");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefCBase1(d2)!=6, "InputCPtrRefCBase1(), Derived2 as a parameter failed in multiple_inheritance_abstract");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefCBase1(d3)!=7, "InputCPtrRefCBase1(), Derived3 as a parameter failed in multiple_inheritance_abstract");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefCBase2(d3)!=8, "InputCPtrRefCBase2(), Derived3 as a parameter failed in multiple_inheritance_abstract");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefCBase2(d1)!=4, "InputCPtrRefCBase2(), Derived1 as a parameter failed in multiple_inheritance_abstract");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefCBase1(cb1)!=1, "InputCPtrRefCBase1(), CBase1 as a parameter failed in multiple_inheritance_abstract");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefCBase2(cb2)!=2, "InputCPtrRefCBase2(), CBase2 as a parameter failed in multiple_inheritance_abstract");
|
||||
|
||||
//Derived classes as parameters
|
||||
check(multiple_inheritance_abstract.InputValDerived1(d1)!=3+4, "InputValDerived1() failed");
|
||||
check(multiple_inheritance_abstract.InputValDerived2(d2)!=6+5, "InputValDerived2() failed");
|
||||
|
|
@ -131,13 +145,34 @@ public class multiple_inheritance_abstract_runme {
|
|||
check(multiple_inheritance_abstract.InputPtrDerived2(d2)!=6+5, "InputPtrDerived2() failed");
|
||||
check(multiple_inheritance_abstract.InputPtrDerived3(d3)!=7+8+9, "InputPtrDerived3() failed");
|
||||
|
||||
// Factory functions
|
||||
check(multiple_inheritance_abstract.MakeDerived1_CBase1().cbase1y()!=3, "MakeDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeDerived1_CBase2().cbase2()!=4, "MakeDerived1_CBase2 failed");
|
||||
check(multiple_inheritance_abstract.MakeDerived2_CBase1().cbase1y()!=6, "MakeDerived2_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeDerived2_ABase1().abase1()!=5, "MakeDerived2_ABase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeDerived3_ABase1().abase1()!=9, "MakeDerived3_ABase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeDerived3_CBase1().cbase1y()!=7, "MakeDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeDerived3_CBase2().cbase2()!=8, "MakeDerived3_CBase2 failed");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefDerived1(d1)!=3+4, "InputCPtrRefDerived1() failed");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefDerived2(d2)!=6+5, "InputCPtrRefDerived2() failed");
|
||||
check(multiple_inheritance_abstract.InputCPtrRefDerived3(d3)!=7+8+9, "InputCPtrRefDerived3() 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");
|
||||
check(multiple_inheritance_abstract.MakePtrDerived2_CBase1().cbase1y()!=6, "MakePtrDerived2_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakePtrDerived2_ABase1().abase1()!=5, "MakePtrDerived2_ABase1 failed");
|
||||
check(multiple_inheritance_abstract.MakePtrDerived3_ABase1().abase1()!=9, "MakePtrDerived3_ABase1 failed");
|
||||
check(multiple_inheritance_abstract.MakePtrDerived3_CBase1().cbase1y()!=7, "MakePtrDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakePtrDerived3_CBase2().cbase2()!=8, "MakePtrDerived3_CBase2 failed");
|
||||
|
||||
// Return references
|
||||
check(multiple_inheritance_abstract.MakeRefDerived1_CBase1().cbase1y()!=3, "MakeRefDerived1_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeRefDerived1_CBase2().cbase2()!=4, "MakeRefDerived1_CBase2 failed");
|
||||
check(multiple_inheritance_abstract.MakeRefDerived2_CBase1().cbase1y()!=6, "MakeRefDerived2_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeRefDerived2_ABase1().abase1()!=5, "MakeRefDerived2_ABase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeRefDerived3_ABase1().abase1()!=9, "MakeRefDerived3_ABase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeRefDerived3_CBase1().cbase1y()!=7, "MakeRefDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeRefDerived3_CBase2().cbase2()!=8, "MakeRefDerived3_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");
|
||||
check(multiple_inheritance_abstract.MakeValDerived2_CBase1().cbase1y()!=1, "MakeValDerived2_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeValDerived3_CBase1().cbase1y()!=1, "MakeValDerived3_CBase1 failed");
|
||||
check(multiple_inheritance_abstract.MakeValDerived3_CBase2().cbase2()!=2, "MakeValDerived3_CBase2 failed");
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,6 +111,16 @@ DECLARE_INTERFACE_RENAME(CBase2, CBase2, SWIGTYPE_CBase2)
|
|||
return rcb2.cbase2();
|
||||
}
|
||||
|
||||
int InputCPtrRefABase1(ABase1 *const& pab1) {
|
||||
return pab1->abase1();
|
||||
}
|
||||
int InputCPtrRefCBase1(CBase1 *const& pcb1) {
|
||||
return pcb1->cbase1y();
|
||||
}
|
||||
int InputCPtrRefCBase2(CBase2 *const& pcb2) {
|
||||
return pcb2->cbase2();
|
||||
}
|
||||
|
||||
// Derived classes as input
|
||||
int InputValDerived1(Derived1 d) {
|
||||
return d.cbase1y() + d.cbase2();
|
||||
|
|
@ -142,26 +152,84 @@ DECLARE_INTERFACE_RENAME(CBase2, CBase2, SWIGTYPE_CBase2)
|
|||
return d->cbase1y() + d->cbase2() + d->abase1();
|
||||
}
|
||||
|
||||
// Factory functions for more return value testing
|
||||
CBase1 *MakeDerived1_CBase1() {
|
||||
int InputCPtrRefDerived1(Derived1 *const& d) {
|
||||
return d->cbase1y() + d->cbase2();
|
||||
}
|
||||
int InputCPtrRefDerived2(Derived2 *const& d) {
|
||||
return d->cbase1y() + d->abase1();
|
||||
}
|
||||
int InputCPtrRefDerived3(Derived3 *const& d) {
|
||||
return d->cbase1y() + d->cbase2() + d->abase1();
|
||||
}
|
||||
|
||||
// Return pointers
|
||||
CBase1 *MakePtrDerived1_CBase1() {
|
||||
return new Derived1();
|
||||
}
|
||||
CBase2 *MakeDerived1_CBase2() {
|
||||
CBase2 *MakePtrDerived1_CBase2() {
|
||||
return new Derived1();
|
||||
}
|
||||
CBase1 *MakeDerived2_CBase1() {
|
||||
CBase1 *MakePtrDerived2_CBase1() {
|
||||
return new Derived2();
|
||||
}
|
||||
ABase1 *MakeDerived2_ABase1() {
|
||||
ABase1 *MakePtrDerived2_ABase1() {
|
||||
return new Derived2();
|
||||
}
|
||||
ABase1 *MakeDerived3_ABase1() {
|
||||
ABase1 *MakePtrDerived3_ABase1() {
|
||||
return new Derived3();
|
||||
}
|
||||
CBase1 *MakeDerived3_CBase1() {
|
||||
CBase1 *MakePtrDerived3_CBase1() {
|
||||
return new Derived3();
|
||||
}
|
||||
CBase2 *MakeDerived3_CBase2() {
|
||||
CBase2 *MakePtrDerived3_CBase2() {
|
||||
return new Derived3();
|
||||
}
|
||||
|
||||
// Return references
|
||||
CBase1 &MakeRefDerived1_CBase1() {
|
||||
static Derived1 d;
|
||||
return d;
|
||||
}
|
||||
CBase2 &MakeRefDerived1_CBase2() {
|
||||
static Derived1 d;
|
||||
return d;
|
||||
}
|
||||
CBase1 &MakeRefDerived2_CBase1() {
|
||||
static Derived2 d;
|
||||
return d;
|
||||
}
|
||||
ABase1 &MakeRefDerived2_ABase1() {
|
||||
static Derived2 d;
|
||||
return d;
|
||||
}
|
||||
ABase1 &MakeRefDerived3_ABase1() {
|
||||
static Derived3 d;
|
||||
return d;
|
||||
}
|
||||
CBase1 &MakeRefDerived3_CBase1() {
|
||||
static Derived3 d;
|
||||
return d;
|
||||
}
|
||||
CBase2 &MakeRefDerived3_CBase2() {
|
||||
static Derived3 d;
|
||||
return d;
|
||||
}
|
||||
|
||||
// Return by value (sliced objects)
|
||||
CBase1 MakeValDerived1_CBase1() {
|
||||
return Derived1();
|
||||
}
|
||||
CBase2 MakeValDerived1_CBase2() {
|
||||
return Derived1();
|
||||
}
|
||||
CBase1 MakeValDerived2_CBase1() {
|
||||
return Derived2();
|
||||
}
|
||||
CBase1 MakeValDerived3_CBase1() {
|
||||
return Derived3();
|
||||
}
|
||||
CBase2 MakeValDerived3_CBase2() {
|
||||
return Derived3();
|
||||
}
|
||||
|
||||
%}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue