diff options
author | Silenio Quarti <silenio> | 2004-09-19 06:27:37 +0000 |
---|---|---|
committer | Silenio Quarti <silenio> | 2004-09-19 06:27:37 +0000 |
commit | f955e9d3ee848fdb0a2c26c32c868c77a7de4f5f (patch) | |
tree | c5cbc6292a28af6aa2a3f58bf2eff3436415412f /bundles | |
parent | df32f0bbf32bbc959da4a84a014feb6b7bbdb415 (diff) | |
download | eclipse.platform.swt-f955e9d3ee848fdb0a2c26c32c868c77a7de4f5f.tar.gz eclipse.platform.swt-f955e9d3ee848fdb0a2c26c32c868c77a7de4f5f.tar.xz eclipse.platform.swt-f955e9d3ee848fdb0a2c26c32c868c77a7de4f5f.zip |
*** empty log message ***
Diffstat (limited to 'bundles')
7 files changed, 165 insertions, 74 deletions
diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGenerator.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGenerator.java index 93412614d8..caef2a286c 100644 --- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGenerator.java +++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGenerator.java @@ -18,6 +18,7 @@ import org.eclipse.swt.SWT; public abstract class JNIGenerator { +Class mainClass; Class[] classes; MetaData metaData; boolean isCPP; @@ -253,10 +254,16 @@ static String toC(String str) { public abstract void generate(Class clazz); +public void generateCopyright() { +} + +public void generateIncludes() { +} + public void generate() { if (classes == null) return; - generateMetaData(getCopyrightKey()); - generateMetaData(getIncludesKey()); + generateCopyright(); + generateIncludes(); sort(classes); for (int i = 0; i < classes.length; i++) { Class clazz = classes[i]; @@ -284,19 +291,11 @@ public Class[] getClasses() { return classes; } -protected String getCopyrightKey() { - return "swt_copyright"; -} - protected boolean getGenerate(Class clazz) { ClassData data = getMetaData().getMetaData(clazz); return !data.getFlag("no_gen"); } -protected String getIncludesKey() { - return "swt_includes"; -} - public boolean getCPP() { return isCPP; } @@ -305,10 +304,26 @@ public String getDelimiter() { return delimiter; } +public String getExtension() { + return getCPP() ? ".cpp" : ".c"; +} + +public String getFileName() { + return getClassName(getMainClass()).toLowerCase(); +} + public PrintStream getOutput() { return output; } +public String getOutputName() { + return getFileName() + getSuffix() + getExtension(); +} + +public Class getMainClass() { + return mainClass; +} + public MetaData getMetaData() { return metaData; } @@ -321,6 +336,10 @@ public ProgressMonitor getProgressMonitor() { return progress; } +public String getSuffix() { + return ""; +} + public void output(String str) { output.print(str); } @@ -342,6 +361,10 @@ public void setDelimiter(String delimiter) { this.delimiter = delimiter; } +public void setMainClass(Class mainClass) { + this.mainClass = mainClass; +} + public void setMetaData(MetaData data) { metaData = data; } diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorApp.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorApp.java index 6408000fcb..2c24934929 100644 --- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorApp.java +++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorApp.java @@ -22,8 +22,9 @@ import org.eclipse.swt.SWT; public class JNIGeneratorApp { + Class mainClass; ProgressMonitor progress; - String mainClass, outputDir, classpath; + String mainClassName, outputDir, classpath; MetaData metaData; public JNIGeneratorApp() { @@ -33,10 +34,14 @@ public String getClasspath() { return classpath; } -public String getMainClass() { +public Class getMainClass() { return mainClass; } +public String getMainClassName() { + return mainClassName; +} + public MetaData getMetaData() { return metaData; } @@ -51,12 +56,8 @@ public String getOutputDir() { void generateSTATS_C(Class[] classes) { try { - String outputName = getClassName(mainClass).toLowerCase(); - String inc = - "#include \"swt.h\"\n" + - "#include \"" + outputName + "_stats.h\"\n"; - metaData.setMetaData("swt_includes", inc); StatsGenerator gen = new StatsGenerator(false); + gen.setMainClass(mainClass); gen.setClasses(classes); gen.setMetaData(metaData); gen.setProgressMonitor(progress); @@ -65,8 +66,7 @@ void generateSTATS_C(Class[] classes) { gen.setOutput(print); gen.generate(); print.flush(); - String extension = gen.getCPP() ? ".cpp" : ".c"; - if (out.size() > 0) output(out.toByteArray(), outputDir + outputName + "_stats" + extension); + if (out.size() > 0) output(out.toByteArray(), outputDir + gen.getOutputName()); } catch (Exception e) { System.out.println("Problem"); e.printStackTrace(System.out); @@ -75,9 +75,8 @@ void generateSTATS_C(Class[] classes) { void generateSTATS_H(Class[] classes) { try { - String outputName = getClassName(mainClass).toLowerCase(); - metaData.setMetaData("swt_includes", ""); StatsGenerator gen = new StatsGenerator(true); + gen.setMainClass(mainClass); gen.setClasses(classes); gen.setMetaData(metaData); gen.setProgressMonitor(progress); @@ -86,7 +85,7 @@ void generateSTATS_H(Class[] classes) { gen.setOutput(print); gen.generate(); print.flush(); - if (out.size() > 0) output(out.toByteArray(), outputDir + outputName + "_stats.h"); + if (out.size() > 0) output(out.toByteArray(), outputDir + gen.getOutputName()); } catch (Exception e) { System.out.println("Problem"); e.printStackTrace(System.out); @@ -95,9 +94,8 @@ void generateSTATS_H(Class[] classes) { void generateSTRUCTS_H(Class[] classes) { try { - String outputName = getClassName(mainClass).toLowerCase(); - metaData.setMetaData("swt_includes", "#include \"" + outputName + ".h\"\n"); StructsGenerator gen = new StructsGenerator(true); + gen.setMainClass(mainClass); gen.setClasses(classes); gen.setMetaData(metaData); gen.setProgressMonitor(progress); @@ -106,7 +104,7 @@ void generateSTRUCTS_H(Class[] classes) { gen.setOutput(print); gen.generate(); print.flush(); - if (out.size() > 0) output(out.toByteArray(), outputDir + outputName + "_structs.h"); + if (out.size() > 0) output(out.toByteArray(), outputDir + gen.getOutputName()); } catch (Exception e) { System.out.println("Problem"); e.printStackTrace(System.out); @@ -116,12 +114,8 @@ void generateSTRUCTS_H(Class[] classes) { void generateSTRUCTS_C(Class[] classes) { try { - String outputName = getClassName(mainClass).toLowerCase(); - String inc = - "#include \"swt.h\"\n" + - "#include \"" + outputName + "_structs.h\"\n"; - metaData.setMetaData("swt_includes", inc); StructsGenerator gen = new StructsGenerator(false); + gen.setMainClass(mainClass); gen.setClasses(classes); gen.setMetaData(metaData); gen.setProgressMonitor(progress); @@ -130,8 +124,7 @@ void generateSTRUCTS_C(Class[] classes) { gen.setOutput(print); gen.generate(); print.flush(); - String extension = gen.getCPP() ? ".cpp" : ".c"; - if (out.size() > 0) output(out.toByteArray(), outputDir + outputName + "_structs" + extension); + if (out.size() > 0) output(out.toByteArray(), outputDir + gen.getOutputName()); } catch (Exception e) { System.out.println("Problem"); e.printStackTrace(System.out); @@ -141,13 +134,8 @@ void generateSTRUCTS_C(Class[] classes) { void generateSWT_C(Class[] classes) { try { - String outputName = getClassName(mainClass).toLowerCase(); - String inc = - "#include \"swt.h\"\n" + - "#include \"" + outputName + "_structs.h\"\n" + - "#include \"" + outputName + "_stats.h\"\n"; - metaData.setMetaData("swt_includes", inc); NativesGenerator gen = new NativesGenerator(); + gen.setMainClass(mainClass); gen.setClasses(classes); gen.setMetaData(metaData); gen.setProgressMonitor(progress); @@ -156,8 +144,7 @@ void generateSWT_C(Class[] classes) { gen.setOutput(print); gen.generate(); print.flush(); - String extension = gen.getCPP() ? ".cpp" : ".c"; - if (out.size() > 0) output(out.toByteArray(), outputDir + outputName + extension); + if (out.size() > 0) output(out.toByteArray(), outputDir + gen.getOutputName()); } catch (Exception e) { System.out.println("Problem"); e.printStackTrace(System.out); @@ -167,8 +154,8 @@ void generateSWT_C(Class[] classes) { void generateAllMetaData() { try { - metaData.setMetaData("swt_includes", ""); MetaDataGenerator gen = new MetaDataGenerator(); + gen.setMainClass(mainClass); gen.setClasses(getClasses()); gen.setMetaData(metaData); gen.setProgressMonitor(progress); @@ -181,7 +168,7 @@ void generateAllMetaData() { System.out.println("Warning: Meta data output dir does not exist"); return; } - if (out.size() > 0) output(out.toByteArray(), getMetaDataDir() + mainClass + ".properties"); + if (out.size() > 0) output(out.toByteArray(), getMetaDataDir() + gen.getOutputName()); } catch (Exception e) { System.out.println("Problem"); e.printStackTrace(System.out); @@ -193,7 +180,7 @@ public void generate() { } public void generate(ProgressMonitor progress) { - if (mainClass == null) return; + if (mainClassName == null) return; if (progress != null) progress.setMessage("Initializing..."); Class[] natives = getNativesClasses(); Class[] structs = getStructureClasses(); @@ -252,16 +239,10 @@ void output(byte[] bytes, String fileName) throws IOException { out.close(); } -String getClassName(String className) { - int dot = mainClass.lastIndexOf('.'); - if (dot == -1) return className; - return mainClass.substring(dot + 1); -} - String getPackageName(String className) { - int dot = mainClass.lastIndexOf('.'); + int dot = mainClassName.lastIndexOf('.'); if (dot == -1) return ""; - return mainClass.substring(0, dot); + return mainClassName.substring(0, dot); } String[] getClassNames(String mainClassName) { @@ -321,10 +302,10 @@ String[] getClassNames(String mainClassName) { } public Class[] getClasses() { - if (mainClass == null) return new Class[0]; - String[] classNames = getClassNames(mainClass); + if (mainClassName == null) return new Class[0]; + String[] classNames = getClassNames(mainClassName); Arrays.sort(classNames); - String packageName = getPackageName(mainClass); + String packageName = getPackageName(mainClassName); Class[] classes = new Class[classNames.length]; for (int i = 0; i < classNames.length; i++) { String className = classNames[i]; @@ -338,7 +319,7 @@ public Class[] getClasses() { } public Class[] getNativesClasses() { - if (mainClass == null) return new Class[0]; + if (mainClassName == null) return new Class[0]; ArrayList result = new ArrayList(); Class[] classes = getClasses(); for (int i = 0; i < classes.length; i++) { @@ -357,7 +338,7 @@ public Class[] getNativesClasses() { } public Class[] getStructureClasses() { - if (mainClass == null) return new Class[0]; + if (mainClassName == null) return new Class[0]; ArrayList result = new ArrayList(); Class[] classes = getClasses(); outer: @@ -388,12 +369,12 @@ public Class[] getStructureClasses() { MetaData loadMetaData() { int index = 0; Properties propeties = new Properties(); - int length = mainClass.length(); + int length = mainClassName.length(); while (index < length) { - index = mainClass.indexOf('.', index); + index = mainClassName.indexOf('.', index); if (index == -1) index = length; try { - InputStream is = getClass().getResourceAsStream(mainClass.substring(0, index) + ".properties"); + InputStream is = getClass().getResourceAsStream(mainClassName.substring(0, index) + ".properties"); propeties.load(is); is.close(); } catch (Exception e) { @@ -407,18 +388,25 @@ public void setClasspath(String classpath) { this.classpath = classpath; } -public void setMainClass(String str) { - mainClass = str; +public void setMainClassName(String str) { + mainClassName = str; metaData = loadMetaData(); String mainClasses = getMetaData().getMetaData("swt_main_classes", null); if (mainClasses != null) { String[] list = ItemData.split(mainClasses, ","); for (int i = 0; i < list.length; i += 2) { - if (mainClass.equals(list[i].trim())) { + if (mainClassName.equals(list[i].trim())) { setOutputDir(list[i + 1].trim()); } } } + if (mainClassName != null) { + try { + mainClass = Class.forName(mainClassName, false, getClass().getClassLoader()); + } catch (Exception e) { + e.printStackTrace(); + } + } } public void setOutputDir(String str) { @@ -441,11 +429,11 @@ public static String getDefaultPlatform() { public static void main(String[] args) { JNIGeneratorApp gen = new JNIGeneratorApp (); if (args.length > 0) { - gen.setMainClass(args[0]); + gen.setMainClassName(args[0]); if (args.length > 1) gen.setOutputDir(args[1]); if (args.length > 2) gen.setClasspath(args[2]); } else { - gen.setMainClass(getDefaultMainClass()); + gen.setMainClassName(getDefaultMainClass()); } gen.generate(); } diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorAppUI.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorAppUI.java index 20a760a777..b179641a4b 100644 --- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorAppUI.java +++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/JNIGeneratorAppUI.java @@ -97,6 +97,7 @@ void cleanup() { void generateStructsHeader () { StructsGenerator gen = new StructsGenerator(true); + gen.setMainClass(app.getMainClass()); gen.setMetaData(app.getMetaData()); gen.setClasses(getSelectedClasses()); gen.generate(); @@ -104,6 +105,7 @@ void generateStructsHeader () { void generateStructs () { StructsGenerator gen = new StructsGenerator(false); + gen.setMainClass(app.getMainClass()); gen.setMetaData(app.getMetaData()); gen.setClasses(getSelectedClasses()); gen.generate(); @@ -111,6 +113,7 @@ void generateStructs () { void generateSizeof () { SizeofGenerator gen = new SizeofGenerator(); + gen.setMainClass(app.getMainClass()); gen.setMetaData(app.getMetaData()); gen.setClasses(getSelectedClasses()); gen.generate(); @@ -118,6 +121,7 @@ void generateSizeof () { void generateMetaData () { MetaDataGenerator gen = new MetaDataGenerator(); + gen.setMainClass(app.getMainClass()); gen.setMetaData(app.getMetaData()); Method[] methods = getSelectedMethods(); if (methods.length != 0) { @@ -130,6 +134,7 @@ void generateMetaData () { void generateNatives () { NativesGenerator gen = new NativesGenerator(); + gen.setMainClass(app.getMainClass()); gen.setMetaData(app.getMetaData()); Method[] methods = getSelectedMethods(); if (methods.length != 0) { @@ -204,6 +209,7 @@ void generateAll() { void generateConstants () { ConstantsGenerator gen = new ConstantsGenerator(); + gen.setMainClass(app.getMainClass()); gen.setMetaData(app.getMetaData()); Field[] fields = getSelectedFields(); if (fields.length != 0) { @@ -316,7 +322,7 @@ void createMainClassPanel(Composite panel, Listener updateListener) { GridData data; mainClassCb = new Combo(panel, SWT.DROP_DOWN); - String mainClass = app.getMainClass(); + String mainClass = app.getMainClassName(); mainClassCb.setText(mainClass == null ? "" : mainClass); data = new GridData(GridData.FILL_HORIZONTAL); mainClassCb.setLayoutData(data); @@ -901,9 +907,9 @@ public void run() { } String getPackageString(String className) { - int dot = app.getMainClass().lastIndexOf('.'); + int dot = app.getMainClassName().lastIndexOf('.'); if (dot == -1) return ""; - return app.getMainClass().substring(0, dot); + return app.getMainClassName().substring(0, dot); } String getClassString(Class clazz) { @@ -1142,8 +1148,8 @@ boolean updateOutputDir() { void updateMainClass() { String mainClassStr = mainClassCb.getText(); if (mainClassStr.length() > 0) { - if (!mainClassStr.equals(app.getMainClass())) { - app.setMainClass(mainClassStr); + if (!mainClassStr.equals(app.getMainClassName())) { + app.setMainClassName(mainClassStr); } if (mainClassCb.indexOf(mainClassStr) == -1) { mainClassCb.add(mainClassStr); @@ -1158,10 +1164,10 @@ void updateMainClass() { public static void main(String[] args) { JNIGeneratorApp gen = new JNIGeneratorApp (); if (args.length > 0) { - gen.setMainClass(args[0]); + gen.setMainClassName(args[0]); if (args.length > 1) gen.setOutputDir(args[1]); } else { - gen.setMainClass(JNIGeneratorApp.getDefaultMainClass()); + gen.setMainClassName(JNIGeneratorApp.getDefaultMainClass()); } JNIGeneratorAppUI ui = new JNIGeneratorAppUI(gen); ui.open(); diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/MetaDataGenerator.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/MetaDataGenerator.java index 01ffdac9dd..cad9331b1e 100644 --- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/MetaDataGenerator.java +++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/MetaDataGenerator.java @@ -14,6 +14,10 @@ import java.lang.reflect.*; public class MetaDataGenerator extends JNIGenerator { +public void generateCopyright() { + generateMetaData("swt_properties_copyright"); +} + public void generate(Class clazz) { output(toC(clazz.getName())); output("="); @@ -86,8 +90,12 @@ public void generate(Method method) { } } -protected String getCopyrightKey() { - return "swt_properties_copyright"; +public String getExtension() { + return ".properties"; +} + +public String getFileName() { + return getMainClass().getName(); } protected boolean getGenerate(Class clazz) { 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 56931f4e46..12e198235d 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 @@ -22,6 +22,22 @@ public NativesGenerator() { enterExitMacro = true; } +public void generateCopyright() { + generateMetaData("swt_copyright"); +} + +public void generateIncludes() { + String className = getClassName(getMainClass()).toLowerCase(); + outputln("#include \"swt.h\""); + output("#include \""); + output(className); + outputln("_structs.h\""); + output("#include \""); + output(className); + outputln("_stats.h\""); + outputln(); +} + public void generate(Class clazz, String methodName) { Method[] methods = clazz.getDeclaredMethods(); int count = 0; diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StatsGenerator.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StatsGenerator.java index 1a336cf93f..39b9dc4d78 100644 --- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StatsGenerator.java +++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StatsGenerator.java @@ -20,6 +20,21 @@ public StatsGenerator(boolean header) { this.header = header; } +public void generateCopyright() { + generateMetaData("swt_copyright"); +} + +public void generateIncludes() { + if (!header) { + String className = getClassName(getMainClass()).toLowerCase(); + outputln("#include \"swt.h\""); + output("#include \""); + output(className); + outputln("_stats.h\""); + outputln(); + } +} + public void generate(Class clazz) { if (header) { generateHeaderFile(clazz); @@ -28,6 +43,14 @@ public void generate(Class clazz) { } } +public String getExtension() { + return header ? ".h" : super.getExtension(); +} + +public String getSuffix() { + return "_stats"; +} + void generateHeaderFile(Class clazz){ generateNATIVEMacros(clazz); Method[] methods = clazz.getDeclaredMethods(); diff --git a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StructsGenerator.java b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StructsGenerator.java index 283a96d3e6..fa37440b41 100644 --- a/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StructsGenerator.java +++ b/bundles/org.eclipse.swt.tools/JNI Generation/org/eclipse/swt/tools/internal/StructsGenerator.java @@ -21,7 +21,26 @@ boolean header; public StructsGenerator(boolean header) { this.header = header; } - + +public void generateCopyright() { + generateMetaData("swt_copyright"); +} + +public void generateIncludes() { + String className = getClassName(getMainClass()).toLowerCase(); + if (header) { + output("#include \""); + output(className); + outputln(".h\""); + } else { + outputln("#include \"swt.h\""); + output("#include \""); + output(className); + outputln("_structs.h\""); + } + outputln(); +} + public void generate(Class clazz) { if (header) { generateHeaderFile(clazz); @@ -36,6 +55,14 @@ public void generate() { super.generate(); } +public String getExtension() { + return header ? ".h" : super.getExtension(); +} + +public String getSuffix() { + return "_structs"; +} + void generateExcludes(Class[] classes) { HashSet excludes = new HashSet(); for (int i = 0; i < classes.length; i++) { |