Add in missing wrappers for friend functions for some target languages
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12588 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
12e1ce4d1a
commit
f24d1b99b1
4 changed files with 103 additions and 0 deletions
|
|
@ -5,3 +5,7 @@ See the RELEASENOTES file for a summary of changes in each release.
|
||||||
Version 2.0.4 (in progress)
|
Version 2.0.4 (in progress)
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
|
2011-04-01: wsfulton
|
||||||
|
Add in missing wrappers for friend functions for some target languages, mostly
|
||||||
|
the non-scripting languages like Java and C#.
|
||||||
|
|
||||||
|
|
|
||||||
43
Examples/test-suite/csharp/friends_runme.cs
Normal file
43
Examples/test-suite/csharp/friends_runme.cs
Normal file
|
|
@ -0,0 +1,43 @@
|
||||||
|
using System;
|
||||||
|
using friendsNamespace;
|
||||||
|
|
||||||
|
public class friends_runme {
|
||||||
|
public static void Main() {
|
||||||
|
A a = new A(2);
|
||||||
|
|
||||||
|
if (friends.get_val1(a) != 2)
|
||||||
|
throw new Exception("failed");
|
||||||
|
if (friends.get_val2(a) != 4)
|
||||||
|
throw new Exception("failed");
|
||||||
|
if (friends.get_val3(a) != 6)
|
||||||
|
throw new Exception("failed");
|
||||||
|
|
||||||
|
// nice overload working fine
|
||||||
|
if (friends.get_val1(1,2,3) != 1)
|
||||||
|
throw new Exception("failed");
|
||||||
|
|
||||||
|
B b = new B(3);
|
||||||
|
|
||||||
|
// David's case
|
||||||
|
if (friends.mix(a,b) != 5)
|
||||||
|
throw new Exception("failed");
|
||||||
|
|
||||||
|
D_d di = new D_d(2);
|
||||||
|
D_d dd = new D_d(3.3);
|
||||||
|
|
||||||
|
// incredible template overloading working just fine
|
||||||
|
if (friends.get_val1(di) != 2)
|
||||||
|
throw new Exception("failed");
|
||||||
|
if (friends.get_val1(dd) != 3.3)
|
||||||
|
throw new Exception("failed");
|
||||||
|
|
||||||
|
friends.set(di, 4);
|
||||||
|
friends.set(dd, 1.3);
|
||||||
|
|
||||||
|
if (friends.get_val1(di) != 4)
|
||||||
|
throw new Exception("failed");
|
||||||
|
if (friends.get_val1(dd) != 1.3)
|
||||||
|
throw new Exception("failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
53
Examples/test-suite/java/friends_runme.java
Normal file
53
Examples/test-suite/java/friends_runme.java
Normal file
|
|
@ -0,0 +1,53 @@
|
||||||
|
import friends.*;
|
||||||
|
|
||||||
|
public class friends_runme {
|
||||||
|
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
System.loadLibrary("friends");
|
||||||
|
} catch (UnsatisfiedLinkError e) {
|
||||||
|
System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String argv[]) throws Throwable
|
||||||
|
{
|
||||||
|
A a = new A(2);
|
||||||
|
|
||||||
|
if (friends.get_val1(a) != 2)
|
||||||
|
throw new RuntimeException("failed");
|
||||||
|
if (friends.get_val2(a) != 4)
|
||||||
|
throw new RuntimeException("failed");
|
||||||
|
if (friends.get_val3(a) != 6)
|
||||||
|
throw new RuntimeException("failed");
|
||||||
|
|
||||||
|
// nice overload working fine
|
||||||
|
if (friends.get_val1(1,2,3) != 1)
|
||||||
|
throw new RuntimeException("failed");
|
||||||
|
|
||||||
|
B b = new B(3);
|
||||||
|
|
||||||
|
// David's case
|
||||||
|
if (friends.mix(a,b) != 5)
|
||||||
|
throw new RuntimeException("failed");
|
||||||
|
|
||||||
|
D_d di = new D_d(2);
|
||||||
|
D_d dd = new D_d(3.3);
|
||||||
|
|
||||||
|
// incredible template overloading working just fine
|
||||||
|
if (friends.get_val1(di) != 2)
|
||||||
|
throw new RuntimeException("failed");
|
||||||
|
if (friends.get_val1(dd) != 3.3)
|
||||||
|
throw new RuntimeException("failed");
|
||||||
|
|
||||||
|
friends.set(di, 4);
|
||||||
|
friends.set(dd, 1.3);
|
||||||
|
|
||||||
|
if (friends.get_val1(di) != 4)
|
||||||
|
throw new RuntimeException("failed");
|
||||||
|
if (friends.get_val1(dd) != 1.3)
|
||||||
|
throw new RuntimeException("failed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -1044,7 +1044,10 @@ int Language::functionHandler(Node *n) {
|
||||||
if (isstatic) {
|
if (isstatic) {
|
||||||
staticmemberfunctionHandler(n);
|
staticmemberfunctionHandler(n);
|
||||||
} else if (isfriend) {
|
} else if (isfriend) {
|
||||||
|
int oldInClass = InClass;
|
||||||
|
InClass = 0;
|
||||||
globalfunctionHandler(n);
|
globalfunctionHandler(n);
|
||||||
|
InClass = oldInClass;
|
||||||
} else {
|
} else {
|
||||||
Node *explicit_n = 0;
|
Node *explicit_n = 0;
|
||||||
if (directorsEnabled() && is_member_director(CurrentClass, n) && !extraDirectorProtectedCPPMethodsRequired()) {
|
if (directorsEnabled() && is_member_director(CurrentClass, n) && !extraDirectorProtectedCPPMethodsRequired()) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue