Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/LockGenerator.java')
-rw-r--r--bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/LockGenerator.java143
1 files changed, 0 insertions, 143 deletions
diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/LockGenerator.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/LockGenerator.java
deleted file mode 100644
index 12c1162f80..0000000000
--- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/LockGenerator.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.swt.tools.internal;
-
-import java.lang.reflect.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class LockGenerator extends CleanupClass {
-
-public LockGenerator() {
-}
-
-String getParams(Method method) {
- int n_args = method.getParameterTypes().length;
- if (n_args == 0) return "";
- String name = method.getName();
- String params = "";
- int index = 0;
- while (true) {
- index = classSource.indexOf(name, index + 1);
- if (!Character.isWhitespace(classSource.charAt(index - 1))) continue;
- if (index == -1) return null;
- int parantesesStart = classSource.indexOf("(", index);
- if (classSource.substring(index + name.length(), parantesesStart).trim().length() == 0) {
- int parantesesEnd = classSource.indexOf(")", parantesesStart);
- params = classSource.substring(parantesesStart + 1, parantesesEnd);
- break;
- }
- }
- return params;
-}
-
-String getReturn(Method method) {
- Class returnType = method.getReturnType();
- if (returnType != Integer.TYPE) return getTypeSignature3(returnType);
- String modifierStr = Modifier.toString(method.getModifiers());
- String name = method.getName();
- Pattern p = Pattern.compile(modifierStr + ".*" + name + ".*(.*)");
- Matcher m = p.matcher(classSource);
- if (m.find()) {
- String methodStr = classSource.substring(m.start(), m.end());
- int index = methodStr.indexOf("/*long*/");
- if (index != -1 && index < methodStr.indexOf(name)) {
- return getTypeSignature3(Integer.TYPE) + " /*long*/";
- }
- }
- return getTypeSignature3(Integer.TYPE);
-}
-
-public void generate(Class clazz) {
- super.generate(clazz);
- Method[] methods = clazz.getDeclaredMethods();
- generate(methods);
-}
-
-public void generate(Method[] methods) {
- sort(methods);
- for (int i = 0; i < methods.length; i++) {
- Method method = methods[i];
- if ((method.getModifiers() & Modifier.NATIVE) == 0) continue;
- generate(method);
- }
-}
-
-public void generate(Method method) {
- int modifiers = method.getModifiers();
- boolean lock = (modifiers & Modifier.SYNCHRONIZED) != 0;
- String returnStr = getReturn(method);
- String paramsStr = getParams(method);
- if (lock) {
- String modifiersStr = Modifier.toString(modifiers & ~Modifier.SYNCHRONIZED);
- output(modifiersStr);
- if (modifiersStr.length() > 0) output(" ");
- output(returnStr);
- output(" _");
- output(method.getName());
- output("(");
- output(paramsStr);
- outputln(");");
- }
- String modifiersStr = Modifier.toString(modifiers & ~(Modifier.SYNCHRONIZED | (lock ? Modifier.NATIVE : 0)));
- output(modifiersStr);
- if (modifiersStr.length() > 0) output(" ");
- output(returnStr);
- output(" ");
- output(method.getName());
- output("(");
- output(paramsStr);
- output(")");
- if (lock) {
- outputln(" {");
- outputln("\tlock.lock();");
- outputln("\ttry {");
- output("\t\t");
- if (method.getReturnType() != Void.TYPE) {
- output("return ");
- }
- output("_");
- output(method.getName());
- output("(");
- String[] paramNames = getArgNames(method);
- for (int i = 0; i < paramNames.length; i++) {
- if (i != 0) output(", ");
- output(paramNames[i]);
- }
- outputln(");");
- outputln("\t} finally {");
- outputln("\t\tlock.unlock();");
- outputln("\t}");
- outputln("}");
- } else {
- outputln(";");
- }
-}
-
-public static void main(String[] args) {
- if (args.length < 2) {
- System.out.println("Usage: java LockGenerator <OS className> <OS class source>");
- return;
- }
- try {
- LockGenerator gen = new LockGenerator();
- String clazzName = args[0];
- String classSource = args[1];
- Class clazz = Class.forName(clazzName);
- gen.setClassSourcePath(classSource);
- gen.generate(clazz);
- } catch (Exception e) {
- System.out.println("Problem");
- e.printStackTrace(System.out);
- }
-}
-
-}

Back to the top