summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt.tools
diff options
context:
space:
mode:
authorSilenio Quarti <silenio>2008-09-11 15:37:06 +0000
committerSilenio Quarti <silenio>2008-09-11 15:37:06 +0000
commitb2a7bd8c826aba183c570104382c1d0f35dd8698 (patch)
tree4269719932ce9e48dbb4294d93f1e986d77110fe /bundles/org.eclipse.swt.tools
parent2d914fcedcb0c63f85a01a949b658b18fdaca68c (diff)
downloadeclipse.platform.swt-b2a7bd8c826aba183c570104382c1d0f35dd8698.tar.gz
eclipse.platform.swt-b2a7bd8c826aba183c570104382c1d0f35dd8698.tar.xz
eclipse.platform.swt-b2a7bd8c826aba183c570104382c1d0f35dd8698.zip
Bug 211796 - Regenerate the PI ("Platform Interface") to better match cocoa (boolean return)
Diffstat (limited to 'bundles/org.eclipse.swt.tools')
-rw-r--r--bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/NativesGenerator.java6
-rw-r--r--bundles/org.eclipse.swt.tools/Mac Generation/org/eclipse/swt/tools/internal/MacGenerator.java24
2 files changed, 17 insertions, 13 deletions
diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/NativesGenerator.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/NativesGenerator.java
index 4b3eab01f5..26bc402b87 100644
--- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/NativesGenerator.java
+++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/NativesGenerator.java
@@ -671,7 +671,11 @@ void generateFunctionCall(JNIMethod method, JNIParameter[] params, JNIType retur
}
if (method.getFlag(Flags.FLAG_CAST)) {
output("((");
- output(returnType.getTypeSignature2(!returnType.equals(returnType64)));
+ String returnCast = returnType.getTypeSignature2(!returnType.equals(returnType64));
+ if (name.equals("objc_msgSend_bool") && returnCast.equals("jboolean")) {
+ returnCast = "BOOL";
+ }
+ output(returnCast);
output(" (*)(");
for (int i = 0; i < params.length; i++) {
if (i != 0) output(", ");
diff --git a/bundles/org.eclipse.swt.tools/Mac Generation/org/eclipse/swt/tools/internal/MacGenerator.java b/bundles/org.eclipse.swt.tools/Mac Generation/org/eclipse/swt/tools/internal/MacGenerator.java
index 94822fb37e..e13995c0b3 100644
--- a/bundles/org.eclipse.swt.tools/Mac Generation/org/eclipse/swt/tools/internal/MacGenerator.java
+++ b/bundles/org.eclipse.swt.tools/Mac Generation/org/eclipse/swt/tools/internal/MacGenerator.java
@@ -217,6 +217,9 @@ void generateMethods(String className, ArrayList methods) {
out("();");
outln();
out("\tOS.objc_msgSend_stret(result, ");
+ } else if (returnNode != null && isBoolean(returnNode)) {
+ out("\treturn ");
+ out("OS.objc_msgSend_bool(");
} else if (returnNode != null && isFloatingPoint(returnNode)) {
out("\treturn ");
if (returnType.equals("float")) out("(float)");
@@ -226,15 +229,13 @@ void generateMethods(String className, ArrayList methods) {
} else {
if (returnNode != null) {
out("\treturn ");
- if (!returnType.equals("boolean")) {
- if ((returnType.equals("int") && returnType64.equals("int")) || !returnType.equals("int")) {
- out("(");
- out(returnType);
- out(")");
- }
- if (returnType.equals("int") && returnType64.equals("int")) {
- out("/*64*/");
- }
+ if ((returnType.equals("int") && returnType64.equals("int")) || !returnType.equals("int")) {
+ out("(");
+ out(returnType);
+ out(")");
+ }
+ if (returnType.equals("int") && returnType64.equals("int")) {
+ out("/*64*/");
}
} else {
out("\t");
@@ -270,9 +271,6 @@ void generateMethods(String className, ArrayList methods) {
}
}
out(")");
- if (returnNode != null && isBoolean(returnNode)) {
- out(" != 0");
- }
out(";");
outln();
if (returnNode != null && isObject(returnNode)) {
@@ -1030,6 +1028,8 @@ String buildSend(Node method, boolean tags, boolean only64) {
buffer.append(" result, ");
} else if (returnNode != null && isFloatingPoint(returnNode)) {
buffer.append("double objc_msgSend_fpret(");
+ } else if (returnNode != null && isBoolean(returnNode)) {
+ buffer.append("boolean objc_msgSend_bool(");
} else {
if (only64) {
buffer.append("long");