Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/ReflectParameter.java')
-rw-r--r--bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/ReflectParameter.java102
1 files changed, 102 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/ReflectParameter.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/ReflectParameter.java
new file mode 100644
index 0000000000..1ec4593e22
--- /dev/null
+++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/ReflectParameter.java
@@ -0,0 +1,102 @@
+package org.eclipse.swt.tools.internal;
+
+import java.io.File;
+
+public class ReflectParameter extends ReflectItem implements JNIParameter {
+ ReflectMethod method;
+ int parameter;
+
+public ReflectParameter(ReflectMethod method, int parameter) {
+ this.method = method;
+ this.parameter = parameter;
+}
+
+public String getCast() {
+ String cast = ((String)getParam("cast")).trim();
+ if (cast.length() > 0) {
+ if (!cast.startsWith("(")) cast = "(" + cast;
+ if (!cast.endsWith(")")) cast = cast + ")";
+ }
+ return cast;
+}
+
+public String getMetaData() {
+ String className = method.getDeclaringClass().getSimpleName();
+ String key = className + "_" + JNIGenerator.getFunctionName(method) + "_" + parameter;
+ MetaData metaData = method.declaringClass.metaData;
+ String value = metaData.getMetaData(key, null);
+ if (value == null) {
+ key = className + "_" + method.getName() + "_" + parameter;
+ value = metaData.getMetaData(key, null);
+ }
+ /*
+ * Support for 64 bit port.
+ */
+ if (value == null) {
+ JNIType[] paramTypes = method.getParameterTypes();
+ if (ReflectItem.convertTo32Bit(paramTypes, true)) {
+ key = className + "_" + JNIGenerator.getFunctionName(method, paramTypes) + "_" + parameter;
+ value = metaData.getMetaData(key, null);
+ }
+ if (value == null) {
+ paramTypes = method.getParameterTypes();
+ if (ReflectItem.convertTo32Bit(paramTypes, false)) {
+ key = className + "_" + JNIGenerator.getFunctionName(method, paramTypes) + "_" + parameter;
+ value = metaData.getMetaData(key, null);
+ }
+ }
+ }
+ /*
+ * Support for lock.
+ */
+ if (value == null && method.getName().startsWith("_")) {
+ key = className + "_" + JNIGenerator.getFunctionName(method).substring(2) + "_" + parameter;
+ value = metaData.getMetaData(key, null);
+ if (value == null) {
+ key = className + "_" + method.getName().substring(1) + "_" + parameter;
+ value = metaData.getMetaData(key, null);
+ }
+ }
+ if (value == null) value = "";
+ return value;
+}
+
+public JNIMethod getMethod() {
+ return method;
+}
+
+public JNIClass getTypeClass() {
+ ReflectType type = (ReflectType)getType();
+ ReflectClass declaringClass = method.declaringClass;
+ String sourcePath = declaringClass.sourcePath;
+ sourcePath = new File(sourcePath).getParent() + "/" + type.getSimpleName() + ".java";
+ return new ReflectClass(type.clazz, declaringClass.metaData, sourcePath);
+}
+
+public JNIType getType() {
+ return method.getParameterTypes()[parameter];
+}
+
+public JNIType getType64() {
+ return method.getParameterTypes64()[parameter];
+}
+
+public int getParameter() {
+ return parameter;
+}
+
+public void setCast(String str) {
+ setParam("cast", str);
+}
+
+public void setMetaData(String value) {
+ String key;
+ String className = method.getDeclaringClass().getSimpleName();
+ if (method.isNativeUnique()) {
+ key = className + "_" + method.getName () + "_" + parameter;
+ } else {
+ key = className + "_" + JNIGenerator.getFunctionName(method) + "_" + parameter;
+ }
+ method.declaringClass.metaData.setMetaData(key, value);
+}
+}

Back to the top